TPTP Problem File: SLH0100^1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SLH0000^1 : TPTP v8.2.0. Released v8.2.0.
% Domain : Archive of Formal Proofs
% Problem :
% Version : Especial.
% English :
% Refs : [Des23] Desharnais (2023), Email to Geoff Sutcliffe
% Source : [Des23]
% Names : CRYSTALS-Kyber/0025_NTT_Scheme/prob_00745_029296__25806660_1 [Des23]
% Status : Theorem
% Rating : ? v8.2.0
% Syntax : Number of formulae : 1462 ( 717 unt; 184 typ; 0 def)
% Number of atoms : 2994 (1608 equ; 0 cnn)
% Maximal formula atoms : 7 ( 2 avg)
% Number of connectives : 11241 ( 201 ~; 72 |; 138 &;9799 @)
% ( 0 <=>;1031 =>; 0 <=; 0 <~>)
% Maximal formula depth : 27 ( 6 avg)
% Number of types : 23 ( 22 usr)
% Number of type conns : 539 ( 539 >; 0 *; 0 +; 0 <<)
% Number of symbols : 165 ( 162 usr; 32 con; 0-11 aty)
% Number of variables : 3418 ( 134 ^;3248 !; 36 ?;3418 :)
% SPC : TH0_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2023-01-19 12:41:52.866
%------------------------------------------------------------------------------
% Could-be-implicit typings (22)
thf(ty_n_t__List__Olist_It__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Finite____Field__Omod____ring_Itf__a_J_J_J,type,
list_P3622523039039653997ring_a: $tType ).
thf(ty_n_t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Finite____Field__Omod____ring_Itf__a_J_J,type,
produc4299165986903738727ring_a: $tType ).
thf(ty_n_t__List__Olist_It__Product____Type__Oprod_It__Nat__Onat_Mt__Finite____Field__Omod____ring_Itf__a_J_J_J,type,
list_P4624318757991090938ring_a: $tType ).
thf(ty_n_t__List__Olist_It__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Nat__Onat_J_J,type,
list_P6862295967933434708_a_nat: $tType ).
thf(ty_n_t__Polynomial__Opoly_It__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J_J,type,
poly_p2573953413498894561ring_a: $tType ).
thf(ty_n_t__Product____Type__Oprod_It__Nat__Onat_Mt__Finite____Field__Omod____ring_Itf__a_J_J,type,
produc5330513443964352234ring_a: $tType ).
thf(ty_n_t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Nat__Onat_J,type,
produc1260572071836910660_a_nat: $tType ).
thf(ty_n_t__List__Olist_It__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J_J,type,
list_P6011104703257516679at_nat: $tType ).
thf(ty_n_t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
poly_F3299452240248304339ring_a: $tType ).
thf(ty_n_t__Polynomial__Opoly_It__Polynomial__Opoly_It__Int__Oint_J_J,type,
poly_poly_int: $tType ).
thf(ty_n_t__List__Olist_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
list_F4626807571770296779ring_a: $tType ).
thf(ty_n_t__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J,type,
product_prod_nat_nat: $tType ).
thf(ty_n_t__Finite____Field__Omod____ring_Itf__a_J,type,
finite_mod_ring_a: $tType ).
thf(ty_n_t__Polynomial__Opoly_It__Nat__Onat_J,type,
poly_nat: $tType ).
thf(ty_n_t__Polynomial__Opoly_It__Int__Oint_J,type,
poly_int: $tType ).
thf(ty_n_t__List__Olist_It__Nat__Onat_J,type,
list_nat: $tType ).
thf(ty_n_t__List__Olist_It__Int__Oint_J,type,
list_int: $tType ).
thf(ty_n_t__Kyber____spec__Oqr_Itf__a_J,type,
kyber_qr_a: $tType ).
thf(ty_n_t__itself_Itf__k_J,type,
itself_k: $tType ).
thf(ty_n_t__itself_Itf__a_J,type,
itself_a: $tType ).
thf(ty_n_t__Nat__Onat,type,
nat: $tType ).
thf(ty_n_t__Int__Oint,type,
int: $tType ).
% Explicit typings (162)
thf(sy_c_Finite__Field_Oof__int__mod__ring_001tf__a,type,
finite8272632373135393572ring_a: int > finite_mod_ring_a ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Finite____Field__Omod____ring_Itf__a_J,type,
minus_3609261664126569004ring_a: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Int__Oint,type,
minus_minus_int: int > int > int ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Kyber____spec__Oqr_Itf__a_J,type,
minus_3375643675566563378r_qr_a: kyber_qr_a > kyber_qr_a > kyber_qr_a ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Nat__Onat,type,
minus_minus_nat: nat > nat > nat ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
minus_5354101470050066234ring_a: poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Polynomial__Opoly_It__Int__Oint_J,type,
minus_minus_poly_int: poly_int > poly_int > poly_int ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Polynomial__Opoly_It__Nat__Onat_J,type,
minus_minus_poly_nat: poly_nat > poly_nat > poly_nat ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Polynomial__Opoly_It__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J_J,type,
minus_8398332843867831112ring_a: poly_p2573953413498894561ring_a > poly_p2573953413498894561ring_a > poly_p2573953413498894561ring_a ).
thf(sy_c_Groups_Oone__class_Oone_001t__Finite____Field__Omod____ring_Itf__a_J,type,
one_on2109788427901206336ring_a: finite_mod_ring_a ).
thf(sy_c_Groups_Oone__class_Oone_001t__Int__Oint,type,
one_one_int: int ).
thf(sy_c_Groups_Oone__class_Oone_001t__Kyber____spec__Oqr_Itf__a_J,type,
one_one_Kyber_qr_a: kyber_qr_a ).
thf(sy_c_Groups_Oone__class_Oone_001t__Nat__Onat,type,
one_one_nat: nat ).
thf(sy_c_Groups_Oone__class_Oone_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
one_on3394844594818161742ring_a: poly_F3299452240248304339ring_a ).
thf(sy_c_Groups_Oone__class_Oone_001t__Polynomial__Opoly_It__Int__Oint_J,type,
one_one_poly_int: poly_int ).
thf(sy_c_Groups_Oone__class_Oone_001t__Polynomial__Opoly_It__Nat__Onat_J,type,
one_one_poly_nat: poly_nat ).
thf(sy_c_Groups_Oone__class_Oone_001t__Polynomial__Opoly_It__Polynomial__Opoly_It__Int__Oint_J_J,type,
one_on1166514126663969025ly_int: poly_poly_int ).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Finite____Field__Omod____ring_Itf__a_J,type,
plus_p6165643967897163644ring_a: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a ).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Int__Oint,type,
plus_plus_int: int > int > int ).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Nat__Onat,type,
plus_plus_nat: nat > nat > nat ).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
plus_p7290290253215468682ring_a: poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Polynomial__Opoly_It__Int__Oint_J,type,
plus_plus_poly_int: poly_int > poly_int > poly_int ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Finite____Field__Omod____ring_Itf__a_J,type,
times_5121417576591743744ring_a: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Int__Oint,type,
times_times_int: int > int > int ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Kyber____spec__Oqr_Itf__a_J,type,
times_2095635435063429214r_qr_a: kyber_qr_a > kyber_qr_a > kyber_qr_a ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Nat__Onat,type,
times_times_nat: nat > nat > nat ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
times_3242606764180207630ring_a: poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Polynomial__Opoly_It__Int__Oint_J,type,
times_times_poly_int: poly_int > poly_int > poly_int ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Polynomial__Opoly_It__Nat__Onat_J,type,
times_times_poly_nat: poly_nat > poly_nat > poly_nat ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Polynomial__Opoly_It__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J_J,type,
times_7678616233722469404ring_a: poly_p2573953413498894561ring_a > poly_p2573953413498894561ring_a > poly_p2573953413498894561ring_a ).
thf(sy_c_Groups_Otimes__class_Otimes_001t__Polynomial__Opoly_It__Polynomial__Opoly_It__Int__Oint_J_J,type,
times_4739760418287672641ly_int: poly_poly_int > poly_poly_int > poly_poly_int ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Finite____Field__Omod____ring_Itf__a_J,type,
zero_z7902377541816115708ring_a: finite_mod_ring_a ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Int__Oint,type,
zero_zero_int: int ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Kyber____spec__Oqr_Itf__a_J,type,
zero_zero_Kyber_qr_a: kyber_qr_a ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Nat__Onat,type,
zero_zero_nat: nat ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
zero_z1830546546923837194ring_a: poly_F3299452240248304339ring_a ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Polynomial__Opoly_It__Int__Oint_J,type,
zero_zero_poly_int: poly_int ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Polynomial__Opoly_It__Nat__Onat_J,type,
zero_zero_poly_nat: poly_nat ).
thf(sy_c_If_001t__Finite____Field__Omod____ring_Itf__a_J,type,
if_Finite_mod_ring_a: $o > finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a ).
thf(sy_c_If_001t__Nat__Onat,type,
if_nat: $o > nat > nat > nat ).
thf(sy_c_If_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
if_pol8205948207082003865ring_a: $o > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Int_Onat,type,
nat2: int > nat ).
thf(sy_c_Kyber__spec_Okyber__spec_001tf__a_001tf__k,type,
kyber_kyber_spec_a_k: itself_a > itself_k > int > int > nat > nat > $o ).
thf(sy_c_Kyber__spec_Oof__qr_001tf__a,type,
kyber_of_qr_a: kyber_qr_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Kyber__spec_Oqr__poly_001tf__a,type,
kyber_qr_poly_a: poly_F3299452240248304339ring_a ).
thf(sy_c_Kyber__spec_Oqr__spec__class_Odeg__qr_001tf__a,type,
kyber_5808863167042391122g_qr_a: itself_a > nat ).
thf(sy_c_Kyber__spec_Oqr__spec__class_Oqr__poly_H_001tf__a,type,
kyber_3393738716004708939poly_a: itself_a > poly_int ).
thf(sy_c_Kyber__spec_Oto__qr_001tf__a,type,
kyber_to_qr_a: poly_F3299452240248304339ring_a > kyber_qr_a ).
thf(sy_c_List_Olist_Omap_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
map_Fi7082711781076630404ring_a: ( finite_mod_ring_a > finite_mod_ring_a ) > list_F4626807571770296779ring_a > list_F4626807571770296779ring_a ).
thf(sy_c_List_Olist_Omap_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Nat__Onat,type,
map_Fi4188601705611449169_a_nat: ( finite_mod_ring_a > nat ) > list_F4626807571770296779ring_a > list_nat ).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001t__Finite____Field__Omod____ring_Itf__a_J,type,
map_na1928064127006292399ring_a: ( nat > finite_mod_ring_a ) > list_nat > list_F4626807571770296779ring_a ).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001t__Nat__Onat,type,
map_nat_nat: ( nat > nat ) > list_nat > list_nat ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Finite____Field__Omod____ring_Itf__a_J_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
map_Pr8707103244924889698ring_a: ( produc4299165986903738727ring_a > finite_mod_ring_a ) > list_P3622523039039653997ring_a > list_F4626807571770296779ring_a ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Finite____Field__Omod____ring_Itf__a_J_J_001t__Nat__Onat,type,
map_Pr3541440647737195251_a_nat: ( produc4299165986903738727ring_a > nat ) > list_P3622523039039653997ring_a > list_nat ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Nat__Onat_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
map_Pr7682932610255141947ring_a: ( produc1260572071836910660_a_nat > finite_mod_ring_a ) > list_P6862295967933434708_a_nat > list_F4626807571770296779ring_a ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Nat__Onat_J_001t__Nat__Onat,type,
map_Pr2064521203608163290at_nat: ( produc1260572071836910660_a_nat > nat ) > list_P6862295967933434708_a_nat > list_nat ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Nat__Onat_Mt__Finite____Field__Omod____ring_Itf__a_J_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
map_Pr6677102360513991957ring_a: ( produc5330513443964352234ring_a > finite_mod_ring_a ) > list_P4624318757991090938ring_a > list_F4626807571770296779ring_a ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Nat__Onat_Mt__Finite____Field__Omod____ring_Itf__a_J_J_001t__Nat__Onat,type,
map_Pr626941434692923008_a_nat: ( produc5330513443964352234ring_a > nat ) > list_P4624318757991090938ring_a > list_nat ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
map_Pr4768433397210869704ring_a: ( product_prod_nat_nat > finite_mod_ring_a ) > list_P6011104703257516679at_nat > list_F4626807571770296779ring_a ).
thf(sy_c_List_Olist_Omap_001t__Product____Type__Oprod_It__Nat__Onat_Mt__Nat__Onat_J_001t__Nat__Onat,type,
map_Pr3938374229010428429at_nat: ( product_prod_nat_nat > nat ) > list_P6011104703257516679at_nat > list_nat ).
thf(sy_c_List_Onth_001t__Finite____Field__Omod____ring_Itf__a_J,type,
nth_Fi694352073394265932ring_a: list_F4626807571770296779ring_a > nat > finite_mod_ring_a ).
thf(sy_c_List_Onth_001t__Nat__Onat,type,
nth_nat: list_nat > nat > nat ).
thf(sy_c_List_Onth_001t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Finite____Field__Omod____ring_Itf__a_J_J,type,
nth_Pr6403360895060014830ring_a: list_P3622523039039653997ring_a > nat > produc4299165986903738727ring_a ).
thf(sy_c_List_Oupt,type,
upt: nat > nat > list_nat ).
thf(sy_c_List_Ozip_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
zip_Fi507625284836285431ring_a: list_F4626807571770296779ring_a > list_F4626807571770296779ring_a > list_P3622523039039653997ring_a ).
thf(sy_c_List_Ozip_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Nat__Onat,type,
zip_Fi8796496336565543198_a_nat: list_F4626807571770296779ring_a > list_nat > list_P6862295967933434708_a_nat ).
thf(sy_c_List_Ozip_001t__Nat__Onat_001t__Finite____Field__Omod____ring_Itf__a_J,type,
zip_na6535958757960386428ring_a: list_nat > list_F4626807571770296779ring_a > list_P4624318757991090938ring_a ).
thf(sy_c_List_Ozip_001t__Nat__Onat_001t__Nat__Onat,type,
zip_nat_nat: list_nat > list_nat > list_P6011104703257516679at_nat ).
thf(sy_c_Missing__Polynomial_Oleading__coeff_001t__Finite____Field__Omod____ring_Itf__a_J,type,
missin871596229213354819ring_a: poly_F3299452240248304339ring_a > finite_mod_ring_a ).
thf(sy_c_More__List_Onth__default_001t__Finite____Field__Omod____ring_Itf__a_J,type,
more_n3412881383938893606ring_a: finite_mod_ring_a > list_F4626807571770296779ring_a > nat > finite_mod_ring_a ).
thf(sy_c_More__List_Onth__default_001t__Int__Oint,type,
more_nth_default_int: int > list_int > nat > int ).
thf(sy_c_More__List_Onth__default_001t__Nat__Onat,type,
more_nth_default_nat: nat > list_nat > nat > nat ).
thf(sy_c_More__List_Onth__default_001t__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Finite____Field__Omod____ring_Itf__a_J_J,type,
more_n6296993454976805576ring_a: produc4299165986903738727ring_a > list_P3622523039039653997ring_a > nat > produc4299165986903738727ring_a ).
thf(sy_c_NTT_Ontt_001tf__a,type,
ntt_a: nat > nat > nat > finite_mod_ring_a > finite_mod_ring_a > $o ).
thf(sy_c_NTT_Ontt_OINTT_001tf__a,type,
iNTT_a: nat > finite_mod_ring_a > list_F4626807571770296779ring_a > list_F4626807571770296779ring_a ).
thf(sy_c_NTT_Ontt_ONTT_001tf__a,type,
nTT_a: nat > finite_mod_ring_a > list_F4626807571770296779ring_a > list_F4626807571770296779ring_a ).
thf(sy_c_NTT_Ontt_Ointt_001tf__a,type,
intt_a: nat > finite_mod_ring_a > list_F4626807571770296779ring_a > nat > finite_mod_ring_a ).
thf(sy_c_NTT_Ontt_Ontt_001tf__a,type,
ntt_a2: nat > finite_mod_ring_a > list_F4626807571770296779ring_a > nat > finite_mod_ring_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_001tf__a_001tf__a,type,
nTT_kyber_ntt_a_a: itself_a > nat > int > nat > nat > finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a > int > $o ).
thf(sy_c_NTT__Scheme_Okyber__ntt_001tf__k_001tf__a,type,
nTT_kyber_ntt_k_a: itself_k > nat > int > nat > nat > finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a > int > $o ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Odrop__deg_001t__Finite____Field__Omod____ring_Itf__a_J,type,
nTT_ky790528430515779601ring_a: nat > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Oinv__ntt__coeff__poly_001tf__a,type,
nTT_ky2203666903544645369poly_a: nat > finite_mod_ring_a > finite_mod_ring_a > kyber_qr_a > nat > finite_mod_ring_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Oinv__ntt__coeffs_001tf__a,type,
nTT_ky1736412282533154370effs_a: nat > finite_mod_ring_a > finite_mod_ring_a > kyber_qr_a > list_F4626807571770296779ring_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Oinv__ntt__poly_001tf__a,type,
nTT_ky6043299476614432208poly_a: nat > finite_mod_ring_a > finite_mod_ring_a > kyber_qr_a > kyber_qr_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Omap2__poly_001tf__a,type,
nTT_ky7627831880102416151poly_a: nat > ( finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a ) > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Onegacycl__conv_001tf__a,type,
nTT_ky7844408764402957685conv_a: nat > kyber_qr_a > kyber_qr_a > kyber_qr_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Ontt__coeff__poly_001tf__a,type,
nTT_ky9125537182568181474poly_a: nat > finite_mod_ring_a > kyber_qr_a > nat > finite_mod_ring_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Ontt__coeffs_001tf__a,type,
nTT_ky9081197955043955481effs_a: nat > finite_mod_ring_a > kyber_qr_a > list_F4626807571770296779ring_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Ontt__poly_001tf__a,type,
nTT_kyber_ntt_poly_a: nat > finite_mod_ring_a > kyber_qr_a > kyber_qr_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Oqr__mult__coeffs_001tf__a,type,
nTT_ky8916091867655869166effs_a: nat > kyber_qr_a > kyber_qr_a > kyber_qr_a ).
thf(sy_c_NTT__Scheme_Okyber__ntt_Otake__deg_001t__Finite____Field__Omod____ring_Itf__a_J,type,
nTT_ky3493641264504450921ring_a: nat > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat_001t__Finite____Field__Omod____ring_Itf__a_J,type,
semiri9180929696517417892ring_a: nat > finite_mod_ring_a ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat_001t__Int__Oint,type,
semiri1314217659103216013at_int: nat > int ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat_001t__Kyber____spec__Oqr_Itf__a_J,type,
semiri7313030098341262522r_qr_a: nat > kyber_qr_a ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat_001t__Nat__Onat,type,
semiri1316708129612266289at_nat: nat > nat ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
semiri8000969770135892146ring_a: nat > poly_F3299452240248304339ring_a ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat_001t__Polynomial__Opoly_It__Int__Oint_J,type,
semiri6323754628967941525ly_int: nat > poly_int ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat_001t__Polynomial__Opoly_It__Nat__Onat_J,type,
semiri1278233611622362425ly_nat: nat > poly_nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
size_s7115545719440041015ring_a: list_F4626807571770296779ring_a > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__Nat__Onat_J,type,
size_size_list_nat: list_nat > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__Product____Type__Oprod_It__Finite____Field__Omod____ring_Itf__a_J_Mt__Finite____Field__Omod____ring_Itf__a_J_J_J,type,
size_s681732177277979353ring_a: list_P3622523039039653997ring_a > nat ).
thf(sy_c_Orderings_Oord__class_Oless_001t__Int__Oint,type,
ord_less_int: int > int > $o ).
thf(sy_c_Orderings_Oord__class_Oless_001t__Nat__Onat,type,
ord_less_nat: nat > nat > $o ).
thf(sy_c_Orderings_Oord__class_Oless_001t__Polynomial__Opoly_It__Int__Oint_J,type,
ord_less_poly_int: poly_int > poly_int > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Int__Oint,type,
ord_less_eq_int: int > int > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Nat__Onat,type,
ord_less_eq_nat: nat > nat > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Polynomial__Opoly_It__Int__Oint_J,type,
ord_less_eq_poly_int: poly_int > poly_int > $o ).
thf(sy_c_Polynomial_OPoly_001t__Finite____Field__Omod____ring_Itf__a_J,type,
poly_F5739129160929385880ring_a: list_F4626807571770296779ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Polynomial_OPoly_001t__Int__Oint,type,
poly_int2: list_int > poly_int ).
thf(sy_c_Polynomial_OPoly_001t__Nat__Onat,type,
poly_nat2: list_nat > poly_nat ).
thf(sy_c_Polynomial_Odegree_001t__Finite____Field__Omod____ring_Itf__a_J,type,
degree4881254707062955960ring_a: poly_F3299452240248304339ring_a > nat ).
thf(sy_c_Polynomial_Odegree_001t__Int__Oint,type,
degree_int: poly_int > nat ).
thf(sy_c_Polynomial_Odegree_001t__Nat__Onat,type,
degree_nat: poly_nat > nat ).
thf(sy_c_Polynomial_Odegree_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
degree617341119394917574ring_a: poly_p2573953413498894561ring_a > nat ).
thf(sy_c_Polynomial_Odegree_001t__Polynomial__Opoly_It__Int__Oint_J,type,
degree_poly_int: poly_poly_int > nat ).
thf(sy_c_Polynomial_Omonom_001t__Finite____Field__Omod____ring_Itf__a_J,type,
monom_8879022055327937434ring_a: finite_mod_ring_a > nat > poly_F3299452240248304339ring_a ).
thf(sy_c_Polynomial_Omonom_001t__Int__Oint,type,
monom_int: int > nat > poly_int ).
thf(sy_c_Polynomial_Opoly_Ocoeff_001t__Finite____Field__Omod____ring_Itf__a_J,type,
coeff_1607515655354303335ring_a: poly_F3299452240248304339ring_a > nat > finite_mod_ring_a ).
thf(sy_c_Polynomial_Opoly_Ocoeff_001t__Int__Oint,type,
coeff_int: poly_int > nat > int ).
thf(sy_c_Polynomial_Opoly_Ocoeff_001t__Nat__Onat,type,
coeff_nat: poly_nat > nat > nat ).
thf(sy_c_Polynomial_Opoly_Ocoeff_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
coeff_7919988552178873973ring_a: poly_p2573953413498894561ring_a > nat > poly_F3299452240248304339ring_a ).
thf(sy_c_Polynomial_Opoly_Ocoeff_001t__Polynomial__Opoly_It__Int__Oint_J,type,
coeff_poly_int: poly_poly_int > nat > poly_int ).
thf(sy_c_Polynomial_Opoly__cutoff_001t__Finite____Field__Omod____ring_Itf__a_J,type,
poly_c8149583573515411563ring_a: nat > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_c_Polynomial_Opoly__cutoff_001t__Int__Oint,type,
poly_cutoff_int: nat > poly_int > poly_int ).
thf(sy_c_Polynomial_Opoly__cutoff_001t__Nat__Onat,type,
poly_cutoff_nat: nat > poly_nat > poly_nat ).
thf(sy_c_Power_Opower__class_Opower_001t__Finite____Field__Omod____ring_Itf__a_J,type,
power_6826135765519566523ring_a: finite_mod_ring_a > nat > finite_mod_ring_a ).
thf(sy_c_Power_Opower__class_Opower_001t__Int__Oint,type,
power_power_int: int > nat > int ).
thf(sy_c_Power_Opower__class_Opower_001t__Kyber____spec__Oqr_Itf__a_J,type,
power_5122640293590465123r_qr_a: kyber_qr_a > nat > kyber_qr_a ).
thf(sy_c_Power_Opower__class_Opower_001t__Nat__Onat,type,
power_power_nat: nat > nat > nat ).
thf(sy_c_Power_Opower__class_Opower_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
power_6500929916544582089ring_a: poly_F3299452240248304339ring_a > nat > poly_F3299452240248304339ring_a ).
thf(sy_c_Power_Opower__class_Opower_001t__Polynomial__Opoly_It__Int__Oint_J,type,
power_power_poly_int: poly_int > nat > poly_int ).
thf(sy_c_Power_Opower__class_Opower_001t__Polynomial__Opoly_It__Nat__Onat_J,type,
power_power_poly_nat: poly_nat > nat > poly_nat ).
thf(sy_c_Power_Opower__class_Opower_001t__Polynomial__Opoly_It__Polynomial__Opoly_It__Int__Oint_J_J,type,
power_7364042453852871110ly_int: poly_poly_int > nat > poly_poly_int ).
thf(sy_c_Preliminary__Lemmas_Opreliminary_001tf__a,type,
prelim7757304714281691100nary_a: itself_a > nat > nat > nat > $o ).
thf(sy_c_Preliminary__Lemmas_Opreliminary_Omu_001tf__a,type,
preliminary_mu_a: nat > finite_mod_ring_a ).
thf(sy_c_Preliminary__Lemmas_Opreliminary_Oomega_001tf__a,type,
preliminary_omega_a: nat > finite_mod_ring_a ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
produc9073652980779707865ring_a: ( finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a ) > produc4299165986903738727ring_a > finite_mod_ring_a ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Nat__Onat,type,
produc1310295081252686012_a_nat: ( finite_mod_ring_a > finite_mod_ring_a > nat ) > produc4299165986903738727ring_a > nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Nat__Onat_001t__Finite____Field__Omod____ring_Itf__a_J,type,
produc8273129539502305050ring_a: ( finite_mod_ring_a > nat > finite_mod_ring_a ) > produc1260572071836910660_a_nat > finite_mod_ring_a ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Nat__Onat_001t__Nat__Onat,type,
produc3909451581377953851at_nat: ( finite_mod_ring_a > nat > nat ) > produc1260572071836910660_a_nat > nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Nat__Onat_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Finite____Field__Omod____ring_Itf__a_J,type,
produc6819528916691020348ring_a: ( nat > finite_mod_ring_a > finite_mod_ring_a ) > produc5330513443964352234ring_a > finite_mod_ring_a ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Nat__Onat_001t__Finite____Field__Omod____ring_Itf__a_J_001t__Nat__Onat,type,
produc9149975641485487769_a_nat: ( nat > finite_mod_ring_a > nat ) > produc5330513443964352234ring_a > nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Nat__Onat_001t__Nat__Onat_001t__Finite____Field__Omod____ring_Itf__a_J,type,
produc6889438062880330999ring_a: ( nat > nat > finite_mod_ring_a ) > product_prod_nat_nat > finite_mod_ring_a ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Nat__Onat_001t__Nat__Onat_001t__Nat__Onat,type,
produc6842872674320459806at_nat: ( nat > nat > nat ) > product_prod_nat_nat > nat ).
thf(sy_c_Pure_Otype_001tf__a,type,
type_a: itself_a ).
thf(sy_c_Pure_Otype_001tf__k,type,
type_k: itself_k ).
thf(sy_c_Rings_Omodulo__class_Omodulo_001t__Finite____Field__Omod____ring_Itf__a_J,type,
modulo8308552932176287283ring_a: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a ).
thf(sy_c_Rings_Omodulo__class_Omodulo_001t__Int__Oint,type,
modulo_modulo_int: int > int > int ).
thf(sy_c_Rings_Omodulo__class_Omodulo_001t__Nat__Onat,type,
modulo_modulo_nat: nat > nat > nat ).
thf(sy_c_Rings_Omodulo__class_Omodulo_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J,type,
modulo2591651872109920577ring_a: poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a > poly_F3299452240248304339ring_a ).
thf(sy_v__092_060mu_062,type,
mu: finite_mod_ring_a ).
thf(sy_v__092_060omega_062,type,
omega: finite_mod_ring_a ).
thf(sy_v__092_060psi_062,type,
psi: finite_mod_ring_a ).
thf(sy_v__092_060psi_062inv,type,
psi_inv: finite_mod_ring_a ).
thf(sy_v_f,type,
f: kyber_qr_a ).
thf(sy_v_g,type,
g: kyber_qr_a ).
thf(sy_v_k,type,
k: nat ).
thf(sy_v_mult__factor,type,
mult_factor: int ).
thf(sy_v_n,type,
n: nat ).
thf(sy_v_n_H,type,
n2: nat ).
thf(sy_v_ninv,type,
ninv: finite_mod_ring_a ).
thf(sy_v_q,type,
q: int ).
% Relevant facts (1270)
thf(fact_0_nat__n,axiom,
( ( semiri1314217659103216013at_int @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
= ( semiri1314217659103216013at_int @ n ) ) ).
% nat_n
thf(fact_1_kyber__ntt_Ontt__coeffs_Ocong,axiom,
nTT_ky9081197955043955481effs_a = nTT_ky9081197955043955481effs_a ).
% kyber_ntt.ntt_coeffs.cong
thf(fact_2_ntt__coeffs__def,axiom,
! [G: kyber_qr_a] :
( ( nTT_ky9081197955043955481effs_a @ n @ psi @ G )
= ( map_na1928064127006292399ring_a @ ( nTT_ky9125537182568181474poly_a @ n @ psi @ G ) @ ( upt @ zero_zero_nat @ n ) ) ) ).
% ntt_coeffs_def
thf(fact_3_mult__negacycl,axiom,
( times_2095635435063429214r_qr_a
= ( nTT_ky7844408764402957685conv_a @ n ) ) ).
% mult_negacycl
thf(fact_4_Poly__ntt__coeffs__mult,axiom,
! [F: kyber_qr_a,G: kyber_qr_a] :
( ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) )
= ( poly_F5739129160929385880ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ times_5121417576591743744ring_a ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ F ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ G ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) ) ) ) ).
% Poly_ntt_coeffs_mult
thf(fact_5_of__nat__0,axiom,
( ( semiri1316708129612266289at_nat @ zero_zero_nat )
= zero_zero_nat ) ).
% of_nat_0
thf(fact_6_of__nat__0,axiom,
( ( semiri9180929696517417892ring_a @ zero_zero_nat )
= zero_z7902377541816115708ring_a ) ).
% of_nat_0
thf(fact_7_of__nat__0,axiom,
( ( semiri1314217659103216013at_int @ zero_zero_nat )
= zero_zero_int ) ).
% of_nat_0
thf(fact_8_of__nat__0__eq__iff,axiom,
! [N: nat] :
( ( zero_zero_nat
= ( semiri1316708129612266289at_nat @ N ) )
= ( zero_zero_nat = N ) ) ).
% of_nat_0_eq_iff
thf(fact_9_of__nat__0__eq__iff,axiom,
! [N: nat] :
( ( zero_zero_int
= ( semiri1314217659103216013at_int @ N ) )
= ( zero_zero_nat = N ) ) ).
% of_nat_0_eq_iff
thf(fact_10_of__nat__eq__0__iff,axiom,
! [M: nat] :
( ( ( semiri1316708129612266289at_nat @ M )
= zero_zero_nat )
= ( M = zero_zero_nat ) ) ).
% of_nat_eq_0_iff
thf(fact_11_of__nat__eq__0__iff,axiom,
! [M: nat] :
( ( ( semiri1314217659103216013at_int @ M )
= zero_zero_int )
= ( M = zero_zero_nat ) ) ).
% of_nat_eq_0_iff
thf(fact_12_nat__int,axiom,
! [N: nat] :
( ( nat2 @ ( semiri1314217659103216013at_int @ N ) )
= N ) ).
% nat_int
thf(fact_13_coeff__0,axiom,
! [N: nat] :
( ( coeff_nat @ zero_zero_poly_nat @ N )
= zero_zero_nat ) ).
% coeff_0
thf(fact_14_coeff__0,axiom,
! [N: nat] :
( ( coeff_int @ zero_zero_poly_int @ N )
= zero_zero_int ) ).
% coeff_0
thf(fact_15_coeff__0,axiom,
! [N: nat] :
( ( coeff_1607515655354303335ring_a @ zero_z1830546546923837194ring_a @ N )
= zero_z7902377541816115708ring_a ) ).
% coeff_0
thf(fact_16_of__nat__mult,axiom,
! [M: nat,N: nat] :
( ( semiri7313030098341262522r_qr_a @ ( times_times_nat @ M @ N ) )
= ( times_2095635435063429214r_qr_a @ ( semiri7313030098341262522r_qr_a @ M ) @ ( semiri7313030098341262522r_qr_a @ N ) ) ) ).
% of_nat_mult
thf(fact_17_of__nat__mult,axiom,
! [M: nat,N: nat] :
( ( semiri8000969770135892146ring_a @ ( times_times_nat @ M @ N ) )
= ( times_3242606764180207630ring_a @ ( semiri8000969770135892146ring_a @ M ) @ ( semiri8000969770135892146ring_a @ N ) ) ) ).
% of_nat_mult
thf(fact_18_of__nat__mult,axiom,
! [M: nat,N: nat] :
( ( semiri1314217659103216013at_int @ ( times_times_nat @ M @ N ) )
= ( times_times_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) ) ) ).
% of_nat_mult
thf(fact_19_of__nat__mult,axiom,
! [M: nat,N: nat] :
( ( semiri9180929696517417892ring_a @ ( times_times_nat @ M @ N ) )
= ( times_5121417576591743744ring_a @ ( semiri9180929696517417892ring_a @ M ) @ ( semiri9180929696517417892ring_a @ N ) ) ) ).
% of_nat_mult
thf(fact_20_of__nat__mult,axiom,
! [M: nat,N: nat] :
( ( semiri1316708129612266289at_nat @ ( times_times_nat @ M @ N ) )
= ( times_times_nat @ ( semiri1316708129612266289at_nat @ M ) @ ( semiri1316708129612266289at_nat @ N ) ) ) ).
% of_nat_mult
thf(fact_21_mult__hom_Ohom__zero,axiom,
! [C: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ C @ zero_zero_Kyber_qr_a )
= zero_zero_Kyber_qr_a ) ).
% mult_hom.hom_zero
thf(fact_22_mult__hom_Ohom__zero,axiom,
! [C: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ C @ zero_z7902377541816115708ring_a )
= zero_z7902377541816115708ring_a ) ).
% mult_hom.hom_zero
thf(fact_23_mult__hom_Ohom__zero,axiom,
! [C: nat] :
( ( times_times_nat @ C @ zero_zero_nat )
= zero_zero_nat ) ).
% mult_hom.hom_zero
thf(fact_24_mult__hom_Ohom__zero,axiom,
! [C: int] :
( ( times_times_int @ C @ zero_zero_int )
= zero_zero_int ) ).
% mult_hom.hom_zero
thf(fact_25_mult__hom_Ohom__zero,axiom,
! [C: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ C @ zero_z1830546546923837194ring_a )
= zero_z1830546546923837194ring_a ) ).
% mult_hom.hom_zero
thf(fact_26_mult__zero__left,axiom,
! [A: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ zero_zero_Kyber_qr_a @ A )
= zero_zero_Kyber_qr_a ) ).
% mult_zero_left
thf(fact_27_mult__zero__left,axiom,
! [A: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ zero_z7902377541816115708ring_a @ A )
= zero_z7902377541816115708ring_a ) ).
% mult_zero_left
thf(fact_28_mult__zero__left,axiom,
! [A: nat] :
( ( times_times_nat @ zero_zero_nat @ A )
= zero_zero_nat ) ).
% mult_zero_left
thf(fact_29_mult__zero__left,axiom,
! [A: int] :
( ( times_times_int @ zero_zero_int @ A )
= zero_zero_int ) ).
% mult_zero_left
thf(fact_30_mult__zero__left,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ zero_z1830546546923837194ring_a @ A )
= zero_z1830546546923837194ring_a ) ).
% mult_zero_left
thf(fact_31_n__nonzero,axiom,
( ( semiri1314217659103216013at_int @ n )
!= zero_zero_int ) ).
% n_nonzero
thf(fact_32_of__nat__eq__iff,axiom,
! [M: nat,N: nat] :
( ( ( semiri1314217659103216013at_int @ M )
= ( semiri1314217659103216013at_int @ N ) )
= ( M = N ) ) ).
% of_nat_eq_iff
thf(fact_33_of__nat__eq__iff,axiom,
! [M: nat,N: nat] :
( ( ( semiri1316708129612266289at_nat @ M )
= ( semiri1316708129612266289at_nat @ N ) )
= ( M = N ) ) ).
% of_nat_eq_iff
thf(fact_34_mult__cancel__right,axiom,
! [A: finite_mod_ring_a,C: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( ( times_5121417576591743744ring_a @ A @ C )
= ( times_5121417576591743744ring_a @ B @ C ) )
= ( ( C = zero_z7902377541816115708ring_a )
| ( A = B ) ) ) ).
% mult_cancel_right
thf(fact_35_mult__cancel__right,axiom,
! [A: nat,C: nat,B: nat] :
( ( ( times_times_nat @ A @ C )
= ( times_times_nat @ B @ C ) )
= ( ( C = zero_zero_nat )
| ( A = B ) ) ) ).
% mult_cancel_right
thf(fact_36_mult__cancel__right,axiom,
! [A: int,C: int,B: int] :
( ( ( times_times_int @ A @ C )
= ( times_times_int @ B @ C ) )
= ( ( C = zero_zero_int )
| ( A = B ) ) ) ).
% mult_cancel_right
thf(fact_37_mult__cancel__right,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( ( times_3242606764180207630ring_a @ A @ C )
= ( times_3242606764180207630ring_a @ B @ C ) )
= ( ( C = zero_z1830546546923837194ring_a )
| ( A = B ) ) ) ).
% mult_cancel_right
thf(fact_38_mult__cancel__left,axiom,
! [C: finite_mod_ring_a,A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( ( times_5121417576591743744ring_a @ C @ A )
= ( times_5121417576591743744ring_a @ C @ B ) )
= ( ( C = zero_z7902377541816115708ring_a )
| ( A = B ) ) ) ).
% mult_cancel_left
thf(fact_39_mult__cancel__left,axiom,
! [C: nat,A: nat,B: nat] :
( ( ( times_times_nat @ C @ A )
= ( times_times_nat @ C @ B ) )
= ( ( C = zero_zero_nat )
| ( A = B ) ) ) ).
% mult_cancel_left
thf(fact_40_mult__cancel__left,axiom,
! [C: int,A: int,B: int] :
( ( ( times_times_int @ C @ A )
= ( times_times_int @ C @ B ) )
= ( ( C = zero_zero_int )
| ( A = B ) ) ) ).
% mult_cancel_left
thf(fact_41_mult__cancel__left,axiom,
! [C: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( ( times_3242606764180207630ring_a @ C @ A )
= ( times_3242606764180207630ring_a @ C @ B ) )
= ( ( C = zero_z1830546546923837194ring_a )
| ( A = B ) ) ) ).
% mult_cancel_left
thf(fact_42_mult__eq__0__iff,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( ( times_5121417576591743744ring_a @ A @ B )
= zero_z7902377541816115708ring_a )
= ( ( A = zero_z7902377541816115708ring_a )
| ( B = zero_z7902377541816115708ring_a ) ) ) ).
% mult_eq_0_iff
thf(fact_43_mult__eq__0__iff,axiom,
! [A: nat,B: nat] :
( ( ( times_times_nat @ A @ B )
= zero_zero_nat )
= ( ( A = zero_zero_nat )
| ( B = zero_zero_nat ) ) ) ).
% mult_eq_0_iff
thf(fact_44_mult__eq__0__iff,axiom,
! [A: int,B: int] :
( ( ( times_times_int @ A @ B )
= zero_zero_int )
= ( ( A = zero_zero_int )
| ( B = zero_zero_int ) ) ) ).
% mult_eq_0_iff
thf(fact_45_mult__eq__0__iff,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( ( times_3242606764180207630ring_a @ A @ B )
= zero_z1830546546923837194ring_a )
= ( ( A = zero_z1830546546923837194ring_a )
| ( B = zero_z1830546546923837194ring_a ) ) ) ).
% mult_eq_0_iff
thf(fact_46_mult__zero__right,axiom,
! [A: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ A @ zero_zero_Kyber_qr_a )
= zero_zero_Kyber_qr_a ) ).
% mult_zero_right
thf(fact_47_mult__zero__right,axiom,
! [A: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ A @ zero_z7902377541816115708ring_a )
= zero_z7902377541816115708ring_a ) ).
% mult_zero_right
thf(fact_48_mult__zero__right,axiom,
! [A: nat] :
( ( times_times_nat @ A @ zero_zero_nat )
= zero_zero_nat ) ).
% mult_zero_right
thf(fact_49_mult__zero__right,axiom,
! [A: int] :
( ( times_times_int @ A @ zero_zero_int )
= zero_zero_int ) ).
% mult_zero_right
thf(fact_50_mult__zero__right,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ A @ zero_z1830546546923837194ring_a )
= zero_z1830546546923837194ring_a ) ).
% mult_zero_right
thf(fact_51_mult__cancel2,axiom,
! [M: nat,K: nat,N: nat] :
( ( ( times_times_nat @ M @ K )
= ( times_times_nat @ N @ K ) )
= ( ( M = N )
| ( K = zero_zero_nat ) ) ) ).
% mult_cancel2
thf(fact_52_mult__cancel1,axiom,
! [K: nat,M: nat,N: nat] :
( ( ( times_times_nat @ K @ M )
= ( times_times_nat @ K @ N ) )
= ( ( M = N )
| ( K = zero_zero_nat ) ) ) ).
% mult_cancel1
thf(fact_53_mult__0__right,axiom,
! [M: nat] :
( ( times_times_nat @ M @ zero_zero_nat )
= zero_zero_nat ) ).
% mult_0_right
thf(fact_54_mult__is__0,axiom,
! [M: nat,N: nat] :
( ( ( times_times_nat @ M @ N )
= zero_zero_nat )
= ( ( M = zero_zero_nat )
| ( N = zero_zero_nat ) ) ) ).
% mult_is_0
thf(fact_55_map2__poly__def,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a,P1: poly_F3299452240248304339ring_a,P2: poly_F3299452240248304339ring_a] :
( ( nTT_ky7627831880102416151poly_a @ n @ F @ P1 @ P2 )
= ( poly_F5739129160929385880ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ F ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ P1 ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ P2 ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) ) ) ) ).
% map2_poly_def
thf(fact_56_mult__poly__0__left,axiom,
! [Q: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ zero_z1830546546923837194ring_a @ Q )
= zero_z1830546546923837194ring_a ) ).
% mult_poly_0_left
thf(fact_57_mult__poly__0__right,axiom,
! [P: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ P @ zero_z1830546546923837194ring_a )
= zero_z1830546546923837194ring_a ) ).
% mult_poly_0_right
thf(fact_58_lambda__zero,axiom,
( ( ^ [H: kyber_qr_a] : zero_zero_Kyber_qr_a )
= ( times_2095635435063429214r_qr_a @ zero_zero_Kyber_qr_a ) ) ).
% lambda_zero
thf(fact_59_lambda__zero,axiom,
( ( ^ [H: finite_mod_ring_a] : zero_z7902377541816115708ring_a )
= ( times_5121417576591743744ring_a @ zero_z7902377541816115708ring_a ) ) ).
% lambda_zero
thf(fact_60_lambda__zero,axiom,
( ( ^ [H: nat] : zero_zero_nat )
= ( times_times_nat @ zero_zero_nat ) ) ).
% lambda_zero
thf(fact_61_lambda__zero,axiom,
( ( ^ [H: int] : zero_zero_int )
= ( times_times_int @ zero_zero_int ) ) ).
% lambda_zero
thf(fact_62_lambda__zero,axiom,
( ( ^ [H: poly_F3299452240248304339ring_a] : zero_z1830546546923837194ring_a )
= ( times_3242606764180207630ring_a @ zero_z1830546546923837194ring_a ) ) ).
% lambda_zero
thf(fact_63_kyber__ntt_Ontt__coeff__poly_Ocong,axiom,
nTT_ky9125537182568181474poly_a = nTT_ky9125537182568181474poly_a ).
% kyber_ntt.ntt_coeff_poly.cong
thf(fact_64_kyber__ntt_Onegacycl__conv_Ocong,axiom,
nTT_ky7844408764402957685conv_a = nTT_ky7844408764402957685conv_a ).
% kyber_ntt.negacycl_conv.cong
thf(fact_65_mult__0,axiom,
! [N: nat] :
( ( times_times_nat @ zero_zero_nat @ N )
= zero_zero_nat ) ).
% mult_0
thf(fact_66_int__int__eq,axiom,
! [M: nat,N: nat] :
( ( ( semiri1314217659103216013at_int @ M )
= ( semiri1314217659103216013at_int @ N ) )
= ( M = N ) ) ).
% int_int_eq
thf(fact_67_poly__eq__iff,axiom,
( ( ^ [Y: poly_F3299452240248304339ring_a,Z: poly_F3299452240248304339ring_a] : ( Y = Z ) )
= ( ^ [P3: poly_F3299452240248304339ring_a,Q2: poly_F3299452240248304339ring_a] :
! [N2: nat] :
( ( coeff_1607515655354303335ring_a @ P3 @ N2 )
= ( coeff_1607515655354303335ring_a @ Q2 @ N2 ) ) ) ) ).
% poly_eq_iff
thf(fact_68_poly__eqI,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ! [N3: nat] :
( ( coeff_1607515655354303335ring_a @ P @ N3 )
= ( coeff_1607515655354303335ring_a @ Q @ N3 ) )
=> ( P = Q ) ) ).
% poly_eqI
thf(fact_69_coeff__inject,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a] :
( ( ( coeff_1607515655354303335ring_a @ X )
= ( coeff_1607515655354303335ring_a @ Y2 ) )
= ( X = Y2 ) ) ).
% coeff_inject
thf(fact_70_mult__right__cancel,axiom,
! [C: finite_mod_ring_a,A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( C != zero_z7902377541816115708ring_a )
=> ( ( ( times_5121417576591743744ring_a @ A @ C )
= ( times_5121417576591743744ring_a @ B @ C ) )
= ( A = B ) ) ) ).
% mult_right_cancel
thf(fact_71_mult__right__cancel,axiom,
! [C: nat,A: nat,B: nat] :
( ( C != zero_zero_nat )
=> ( ( ( times_times_nat @ A @ C )
= ( times_times_nat @ B @ C ) )
= ( A = B ) ) ) ).
% mult_right_cancel
thf(fact_72_mult__right__cancel,axiom,
! [C: int,A: int,B: int] :
( ( C != zero_zero_int )
=> ( ( ( times_times_int @ A @ C )
= ( times_times_int @ B @ C ) )
= ( A = B ) ) ) ).
% mult_right_cancel
thf(fact_73_mult__right__cancel,axiom,
! [C: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( C != zero_z1830546546923837194ring_a )
=> ( ( ( times_3242606764180207630ring_a @ A @ C )
= ( times_3242606764180207630ring_a @ B @ C ) )
= ( A = B ) ) ) ).
% mult_right_cancel
thf(fact_74_mult__left__cancel,axiom,
! [C: finite_mod_ring_a,A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( C != zero_z7902377541816115708ring_a )
=> ( ( ( times_5121417576591743744ring_a @ C @ A )
= ( times_5121417576591743744ring_a @ C @ B ) )
= ( A = B ) ) ) ).
% mult_left_cancel
thf(fact_75_mult__left__cancel,axiom,
! [C: nat,A: nat,B: nat] :
( ( C != zero_zero_nat )
=> ( ( ( times_times_nat @ C @ A )
= ( times_times_nat @ C @ B ) )
= ( A = B ) ) ) ).
% mult_left_cancel
thf(fact_76_mult__left__cancel,axiom,
! [C: int,A: int,B: int] :
( ( C != zero_zero_int )
=> ( ( ( times_times_int @ C @ A )
= ( times_times_int @ C @ B ) )
= ( A = B ) ) ) ).
% mult_left_cancel
thf(fact_77_mult__left__cancel,axiom,
! [C: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( C != zero_z1830546546923837194ring_a )
=> ( ( ( times_3242606764180207630ring_a @ C @ A )
= ( times_3242606764180207630ring_a @ C @ B ) )
= ( A = B ) ) ) ).
% mult_left_cancel
thf(fact_78_no__zero__divisors,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( A != zero_z7902377541816115708ring_a )
=> ( ( B != zero_z7902377541816115708ring_a )
=> ( ( times_5121417576591743744ring_a @ A @ B )
!= zero_z7902377541816115708ring_a ) ) ) ).
% no_zero_divisors
thf(fact_79_no__zero__divisors,axiom,
! [A: nat,B: nat] :
( ( A != zero_zero_nat )
=> ( ( B != zero_zero_nat )
=> ( ( times_times_nat @ A @ B )
!= zero_zero_nat ) ) ) ).
% no_zero_divisors
thf(fact_80_no__zero__divisors,axiom,
! [A: int,B: int] :
( ( A != zero_zero_int )
=> ( ( B != zero_zero_int )
=> ( ( times_times_int @ A @ B )
!= zero_zero_int ) ) ) ).
% no_zero_divisors
thf(fact_81_no__zero__divisors,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( A != zero_z1830546546923837194ring_a )
=> ( ( B != zero_z1830546546923837194ring_a )
=> ( ( times_3242606764180207630ring_a @ A @ B )
!= zero_z1830546546923837194ring_a ) ) ) ).
% no_zero_divisors
thf(fact_82_divisors__zero,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( ( times_5121417576591743744ring_a @ A @ B )
= zero_z7902377541816115708ring_a )
=> ( ( A = zero_z7902377541816115708ring_a )
| ( B = zero_z7902377541816115708ring_a ) ) ) ).
% divisors_zero
thf(fact_83_divisors__zero,axiom,
! [A: nat,B: nat] :
( ( ( times_times_nat @ A @ B )
= zero_zero_nat )
=> ( ( A = zero_zero_nat )
| ( B = zero_zero_nat ) ) ) ).
% divisors_zero
thf(fact_84_divisors__zero,axiom,
! [A: int,B: int] :
( ( ( times_times_int @ A @ B )
= zero_zero_int )
=> ( ( A = zero_zero_int )
| ( B = zero_zero_int ) ) ) ).
% divisors_zero
thf(fact_85_divisors__zero,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( ( times_3242606764180207630ring_a @ A @ B )
= zero_z1830546546923837194ring_a )
=> ( ( A = zero_z1830546546923837194ring_a )
| ( B = zero_z1830546546923837194ring_a ) ) ) ).
% divisors_zero
thf(fact_86_mult__not__zero,axiom,
! [A: kyber_qr_a,B: kyber_qr_a] :
( ( ( times_2095635435063429214r_qr_a @ A @ B )
!= zero_zero_Kyber_qr_a )
=> ( ( A != zero_zero_Kyber_qr_a )
& ( B != zero_zero_Kyber_qr_a ) ) ) ).
% mult_not_zero
thf(fact_87_mult__not__zero,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( ( times_5121417576591743744ring_a @ A @ B )
!= zero_z7902377541816115708ring_a )
=> ( ( A != zero_z7902377541816115708ring_a )
& ( B != zero_z7902377541816115708ring_a ) ) ) ).
% mult_not_zero
thf(fact_88_mult__not__zero,axiom,
! [A: nat,B: nat] :
( ( ( times_times_nat @ A @ B )
!= zero_zero_nat )
=> ( ( A != zero_zero_nat )
& ( B != zero_zero_nat ) ) ) ).
% mult_not_zero
thf(fact_89_mult__not__zero,axiom,
! [A: int,B: int] :
( ( ( times_times_int @ A @ B )
!= zero_zero_int )
=> ( ( A != zero_zero_int )
& ( B != zero_zero_int ) ) ) ).
% mult_not_zero
thf(fact_90_mult__not__zero,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( ( times_3242606764180207630ring_a @ A @ B )
!= zero_z1830546546923837194ring_a )
=> ( ( A != zero_z1830546546923837194ring_a )
& ( B != zero_z1830546546923837194ring_a ) ) ) ).
% mult_not_zero
thf(fact_91_mult__of__nat__commute,axiom,
! [X: nat,Y2: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ ( semiri7313030098341262522r_qr_a @ X ) @ Y2 )
= ( times_2095635435063429214r_qr_a @ Y2 @ ( semiri7313030098341262522r_qr_a @ X ) ) ) ).
% mult_of_nat_commute
thf(fact_92_mult__of__nat__commute,axiom,
! [X: nat,Y2: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ ( semiri8000969770135892146ring_a @ X ) @ Y2 )
= ( times_3242606764180207630ring_a @ Y2 @ ( semiri8000969770135892146ring_a @ X ) ) ) ).
% mult_of_nat_commute
thf(fact_93_mult__of__nat__commute,axiom,
! [X: nat,Y2: int] :
( ( times_times_int @ ( semiri1314217659103216013at_int @ X ) @ Y2 )
= ( times_times_int @ Y2 @ ( semiri1314217659103216013at_int @ X ) ) ) ).
% mult_of_nat_commute
thf(fact_94_mult__of__nat__commute,axiom,
! [X: nat,Y2: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ ( semiri9180929696517417892ring_a @ X ) @ Y2 )
= ( times_5121417576591743744ring_a @ Y2 @ ( semiri9180929696517417892ring_a @ X ) ) ) ).
% mult_of_nat_commute
thf(fact_95_mult__of__nat__commute,axiom,
! [X: nat,Y2: nat] :
( ( times_times_nat @ ( semiri1316708129612266289at_nat @ X ) @ Y2 )
= ( times_times_nat @ Y2 @ ( semiri1316708129612266289at_nat @ X ) ) ) ).
% mult_of_nat_commute
thf(fact_96_zero__poly_Orep__eq,axiom,
( ( coeff_nat @ zero_zero_poly_nat )
= ( ^ [Uu: nat] : zero_zero_nat ) ) ).
% zero_poly.rep_eq
thf(fact_97_zero__poly_Orep__eq,axiom,
( ( coeff_int @ zero_zero_poly_int )
= ( ^ [Uu: nat] : zero_zero_int ) ) ).
% zero_poly.rep_eq
thf(fact_98_zero__poly_Orep__eq,axiom,
( ( coeff_1607515655354303335ring_a @ zero_z1830546546923837194ring_a )
= ( ^ [Uu: nat] : zero_z7902377541816115708ring_a ) ) ).
% zero_poly.rep_eq
thf(fact_99_nth__default__ntt__coeff__mult,axiom,
! [F: kyber_qr_a,G: kyber_qr_a,I: nat] :
( ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) @ I )
= ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ times_5121417576591743744ring_a ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ F ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ G ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) ) @ I ) ) ).
% nth_default_ntt_coeff_mult
thf(fact_100_ntt__coeff__poly__mult,axiom,
! [L: nat,F: kyber_qr_a,G: kyber_qr_a] :
( ( ord_less_nat @ L @ n )
=> ( ( nTT_ky9125537182568181474poly_a @ n @ psi @ ( times_2095635435063429214r_qr_a @ F @ G ) @ L )
= ( times_5121417576591743744ring_a @ ( nTT_ky9125537182568181474poly_a @ n @ psi @ F @ L ) @ ( nTT_ky9125537182568181474poly_a @ n @ psi @ G @ L ) ) ) ) ).
% ntt_coeff_poly_mult
thf(fact_101_map2__map__map,axiom,
! [H2: finite_mod_ring_a > finite_mod_ring_a > nat,F: nat > finite_mod_ring_a,Xs: list_nat,G: nat > finite_mod_ring_a] :
( ( map_Pr3541440647737195251_a_nat @ ( produc1310295081252686012_a_nat @ H2 ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ F @ Xs ) @ ( map_na1928064127006292399ring_a @ G @ Xs ) ) )
= ( map_nat_nat
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_102_map2__map__map,axiom,
! [H2: finite_mod_ring_a > nat > finite_mod_ring_a,F: nat > finite_mod_ring_a,Xs: list_nat,G: nat > nat] :
( ( map_Pr7682932610255141947ring_a @ ( produc8273129539502305050ring_a @ H2 ) @ ( zip_Fi8796496336565543198_a_nat @ ( map_na1928064127006292399ring_a @ F @ Xs ) @ ( map_nat_nat @ G @ Xs ) ) )
= ( map_na1928064127006292399ring_a
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_103_map2__map__map,axiom,
! [H2: finite_mod_ring_a > nat > nat,F: nat > finite_mod_ring_a,Xs: list_nat,G: nat > nat] :
( ( map_Pr2064521203608163290at_nat @ ( produc3909451581377953851at_nat @ H2 ) @ ( zip_Fi8796496336565543198_a_nat @ ( map_na1928064127006292399ring_a @ F @ Xs ) @ ( map_nat_nat @ G @ Xs ) ) )
= ( map_nat_nat
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_104_map2__map__map,axiom,
! [H2: nat > finite_mod_ring_a > finite_mod_ring_a,F: nat > nat,Xs: list_nat,G: nat > finite_mod_ring_a] :
( ( map_Pr6677102360513991957ring_a @ ( produc6819528916691020348ring_a @ H2 ) @ ( zip_na6535958757960386428ring_a @ ( map_nat_nat @ F @ Xs ) @ ( map_na1928064127006292399ring_a @ G @ Xs ) ) )
= ( map_na1928064127006292399ring_a
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_105_map2__map__map,axiom,
! [H2: nat > finite_mod_ring_a > nat,F: nat > nat,Xs: list_nat,G: nat > finite_mod_ring_a] :
( ( map_Pr626941434692923008_a_nat @ ( produc9149975641485487769_a_nat @ H2 ) @ ( zip_na6535958757960386428ring_a @ ( map_nat_nat @ F @ Xs ) @ ( map_na1928064127006292399ring_a @ G @ Xs ) ) )
= ( map_nat_nat
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_106_map2__map__map,axiom,
! [H2: nat > nat > finite_mod_ring_a,F: nat > nat,Xs: list_nat,G: nat > nat] :
( ( map_Pr4768433397210869704ring_a @ ( produc6889438062880330999ring_a @ H2 ) @ ( zip_nat_nat @ ( map_nat_nat @ F @ Xs ) @ ( map_nat_nat @ G @ Xs ) ) )
= ( map_na1928064127006292399ring_a
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_107_map2__map__map,axiom,
! [H2: nat > nat > nat,F: nat > nat,Xs: list_nat,G: nat > nat] :
( ( map_Pr3938374229010428429at_nat @ ( produc6842872674320459806at_nat @ H2 ) @ ( zip_nat_nat @ ( map_nat_nat @ F @ Xs ) @ ( map_nat_nat @ G @ Xs ) ) )
= ( map_nat_nat
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_108_map2__map__map,axiom,
! [H2: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a,F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,G: produc4299165986903738727ring_a > finite_mod_ring_a] :
( ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ H2 ) @ ( zip_Fi507625284836285431ring_a @ ( map_Pr8707103244924889698ring_a @ F @ Xs ) @ ( map_Pr8707103244924889698ring_a @ G @ Xs ) ) )
= ( map_Pr8707103244924889698ring_a
@ ^ [X2: produc4299165986903738727ring_a] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_109_map2__map__map,axiom,
! [H2: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a,F: nat > finite_mod_ring_a,Xs: list_nat,G: nat > finite_mod_ring_a] :
( ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ H2 ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ F @ Xs ) @ ( map_na1928064127006292399ring_a @ G @ Xs ) ) )
= ( map_na1928064127006292399ring_a
@ ^ [X2: nat] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_110_map2__map__map,axiom,
! [H2: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a,F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,G: finite_mod_ring_a > finite_mod_ring_a] :
( ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ H2 ) @ ( zip_Fi507625284836285431ring_a @ ( map_Fi7082711781076630404ring_a @ F @ Xs ) @ ( map_Fi7082711781076630404ring_a @ G @ Xs ) ) )
= ( map_Fi7082711781076630404ring_a
@ ^ [X2: finite_mod_ring_a] : ( H2 @ ( F @ X2 ) @ ( G @ X2 ) )
@ Xs ) ) ).
% map2_map_map
thf(fact_111_map__ident,axiom,
( ( map_Fi7082711781076630404ring_a
@ ^ [X2: finite_mod_ring_a] : X2 )
= ( ^ [Xs2: list_F4626807571770296779ring_a] : Xs2 ) ) ).
% map_ident
thf(fact_112_map__ident,axiom,
( ( map_nat_nat
@ ^ [X2: nat] : X2 )
= ( ^ [Xs2: list_nat] : Xs2 ) ) ).
% map_ident
thf(fact_113_nat__times__as__int,axiom,
( times_times_nat
= ( ^ [A2: nat,B2: nat] : ( nat2 @ ( times_times_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ) ).
% nat_times_as_int
thf(fact_114_calculation,axiom,
( ( modulo2591651872109920577ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ ( times_2095635435063429214r_qr_a @ f @ g ) ) ) @ kyber_qr_poly_a )
= ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ ( times_2095635435063429214r_qr_a @ f @ g ) ) ) ) ).
% calculation
thf(fact_115_ntt__poly__def,axiom,
! [G: kyber_qr_a] :
( ( nTT_kyber_ntt_poly_a @ n @ psi @ G )
= ( kyber_to_qr_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ G ) ) ) ) ).
% ntt_poly_def
thf(fact_116_kyber__ntt_OPoly__ntt__coeffs__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) )
= ( poly_F5739129160929385880ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ times_5121417576591743744ring_a ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) ) ) ) ) ) ).
% kyber_ntt.Poly_ntt_coeffs_mult
thf(fact_117_kyber__ntt_OPoly__ntt__coeffs__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) )
= ( poly_F5739129160929385880ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ times_5121417576591743744ring_a ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) ) ) ) ) ) ).
% kyber_ntt.Poly_ntt_coeffs_mult
thf(fact_118_n__gt__zero,axiom,
ord_less_int @ zero_zero_int @ ( semiri1314217659103216013at_int @ n ) ).
% n_gt_zero
thf(fact_119_int__ops_I7_J,axiom,
! [A: nat,B: nat] :
( ( semiri1314217659103216013at_int @ ( times_times_nat @ A @ B ) )
= ( times_times_int @ ( semiri1314217659103216013at_int @ A ) @ ( semiri1314217659103216013at_int @ B ) ) ) ).
% int_ops(7)
thf(fact_120_nat__zero__as__int,axiom,
( zero_zero_nat
= ( nat2 @ zero_zero_int ) ) ).
% nat_zero_as_int
thf(fact_121_nth__default__map,axiom,
! [I: nat,Na: nat,X: nat,F: nat > nat] :
( ( ord_less_nat @ I @ Na )
=> ( ( more_nth_default_nat @ X @ ( map_nat_nat @ F @ ( upt @ zero_zero_nat @ Na ) ) @ I )
= ( F @ I ) ) ) ).
% nth_default_map
thf(fact_122_nth__default__map,axiom,
! [I: nat,Na: nat,X: finite_mod_ring_a,F: nat > finite_mod_ring_a] :
( ( ord_less_nat @ I @ Na )
=> ( ( more_n3412881383938893606ring_a @ X @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ Na ) ) @ I )
= ( F @ I ) ) ) ).
% nth_default_map
thf(fact_123_not__gr__zero,axiom,
! [N: nat] :
( ( ~ ( ord_less_nat @ zero_zero_nat @ N ) )
= ( N = zero_zero_nat ) ) ).
% not_gr_zero
thf(fact_124_bot__nat__0_Onot__eq__extremum,axiom,
! [A: nat] :
( ( A != zero_zero_nat )
= ( ord_less_nat @ zero_zero_nat @ A ) ) ).
% bot_nat_0.not_eq_extremum
thf(fact_125_neq0__conv,axiom,
! [N: nat] :
( ( N != zero_zero_nat )
= ( ord_less_nat @ zero_zero_nat @ N ) ) ).
% neq0_conv
thf(fact_126_less__nat__zero__code,axiom,
! [N: nat] :
~ ( ord_less_nat @ N @ zero_zero_nat ) ).
% less_nat_zero_code
thf(fact_127_mod__0,axiom,
! [A: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ zero_z7902377541816115708ring_a @ A )
= zero_z7902377541816115708ring_a ) ).
% mod_0
thf(fact_128_mod__0,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ zero_z1830546546923837194ring_a @ A )
= zero_z1830546546923837194ring_a ) ).
% mod_0
thf(fact_129_mod__0,axiom,
! [A: nat] :
( ( modulo_modulo_nat @ zero_zero_nat @ A )
= zero_zero_nat ) ).
% mod_0
thf(fact_130_mod__0,axiom,
! [A: int] :
( ( modulo_modulo_int @ zero_zero_int @ A )
= zero_zero_int ) ).
% mod_0
thf(fact_131_mod__by__0,axiom,
! [A: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ A @ zero_z7902377541816115708ring_a )
= A ) ).
% mod_by_0
thf(fact_132_mod__by__0,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ A @ zero_z1830546546923837194ring_a )
= A ) ).
% mod_by_0
thf(fact_133_mod__by__0,axiom,
! [A: nat] :
( ( modulo_modulo_nat @ A @ zero_zero_nat )
= A ) ).
% mod_by_0
thf(fact_134_mod__by__0,axiom,
! [A: int] :
( ( modulo_modulo_int @ A @ zero_zero_int )
= A ) ).
% mod_by_0
thf(fact_135_mod__self,axiom,
! [A: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ A @ A )
= zero_z7902377541816115708ring_a ) ).
% mod_self
thf(fact_136_mod__self,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ A @ A )
= zero_z1830546546923837194ring_a ) ).
% mod_self
thf(fact_137_mod__self,axiom,
! [A: nat] :
( ( modulo_modulo_nat @ A @ A )
= zero_zero_nat ) ).
% mod_self
thf(fact_138_mod__self,axiom,
! [A: int] :
( ( modulo_modulo_int @ A @ A )
= zero_zero_int ) ).
% mod_self
thf(fact_139_Poly__ntt__coeffs__mod__qr__poly,axiom,
! [F: kyber_qr_a] :
( ( modulo2591651872109920577ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ F ) ) @ kyber_qr_poly_a )
= ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ F ) ) ) ).
% Poly_ntt_coeffs_mod_qr_poly
thf(fact_140_map__upto__n__mod,axiom,
! [F: nat > finite_mod_ring_a] :
( ( modulo2591651872109920577ring_a @ ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ n ) ) ) @ kyber_qr_poly_a )
= ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ n ) ) ) ) ).
% map_upto_n_mod
thf(fact_141_of__nat__less__iff,axiom,
! [M: nat,N: nat] :
( ( ord_less_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) )
= ( ord_less_nat @ M @ N ) ) ).
% of_nat_less_iff
thf(fact_142_of__nat__less__iff,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ ( semiri1316708129612266289at_nat @ M ) @ ( semiri1316708129612266289at_nat @ N ) )
= ( ord_less_nat @ M @ N ) ) ).
% of_nat_less_iff
thf(fact_143_nat__0__less__mult__iff,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( times_times_nat @ M @ N ) )
= ( ( ord_less_nat @ zero_zero_nat @ M )
& ( ord_less_nat @ zero_zero_nat @ N ) ) ) ).
% nat_0_less_mult_iff
thf(fact_144_mult__less__cancel2,axiom,
! [M: nat,K: nat,N: nat] :
( ( ord_less_nat @ ( times_times_nat @ M @ K ) @ ( times_times_nat @ N @ K ) )
= ( ( ord_less_nat @ zero_zero_nat @ K )
& ( ord_less_nat @ M @ N ) ) ) ).
% mult_less_cancel2
thf(fact_145_zless__nat__conj,axiom,
! [W: int,Z2: int] :
( ( ord_less_nat @ ( nat2 @ W ) @ ( nat2 @ Z2 ) )
= ( ( ord_less_int @ zero_zero_int @ Z2 )
& ( ord_less_int @ W @ Z2 ) ) ) ).
% zless_nat_conj
thf(fact_146_coeff__Poly__eq,axiom,
! [Xs: list_nat] :
( ( coeff_nat @ ( poly_nat2 @ Xs ) )
= ( more_nth_default_nat @ zero_zero_nat @ Xs ) ) ).
% coeff_Poly_eq
thf(fact_147_coeff__Poly__eq,axiom,
! [Xs: list_int] :
( ( coeff_int @ ( poly_int2 @ Xs ) )
= ( more_nth_default_int @ zero_zero_int @ Xs ) ) ).
% coeff_Poly_eq
thf(fact_148_coeff__Poly__eq,axiom,
! [Xs: list_F4626807571770296779ring_a] :
( ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ Xs ) )
= ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ Xs ) ) ).
% coeff_Poly_eq
thf(fact_149_of__nat__0__less__iff,axiom,
! [N: nat] :
( ( ord_less_int @ zero_zero_int @ ( semiri1314217659103216013at_int @ N ) )
= ( ord_less_nat @ zero_zero_nat @ N ) ) ).
% of_nat_0_less_iff
thf(fact_150_of__nat__0__less__iff,axiom,
! [N: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( semiri1316708129612266289at_nat @ N ) )
= ( ord_less_nat @ zero_zero_nat @ N ) ) ).
% of_nat_0_less_iff
thf(fact_151_zero__less__nat__eq,axiom,
! [Z2: int] :
( ( ord_less_nat @ zero_zero_nat @ ( nat2 @ Z2 ) )
= ( ord_less_int @ zero_zero_int @ Z2 ) ) ).
% zero_less_nat_eq
thf(fact_152_n_H__gr__0,axiom,
ord_less_nat @ zero_zero_nat @ n2 ).
% n'_gr_0
thf(fact_153_deg__qr__n,axiom,
( ( semiri1314217659103216013at_int @ ( kyber_5808863167042391122g_qr_a @ type_a ) )
= ( semiri1314217659103216013at_int @ n ) ) ).
% deg_qr_n
thf(fact_154_less__int__code_I1_J,axiom,
~ ( ord_less_int @ zero_zero_int @ zero_zero_int ) ).
% less_int_code(1)
thf(fact_155_times__int__code_I2_J,axiom,
! [L: int] :
( ( times_times_int @ zero_zero_int @ L )
= zero_zero_int ) ).
% times_int_code(2)
thf(fact_156_times__int__code_I1_J,axiom,
! [K: int] :
( ( times_times_int @ K @ zero_zero_int )
= zero_zero_int ) ).
% times_int_code(1)
thf(fact_157_nat__int__comparison_I2_J,axiom,
( ord_less_nat
= ( ^ [A2: nat,B2: nat] : ( ord_less_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ).
% nat_int_comparison(2)
thf(fact_158_linorder__neqE__linordered__idom,axiom,
! [X: int,Y2: int] :
( ( X != Y2 )
=> ( ~ ( ord_less_int @ X @ Y2 )
=> ( ord_less_int @ Y2 @ X ) ) ) ).
% linorder_neqE_linordered_idom
thf(fact_159_nat__neq__iff,axiom,
! [M: nat,N: nat] :
( ( M != N )
= ( ( ord_less_nat @ M @ N )
| ( ord_less_nat @ N @ M ) ) ) ).
% nat_neq_iff
thf(fact_160_less__not__refl,axiom,
! [N: nat] :
~ ( ord_less_nat @ N @ N ) ).
% less_not_refl
thf(fact_161_less__not__refl2,axiom,
! [N: nat,M: nat] :
( ( ord_less_nat @ N @ M )
=> ( M != N ) ) ).
% less_not_refl2
thf(fact_162_less__not__refl3,axiom,
! [S: nat,T: nat] :
( ( ord_less_nat @ S @ T )
=> ( S != T ) ) ).
% less_not_refl3
thf(fact_163_less__irrefl__nat,axiom,
! [N: nat] :
~ ( ord_less_nat @ N @ N ) ).
% less_irrefl_nat
thf(fact_164_nat__less__induct,axiom,
! [P4: nat > $o,N: nat] :
( ! [N3: nat] :
( ! [M2: nat] :
( ( ord_less_nat @ M2 @ N3 )
=> ( P4 @ M2 ) )
=> ( P4 @ N3 ) )
=> ( P4 @ N ) ) ).
% nat_less_induct
thf(fact_165_infinite__descent,axiom,
! [P4: nat > $o,N: nat] :
( ! [N3: nat] :
( ~ ( P4 @ N3 )
=> ? [M2: nat] :
( ( ord_less_nat @ M2 @ N3 )
& ~ ( P4 @ M2 ) ) )
=> ( P4 @ N ) ) ).
% infinite_descent
thf(fact_166_zmult__zless__mono2,axiom,
! [I: int,J: int,K: int] :
( ( ord_less_int @ I @ J )
=> ( ( ord_less_int @ zero_zero_int @ K )
=> ( ord_less_int @ ( times_times_int @ K @ I ) @ ( times_times_int @ K @ J ) ) ) ) ).
% zmult_zless_mono2
thf(fact_167_linorder__neqE__nat,axiom,
! [X: nat,Y2: nat] :
( ( X != Y2 )
=> ( ~ ( ord_less_nat @ X @ Y2 )
=> ( ord_less_nat @ Y2 @ X ) ) ) ).
% linorder_neqE_nat
thf(fact_168_verit__comp__simplify1_I1_J,axiom,
! [A: nat] :
~ ( ord_less_nat @ A @ A ) ).
% verit_comp_simplify1(1)
thf(fact_169_verit__comp__simplify1_I1_J,axiom,
! [A: int] :
~ ( ord_less_int @ A @ A ) ).
% verit_comp_simplify1(1)
thf(fact_170_nat__less__as__int,axiom,
( ord_less_nat
= ( ^ [A2: nat,B2: nat] : ( ord_less_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ).
% nat_less_as_int
thf(fact_171_of__nat__less__imp__less,axiom,
! [M: nat,N: nat] :
( ( ord_less_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) )
=> ( ord_less_nat @ M @ N ) ) ).
% of_nat_less_imp_less
thf(fact_172_of__nat__less__imp__less,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ ( semiri1316708129612266289at_nat @ M ) @ ( semiri1316708129612266289at_nat @ N ) )
=> ( ord_less_nat @ M @ N ) ) ).
% of_nat_less_imp_less
thf(fact_173_less__imp__of__nat__less,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ M @ N )
=> ( ord_less_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) ) ) ).
% less_imp_of_nat_less
thf(fact_174_less__imp__of__nat__less,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ M @ N )
=> ( ord_less_nat @ ( semiri1316708129612266289at_nat @ M ) @ ( semiri1316708129612266289at_nat @ N ) ) ) ).
% less_imp_of_nat_less
thf(fact_175_kyber__ntt_OPoly__ntt__coeffs__mod__qr__poly,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( modulo2591651872109920577ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) @ kyber_qr_poly_a )
= ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) ) ).
% kyber_ntt.Poly_ntt_coeffs_mod_qr_poly
thf(fact_176_kyber__ntt_OPoly__ntt__coeffs__mod__qr__poly,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( modulo2591651872109920577ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) @ kyber_qr_poly_a )
= ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) ) ).
% kyber_ntt.Poly_ntt_coeffs_mod_qr_poly
thf(fact_177_nat__mono__iff,axiom,
! [Z2: int,W: int] :
( ( ord_less_int @ zero_zero_int @ Z2 )
=> ( ( ord_less_nat @ ( nat2 @ W ) @ ( nat2 @ Z2 ) )
= ( ord_less_int @ W @ Z2 ) ) ) ).
% nat_mono_iff
thf(fact_178_gr__zeroI,axiom,
! [N: nat] :
( ( N != zero_zero_nat )
=> ( ord_less_nat @ zero_zero_nat @ N ) ) ).
% gr_zeroI
thf(fact_179_not__less__zero,axiom,
! [N: nat] :
~ ( ord_less_nat @ N @ zero_zero_nat ) ).
% not_less_zero
thf(fact_180_gr__implies__not__zero,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ M @ N )
=> ( N != zero_zero_nat ) ) ).
% gr_implies_not_zero
thf(fact_181_zero__less__iff__neq__zero,axiom,
! [N: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
= ( N != zero_zero_nat ) ) ).
% zero_less_iff_neq_zero
thf(fact_182_kyber__ntt_Ontt__poly__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_kyber_ntt_poly_a @ N @ Psi @ G )
= ( kyber_to_qr_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) ) ) ) ) ).
% kyber_ntt.ntt_poly_def
thf(fact_183_kyber__ntt_Ontt__poly__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_kyber_ntt_poly_a @ N @ Psi @ G )
= ( kyber_to_qr_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) ) ) ) ) ).
% kyber_ntt.ntt_poly_def
thf(fact_184_kyber__ntt_Onth__default__map,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,Na: nat,X: nat,F: nat > nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ I @ Na )
=> ( ( more_nth_default_nat @ X @ ( map_nat_nat @ F @ ( upt @ zero_zero_nat @ Na ) ) @ I )
= ( F @ I ) ) ) ) ).
% kyber_ntt.nth_default_map
thf(fact_185_kyber__ntt_Onth__default__map,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,Na: nat,X: finite_mod_ring_a,F: nat > finite_mod_ring_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ I @ Na )
=> ( ( more_n3412881383938893606ring_a @ X @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ Na ) ) @ I )
= ( F @ I ) ) ) ) ).
% kyber_ntt.nth_default_map
thf(fact_186_kyber__ntt_Omap2__poly_Ocong,axiom,
nTT_ky7627831880102416151poly_a = nTT_ky7627831880102416151poly_a ).
% kyber_ntt.map2_poly.cong
thf(fact_187_kyber__ntt_Ontt__poly_Ocong,axiom,
nTT_kyber_ntt_poly_a = nTT_kyber_ntt_poly_a ).
% kyber_ntt.ntt_poly.cong
thf(fact_188_pos__int__cases,axiom,
! [K: int] :
( ( ord_less_int @ zero_zero_int @ K )
=> ~ ! [N3: nat] :
( ( K
= ( semiri1314217659103216013at_int @ N3 ) )
=> ~ ( ord_less_nat @ zero_zero_nat @ N3 ) ) ) ).
% pos_int_cases
thf(fact_189_zero__less__imp__eq__int,axiom,
! [K: int] :
( ( ord_less_int @ zero_zero_int @ K )
=> ? [N3: nat] :
( ( ord_less_nat @ zero_zero_nat @ N3 )
& ( K
= ( semiri1314217659103216013at_int @ N3 ) ) ) ) ).
% zero_less_imp_eq_int
thf(fact_190_zmult__zless__mono2__lemma,axiom,
! [I: int,J: int,K: nat] :
( ( ord_less_int @ I @ J )
=> ( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ord_less_int @ ( times_times_int @ ( semiri1314217659103216013at_int @ K ) @ I ) @ ( times_times_int @ ( semiri1314217659103216013at_int @ K ) @ J ) ) ) ) ).
% zmult_zless_mono2_lemma
thf(fact_191_zless__nat__eq__int__zless,axiom,
! [M: nat,Z2: int] :
( ( ord_less_nat @ M @ ( nat2 @ Z2 ) )
= ( ord_less_int @ ( semiri1314217659103216013at_int @ M ) @ Z2 ) ) ).
% zless_nat_eq_int_zless
thf(fact_192_kyber__ntt_Omap__upto__n__mod,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: nat > finite_mod_ring_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( modulo2591651872109920577ring_a @ ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ N ) ) ) @ kyber_qr_poly_a )
= ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ N ) ) ) ) ) ).
% kyber_ntt.map_upto_n_mod
thf(fact_193_kyber__ntt_Omap__upto__n__mod,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: nat > finite_mod_ring_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( modulo2591651872109920577ring_a @ ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ N ) ) ) @ kyber_qr_poly_a )
= ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ F @ ( upt @ zero_zero_nat @ N ) ) ) ) ) ).
% kyber_ntt.map_upto_n_mod
thf(fact_194_kyber__ntt_Ontt__coeff__poly__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,L: nat,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ L @ N )
=> ( ( nTT_ky9125537182568181474poly_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) @ L )
= ( times_5121417576591743744ring_a @ ( nTT_ky9125537182568181474poly_a @ N @ Psi @ F @ L ) @ ( nTT_ky9125537182568181474poly_a @ N @ Psi @ G @ L ) ) ) ) ) ).
% kyber_ntt.ntt_coeff_poly_mult
thf(fact_195_kyber__ntt_Ontt__coeff__poly__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,L: nat,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ L @ N )
=> ( ( nTT_ky9125537182568181474poly_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) @ L )
= ( times_5121417576591743744ring_a @ ( nTT_ky9125537182568181474poly_a @ N @ Psi @ F @ L ) @ ( nTT_ky9125537182568181474poly_a @ N @ Psi @ G @ L ) ) ) ) ) ).
% kyber_ntt.ntt_coeff_poly_mult
thf(fact_196_bot__nat__0_Oextremum__strict,axiom,
! [A: nat] :
~ ( ord_less_nat @ A @ zero_zero_nat ) ).
% bot_nat_0.extremum_strict
thf(fact_197_gr0I,axiom,
! [N: nat] :
( ( N != zero_zero_nat )
=> ( ord_less_nat @ zero_zero_nat @ N ) ) ).
% gr0I
thf(fact_198_not__gr0,axiom,
! [N: nat] :
( ( ~ ( ord_less_nat @ zero_zero_nat @ N ) )
= ( N = zero_zero_nat ) ) ).
% not_gr0
thf(fact_199_not__less0,axiom,
! [N: nat] :
~ ( ord_less_nat @ N @ zero_zero_nat ) ).
% not_less0
thf(fact_200_less__zeroE,axiom,
! [N: nat] :
~ ( ord_less_nat @ N @ zero_zero_nat ) ).
% less_zeroE
thf(fact_201_gr__implies__not0,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ M @ N )
=> ( N != zero_zero_nat ) ) ).
% gr_implies_not0
thf(fact_202_infinite__descent0,axiom,
! [P4: nat > $o,N: nat] :
( ( P4 @ zero_zero_nat )
=> ( ! [N3: nat] :
( ( ord_less_nat @ zero_zero_nat @ N3 )
=> ( ~ ( P4 @ N3 )
=> ? [M2: nat] :
( ( ord_less_nat @ M2 @ N3 )
& ~ ( P4 @ M2 ) ) ) )
=> ( P4 @ N ) ) ) ).
% infinite_descent0
thf(fact_203_kyber__ntt_Omult__negacycl,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_2095635435063429214r_qr_a @ F @ G )
= ( nTT_ky7844408764402957685conv_a @ N @ F @ G ) ) ) ).
% kyber_ntt.mult_negacycl
thf(fact_204_kyber__ntt_Omult__negacycl,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_2095635435063429214r_qr_a @ F @ G )
= ( nTT_ky7844408764402957685conv_a @ N @ F @ G ) ) ) ).
% kyber_ntt.mult_negacycl
thf(fact_205_mult__neg__neg,axiom,
! [A: int,B: int] :
( ( ord_less_int @ A @ zero_zero_int )
=> ( ( ord_less_int @ B @ zero_zero_int )
=> ( ord_less_int @ zero_zero_int @ ( times_times_int @ A @ B ) ) ) ) ).
% mult_neg_neg
thf(fact_206_not__square__less__zero,axiom,
! [A: int] :
~ ( ord_less_int @ ( times_times_int @ A @ A ) @ zero_zero_int ) ).
% not_square_less_zero
thf(fact_207_mult__less__0__iff,axiom,
! [A: int,B: int] :
( ( ord_less_int @ ( times_times_int @ A @ B ) @ zero_zero_int )
= ( ( ( ord_less_int @ zero_zero_int @ A )
& ( ord_less_int @ B @ zero_zero_int ) )
| ( ( ord_less_int @ A @ zero_zero_int )
& ( ord_less_int @ zero_zero_int @ B ) ) ) ) ).
% mult_less_0_iff
thf(fact_208_linordered__semiring__strict__class_Omult__neg__pos,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ A @ zero_zero_nat )
=> ( ( ord_less_nat @ zero_zero_nat @ B )
=> ( ord_less_nat @ ( times_times_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% linordered_semiring_strict_class.mult_neg_pos
thf(fact_209_linordered__semiring__strict__class_Omult__neg__pos,axiom,
! [A: int,B: int] :
( ( ord_less_int @ A @ zero_zero_int )
=> ( ( ord_less_int @ zero_zero_int @ B )
=> ( ord_less_int @ ( times_times_int @ A @ B ) @ zero_zero_int ) ) ) ).
% linordered_semiring_strict_class.mult_neg_pos
thf(fact_210_linordered__semiring__strict__class_Omult__pos__neg,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ B @ zero_zero_nat )
=> ( ord_less_nat @ ( times_times_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% linordered_semiring_strict_class.mult_pos_neg
thf(fact_211_linordered__semiring__strict__class_Omult__pos__neg,axiom,
! [A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ A )
=> ( ( ord_less_int @ B @ zero_zero_int )
=> ( ord_less_int @ ( times_times_int @ A @ B ) @ zero_zero_int ) ) ) ).
% linordered_semiring_strict_class.mult_pos_neg
thf(fact_212_linordered__semiring__strict__class_Omult__pos__pos,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ B )
=> ( ord_less_nat @ zero_zero_nat @ ( times_times_nat @ A @ B ) ) ) ) ).
% linordered_semiring_strict_class.mult_pos_pos
thf(fact_213_linordered__semiring__strict__class_Omult__pos__pos,axiom,
! [A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ A )
=> ( ( ord_less_int @ zero_zero_int @ B )
=> ( ord_less_int @ zero_zero_int @ ( times_times_int @ A @ B ) ) ) ) ).
% linordered_semiring_strict_class.mult_pos_pos
thf(fact_214_linordered__semiring__strict__class_Omult__pos__neg2,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ B @ zero_zero_nat )
=> ( ord_less_nat @ ( times_times_nat @ B @ A ) @ zero_zero_nat ) ) ) ).
% linordered_semiring_strict_class.mult_pos_neg2
thf(fact_215_linordered__semiring__strict__class_Omult__pos__neg2,axiom,
! [A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ A )
=> ( ( ord_less_int @ B @ zero_zero_int )
=> ( ord_less_int @ ( times_times_int @ B @ A ) @ zero_zero_int ) ) ) ).
% linordered_semiring_strict_class.mult_pos_neg2
thf(fact_216_zero__less__mult__iff,axiom,
! [A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ ( times_times_int @ A @ B ) )
= ( ( ( ord_less_int @ zero_zero_int @ A )
& ( ord_less_int @ zero_zero_int @ B ) )
| ( ( ord_less_int @ A @ zero_zero_int )
& ( ord_less_int @ B @ zero_zero_int ) ) ) ) ).
% zero_less_mult_iff
thf(fact_217_zero__less__mult__pos,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( times_times_nat @ A @ B ) )
=> ( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ord_less_nat @ zero_zero_nat @ B ) ) ) ).
% zero_less_mult_pos
thf(fact_218_zero__less__mult__pos,axiom,
! [A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ ( times_times_int @ A @ B ) )
=> ( ( ord_less_int @ zero_zero_int @ A )
=> ( ord_less_int @ zero_zero_int @ B ) ) ) ).
% zero_less_mult_pos
thf(fact_219_zero__less__mult__pos2,axiom,
! [B: nat,A: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( times_times_nat @ B @ A ) )
=> ( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ord_less_nat @ zero_zero_nat @ B ) ) ) ).
% zero_less_mult_pos2
thf(fact_220_zero__less__mult__pos2,axiom,
! [B: int,A: int] :
( ( ord_less_int @ zero_zero_int @ ( times_times_int @ B @ A ) )
=> ( ( ord_less_int @ zero_zero_int @ A )
=> ( ord_less_int @ zero_zero_int @ B ) ) ) ).
% zero_less_mult_pos2
thf(fact_221_mult__less__cancel__left__neg,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_int @ C @ zero_zero_int )
=> ( ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
= ( ord_less_int @ B @ A ) ) ) ).
% mult_less_cancel_left_neg
thf(fact_222_mult__less__cancel__left__pos,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ C )
=> ( ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
= ( ord_less_int @ A @ B ) ) ) ).
% mult_less_cancel_left_pos
thf(fact_223_mult__strict__left__mono__neg,axiom,
! [B: int,A: int,C: int] :
( ( ord_less_int @ B @ A )
=> ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) ) ) ) ).
% mult_strict_left_mono_neg
thf(fact_224_linordered__semiring__strict__class_Omult__strict__left__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ ( times_times_nat @ C @ A ) @ ( times_times_nat @ C @ B ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_left_mono
thf(fact_225_linordered__semiring__strict__class_Omult__strict__left__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_left_mono
thf(fact_226_mult__less__cancel__left__disj,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
= ( ( ( ord_less_int @ zero_zero_int @ C )
& ( ord_less_int @ A @ B ) )
| ( ( ord_less_int @ C @ zero_zero_int )
& ( ord_less_int @ B @ A ) ) ) ) ).
% mult_less_cancel_left_disj
thf(fact_227_mult__strict__right__mono__neg,axiom,
! [B: int,A: int,C: int] :
( ( ord_less_int @ B @ A )
=> ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) ) ) ) ).
% mult_strict_right_mono_neg
thf(fact_228_linordered__semiring__strict__class_Omult__strict__right__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ C ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_right_mono
thf(fact_229_linordered__semiring__strict__class_Omult__strict__right__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_right_mono
thf(fact_230_mult__less__cancel__right__disj,axiom,
! [A: int,C: int,B: int] :
( ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) )
= ( ( ( ord_less_int @ zero_zero_int @ C )
& ( ord_less_int @ A @ B ) )
| ( ( ord_less_int @ C @ zero_zero_int )
& ( ord_less_int @ B @ A ) ) ) ) ).
% mult_less_cancel_right_disj
thf(fact_231_linordered__comm__semiring__strict__class_Ocomm__mult__strict__left__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ ( times_times_nat @ C @ A ) @ ( times_times_nat @ C @ B ) ) ) ) ).
% linordered_comm_semiring_strict_class.comm_mult_strict_left_mono
thf(fact_232_linordered__comm__semiring__strict__class_Ocomm__mult__strict__left__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) ) ) ) ).
% linordered_comm_semiring_strict_class.comm_mult_strict_left_mono
thf(fact_233_of__nat__less__0__iff,axiom,
! [M: nat] :
~ ( ord_less_int @ ( semiri1314217659103216013at_int @ M ) @ zero_zero_int ) ).
% of_nat_less_0_iff
thf(fact_234_of__nat__less__0__iff,axiom,
! [M: nat] :
~ ( ord_less_nat @ ( semiri1316708129612266289at_nat @ M ) @ zero_zero_nat ) ).
% of_nat_less_0_iff
thf(fact_235_mult__less__mono2,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_nat @ I @ J )
=> ( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ord_less_nat @ ( times_times_nat @ K @ I ) @ ( times_times_nat @ K @ J ) ) ) ) ).
% mult_less_mono2
thf(fact_236_mult__less__mono1,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_nat @ I @ J )
=> ( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ord_less_nat @ ( times_times_nat @ I @ K ) @ ( times_times_nat @ J @ K ) ) ) ) ).
% mult_less_mono1
thf(fact_237_kyber__ntt_Ontt__coeffs__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G )
= ( map_na1928064127006292399ring_a @ ( nTT_ky9125537182568181474poly_a @ N @ Psi @ G ) @ ( upt @ zero_zero_nat @ N ) ) ) ) ).
% kyber_ntt.ntt_coeffs_def
thf(fact_238_kyber__ntt_Ontt__coeffs__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G )
= ( map_na1928064127006292399ring_a @ ( nTT_ky9125537182568181474poly_a @ N @ Psi @ G ) @ ( upt @ zero_zero_nat @ N ) ) ) ) ).
% kyber_ntt.ntt_coeffs_def
thf(fact_239_zero__reorient,axiom,
! [X: nat] :
( ( zero_zero_nat = X )
= ( X = zero_zero_nat ) ) ).
% zero_reorient
thf(fact_240_zero__reorient,axiom,
! [X: int] :
( ( zero_zero_int = X )
= ( X = zero_zero_int ) ) ).
% zero_reorient
thf(fact_241_zero__reorient,axiom,
! [X: finite_mod_ring_a] :
( ( zero_z7902377541816115708ring_a = X )
= ( X = zero_z7902377541816115708ring_a ) ) ).
% zero_reorient
thf(fact_242_ab__semigroup__mult__class_Omult__ac_I1_J,axiom,
! [A: kyber_qr_a,B: kyber_qr_a,C: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ ( times_2095635435063429214r_qr_a @ A @ B ) @ C )
= ( times_2095635435063429214r_qr_a @ A @ ( times_2095635435063429214r_qr_a @ B @ C ) ) ) ).
% ab_semigroup_mult_class.mult_ac(1)
thf(fact_243_ab__semigroup__mult__class_Omult__ac_I1_J,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ C )
= ( times_5121417576591743744ring_a @ A @ ( times_5121417576591743744ring_a @ B @ C ) ) ) ).
% ab_semigroup_mult_class.mult_ac(1)
thf(fact_244_ab__semigroup__mult__class_Omult__ac_I1_J,axiom,
! [A: nat,B: nat,C: nat] :
( ( times_times_nat @ ( times_times_nat @ A @ B ) @ C )
= ( times_times_nat @ A @ ( times_times_nat @ B @ C ) ) ) ).
% ab_semigroup_mult_class.mult_ac(1)
thf(fact_245_ab__semigroup__mult__class_Omult__ac_I1_J,axiom,
! [A: int,B: int,C: int] :
( ( times_times_int @ ( times_times_int @ A @ B ) @ C )
= ( times_times_int @ A @ ( times_times_int @ B @ C ) ) ) ).
% ab_semigroup_mult_class.mult_ac(1)
thf(fact_246_ab__semigroup__mult__class_Omult__ac_I1_J,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ C )
= ( times_3242606764180207630ring_a @ A @ ( times_3242606764180207630ring_a @ B @ C ) ) ) ).
% ab_semigroup_mult_class.mult_ac(1)
thf(fact_247_mult_Oassoc,axiom,
! [A: kyber_qr_a,B: kyber_qr_a,C: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ ( times_2095635435063429214r_qr_a @ A @ B ) @ C )
= ( times_2095635435063429214r_qr_a @ A @ ( times_2095635435063429214r_qr_a @ B @ C ) ) ) ).
% mult.assoc
thf(fact_248_mult_Oassoc,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ C )
= ( times_5121417576591743744ring_a @ A @ ( times_5121417576591743744ring_a @ B @ C ) ) ) ).
% mult.assoc
thf(fact_249_mult_Oassoc,axiom,
! [A: nat,B: nat,C: nat] :
( ( times_times_nat @ ( times_times_nat @ A @ B ) @ C )
= ( times_times_nat @ A @ ( times_times_nat @ B @ C ) ) ) ).
% mult.assoc
thf(fact_250_mult_Oassoc,axiom,
! [A: int,B: int,C: int] :
( ( times_times_int @ ( times_times_int @ A @ B ) @ C )
= ( times_times_int @ A @ ( times_times_int @ B @ C ) ) ) ).
% mult.assoc
thf(fact_251_mult_Oassoc,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ C )
= ( times_3242606764180207630ring_a @ A @ ( times_3242606764180207630ring_a @ B @ C ) ) ) ).
% mult.assoc
thf(fact_252_mult_Ocommute,axiom,
( times_2095635435063429214r_qr_a
= ( ^ [A2: kyber_qr_a,B2: kyber_qr_a] : ( times_2095635435063429214r_qr_a @ B2 @ A2 ) ) ) ).
% mult.commute
thf(fact_253_mult_Ocommute,axiom,
( times_5121417576591743744ring_a
= ( ^ [A2: finite_mod_ring_a,B2: finite_mod_ring_a] : ( times_5121417576591743744ring_a @ B2 @ A2 ) ) ) ).
% mult.commute
thf(fact_254_mult_Ocommute,axiom,
( times_times_nat
= ( ^ [A2: nat,B2: nat] : ( times_times_nat @ B2 @ A2 ) ) ) ).
% mult.commute
thf(fact_255_mult_Ocommute,axiom,
( times_times_int
= ( ^ [A2: int,B2: int] : ( times_times_int @ B2 @ A2 ) ) ) ).
% mult.commute
thf(fact_256_mult_Ocommute,axiom,
( times_3242606764180207630ring_a
= ( ^ [A2: poly_F3299452240248304339ring_a,B2: poly_F3299452240248304339ring_a] : ( times_3242606764180207630ring_a @ B2 @ A2 ) ) ) ).
% mult.commute
thf(fact_257_mult_Oleft__commute,axiom,
! [B: kyber_qr_a,A: kyber_qr_a,C: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ B @ ( times_2095635435063429214r_qr_a @ A @ C ) )
= ( times_2095635435063429214r_qr_a @ A @ ( times_2095635435063429214r_qr_a @ B @ C ) ) ) ).
% mult.left_commute
thf(fact_258_mult_Oleft__commute,axiom,
! [B: finite_mod_ring_a,A: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ B @ ( times_5121417576591743744ring_a @ A @ C ) )
= ( times_5121417576591743744ring_a @ A @ ( times_5121417576591743744ring_a @ B @ C ) ) ) ).
% mult.left_commute
thf(fact_259_mult_Oleft__commute,axiom,
! [B: nat,A: nat,C: nat] :
( ( times_times_nat @ B @ ( times_times_nat @ A @ C ) )
= ( times_times_nat @ A @ ( times_times_nat @ B @ C ) ) ) ).
% mult.left_commute
thf(fact_260_mult_Oleft__commute,axiom,
! [B: int,A: int,C: int] :
( ( times_times_int @ B @ ( times_times_int @ A @ C ) )
= ( times_times_int @ A @ ( times_times_int @ B @ C ) ) ) ).
% mult.left_commute
thf(fact_261_mult_Oleft__commute,axiom,
! [B: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ B @ ( times_3242606764180207630ring_a @ A @ C ) )
= ( times_3242606764180207630ring_a @ A @ ( times_3242606764180207630ring_a @ B @ C ) ) ) ).
% mult.left_commute
thf(fact_262_split__nat,axiom,
! [P4: nat > $o,I: int] :
( ( P4 @ ( nat2 @ I ) )
= ( ! [N2: nat] :
( ( I
= ( semiri1314217659103216013at_int @ N2 ) )
=> ( P4 @ N2 ) )
& ( ( ord_less_int @ I @ zero_zero_int )
=> ( P4 @ zero_zero_nat ) ) ) ) ).
% split_nat
thf(fact_263_nat__int__comparison_I1_J,axiom,
( ( ^ [Y: nat,Z: nat] : ( Y = Z ) )
= ( ^ [A2: nat,B2: nat] :
( ( semiri1314217659103216013at_int @ A2 )
= ( semiri1314217659103216013at_int @ B2 ) ) ) ) ).
% nat_int_comparison(1)
thf(fact_264_int__if,axiom,
! [P4: $o,A: nat,B: nat] :
( ( P4
=> ( ( semiri1314217659103216013at_int @ ( if_nat @ P4 @ A @ B ) )
= ( semiri1314217659103216013at_int @ A ) ) )
& ( ~ P4
=> ( ( semiri1314217659103216013at_int @ ( if_nat @ P4 @ A @ B ) )
= ( semiri1314217659103216013at_int @ B ) ) ) ) ).
% int_if
thf(fact_265_list_Omap__ident,axiom,
! [T: list_F4626807571770296779ring_a] :
( ( map_Fi7082711781076630404ring_a
@ ^ [X2: finite_mod_ring_a] : X2
@ T )
= T ) ).
% list.map_ident
thf(fact_266_list_Omap__ident,axiom,
! [T: list_nat] :
( ( map_nat_nat
@ ^ [X2: nat] : X2
@ T )
= T ) ).
% list.map_ident
thf(fact_267_kyber__ntt_Omap2__poly__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a,P1: poly_F3299452240248304339ring_a,P2: poly_F3299452240248304339ring_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_ky7627831880102416151poly_a @ N @ F @ P1 @ P2 )
= ( poly_F5739129160929385880ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ F ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ P1 ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ P2 ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) ) ) ) ) ) ).
% kyber_ntt.map2_poly_def
thf(fact_268_kyber__ntt_Omap2__poly__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a,P1: poly_F3299452240248304339ring_a,P2: poly_F3299452240248304339ring_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_ky7627831880102416151poly_a @ N @ F @ P1 @ P2 )
= ( poly_F5739129160929385880ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ F ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ P1 ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ P2 ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) ) ) ) ) ) ).
% kyber_ntt.map2_poly_def
thf(fact_269_kyber__ntt_Onth__default__ntt__coeff__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a,I: nat] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) @ I )
= ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ times_5121417576591743744ring_a ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) ) ) @ I ) ) ) ).
% kyber_ntt.nth_default_ntt_coeff_mult
thf(fact_270_kyber__ntt_Onth__default__ntt__coeff__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a,I: nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) @ I )
= ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ times_5121417576591743744ring_a ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ N ) ) ) ) ) ) @ I ) ) ) ).
% kyber_ntt.nth_default_ntt_coeff_mult
thf(fact_271_int__ops_I1_J,axiom,
( ( semiri1314217659103216013at_int @ zero_zero_nat )
= zero_zero_int ) ).
% int_ops(1)
thf(fact_272_coeff__take__deg,axiom,
! [I: nat,F: poly_F3299452240248304339ring_a] :
( ( ord_less_nat @ I @ n )
=> ( ( coeff_1607515655354303335ring_a @ ( nTT_ky3493641264504450921ring_a @ n @ F ) @ I )
= ( coeff_1607515655354303335ring_a @ F @ I ) ) ) ).
% coeff_take_deg
thf(fact_273_kyber__ntt_Ok__bound,axiom,
ord_less_nat @ zero_zero_nat @ ( nat2 @ mult_factor ) ).
% kyber_ntt.k_bound
thf(fact_274_nat__mult__less__cancel__disj,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_nat @ ( times_times_nat @ K @ M ) @ ( times_times_nat @ K @ N ) )
= ( ( ord_less_nat @ zero_zero_nat @ K )
& ( ord_less_nat @ M @ N ) ) ) ).
% nat_mult_less_cancel_disj
thf(fact_275_mod__mult__self1__is__0,axiom,
! [B: finite_mod_ring_a,A: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ B @ A ) @ B )
= zero_z7902377541816115708ring_a ) ).
% mod_mult_self1_is_0
thf(fact_276_mod__mult__self1__is__0,axiom,
! [B: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ B @ A ) @ B )
= zero_z1830546546923837194ring_a ) ).
% mod_mult_self1_is_0
thf(fact_277_mod__mult__self1__is__0,axiom,
! [B: nat,A: nat] :
( ( modulo_modulo_nat @ ( times_times_nat @ B @ A ) @ B )
= zero_zero_nat ) ).
% mod_mult_self1_is_0
thf(fact_278_mod__mult__self1__is__0,axiom,
! [B: int,A: int] :
( ( modulo_modulo_int @ ( times_times_int @ B @ A ) @ B )
= zero_zero_int ) ).
% mod_mult_self1_is_0
thf(fact_279_mod__mult__self2__is__0,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ B )
= zero_z7902377541816115708ring_a ) ).
% mod_mult_self2_is_0
thf(fact_280_mod__mult__self2__is__0,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ B )
= zero_z1830546546923837194ring_a ) ).
% mod_mult_self2_is_0
thf(fact_281_mod__mult__self2__is__0,axiom,
! [A: nat,B: nat] :
( ( modulo_modulo_nat @ ( times_times_nat @ A @ B ) @ B )
= zero_zero_nat ) ).
% mod_mult_self2_is_0
thf(fact_282_mod__mult__self2__is__0,axiom,
! [A: int,B: int] :
( ( modulo_modulo_int @ ( times_times_int @ A @ B ) @ B )
= zero_zero_int ) ).
% mod_mult_self2_is_0
thf(fact_283_to__qr__mult,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( kyber_to_qr_a @ ( times_3242606764180207630ring_a @ P @ Q ) )
= ( times_2095635435063429214r_qr_a @ ( kyber_to_qr_a @ P ) @ ( kyber_to_qr_a @ Q ) ) ) ).
% to_qr_mult
thf(fact_284_ntt__coeffs__mult,axiom,
! [I: nat,F: kyber_qr_a,G: kyber_qr_a] :
( ( ord_less_nat @ I @ n )
=> ( ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) @ I )
= ( times_5121417576591743744ring_a @ ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ F ) @ I ) @ ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ G ) @ I ) ) ) ) ).
% ntt_coeffs_mult
thf(fact_285_degree__Poly__ntt__coeffs,axiom,
! [F: kyber_qr_a] : ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ F ) ) ) @ n ) ).
% degree_Poly_ntt_coeffs
thf(fact_286_bits__mod__0,axiom,
! [A: nat] :
( ( modulo_modulo_nat @ zero_zero_nat @ A )
= zero_zero_nat ) ).
% bits_mod_0
thf(fact_287_bits__mod__0,axiom,
! [A: int] :
( ( modulo_modulo_int @ zero_zero_int @ A )
= zero_zero_int ) ).
% bits_mod_0
thf(fact_288_Poly__map__coeff,axiom,
! [F: poly_nat,Num: nat] :
( ( ord_less_nat @ ( degree_nat @ F ) @ Num )
=> ( ( poly_nat2 @ ( map_nat_nat @ ( coeff_nat @ F ) @ ( upt @ zero_zero_nat @ Num ) ) )
= F ) ) ).
% Poly_map_coeff
thf(fact_289_Poly__map__coeff,axiom,
! [F: poly_F3299452240248304339ring_a,Num: nat] :
( ( ord_less_nat @ ( degree4881254707062955960ring_a @ F ) @ Num )
=> ( ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ F ) @ ( upt @ zero_zero_nat @ Num ) ) )
= F ) ) ).
% Poly_map_coeff
thf(fact_290_coeff__Poly,axiom,
! [Xs: list_nat,I: nat] :
( ( coeff_nat @ ( poly_nat2 @ Xs ) @ I )
= ( more_nth_default_nat @ zero_zero_nat @ Xs @ I ) ) ).
% coeff_Poly
thf(fact_291_coeff__Poly,axiom,
! [Xs: list_int,I: nat] :
( ( coeff_int @ ( poly_int2 @ Xs ) @ I )
= ( more_nth_default_int @ zero_zero_int @ Xs @ I ) ) ).
% coeff_Poly
thf(fact_292_coeff__Poly,axiom,
! [Xs: list_F4626807571770296779ring_a,I: nat] :
( ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ Xs ) @ I )
= ( more_n3412881383938893606ring_a @ zero_z7902377541816115708ring_a @ Xs @ I ) ) ).
% coeff_Poly
thf(fact_293_mod__less,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ M @ N )
=> ( ( modulo_modulo_nat @ M @ N )
= M ) ) ).
% mod_less
thf(fact_294_mod__mod__trivial,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( modulo2591651872109920577ring_a @ A @ B ) @ B )
= ( modulo2591651872109920577ring_a @ A @ B ) ) ).
% mod_mod_trivial
thf(fact_295_mod__mod__trivial,axiom,
! [A: nat,B: nat] :
( ( modulo_modulo_nat @ ( modulo_modulo_nat @ A @ B ) @ B )
= ( modulo_modulo_nat @ A @ B ) ) ).
% mod_mod_trivial
thf(fact_296_mod__mod__trivial,axiom,
! [A: int,B: int] :
( ( modulo_modulo_int @ ( modulo_modulo_int @ A @ B ) @ B )
= ( modulo_modulo_int @ A @ B ) ) ).
% mod_mod_trivial
thf(fact_297_degree__take__n,axiom,
! [F: poly_F3299452240248304339ring_a] : ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( nTT_ky3493641264504450921ring_a @ n @ F ) ) @ n ) ).
% degree_take_n
thf(fact_298_to__qr__of__nat,axiom,
! [N: nat] :
( ( kyber_to_qr_a @ ( semiri8000969770135892146ring_a @ N ) )
= ( semiri7313030098341262522r_qr_a @ N ) ) ).
% to_qr_of_nat
thf(fact_299_to__qr__0,axiom,
( ( kyber_to_qr_a @ zero_z1830546546923837194ring_a )
= zero_zero_Kyber_qr_a ) ).
% to_qr_0
thf(fact_300_degree__of__nat,axiom,
! [N: nat] :
( ( degree4881254707062955960ring_a @ ( semiri8000969770135892146ring_a @ N ) )
= zero_zero_nat ) ).
% degree_of_nat
thf(fact_301_degree__0,axiom,
( ( degree4881254707062955960ring_a @ zero_z1830546546923837194ring_a )
= zero_zero_nat ) ).
% degree_0
thf(fact_302_lead__coeff__of__nat,axiom,
! [N: nat] :
( ( coeff_int @ ( semiri6323754628967941525ly_int @ N ) @ ( degree_int @ ( semiri6323754628967941525ly_int @ N ) ) )
= ( semiri1314217659103216013at_int @ N ) ) ).
% lead_coeff_of_nat
thf(fact_303_lead__coeff__of__nat,axiom,
! [N: nat] :
( ( coeff_1607515655354303335ring_a @ ( semiri8000969770135892146ring_a @ N ) @ ( degree4881254707062955960ring_a @ ( semiri8000969770135892146ring_a @ N ) ) )
= ( semiri9180929696517417892ring_a @ N ) ) ).
% lead_coeff_of_nat
thf(fact_304_lead__coeff__of__nat,axiom,
! [N: nat] :
( ( coeff_nat @ ( semiri1278233611622362425ly_nat @ N ) @ ( degree_nat @ ( semiri1278233611622362425ly_nat @ N ) ) )
= ( semiri1316708129612266289at_nat @ N ) ) ).
% lead_coeff_of_nat
thf(fact_305_leading__coeff__0__iff,axiom,
! [P: poly_nat] :
( ( ( coeff_nat @ P @ ( degree_nat @ P ) )
= zero_zero_nat )
= ( P = zero_zero_poly_nat ) ) ).
% leading_coeff_0_iff
thf(fact_306_leading__coeff__0__iff,axiom,
! [P: poly_int] :
( ( ( coeff_int @ P @ ( degree_int @ P ) )
= zero_zero_int )
= ( P = zero_zero_poly_int ) ) ).
% leading_coeff_0_iff
thf(fact_307_leading__coeff__0__iff,axiom,
! [P: poly_F3299452240248304339ring_a] :
( ( ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) )
= zero_z7902377541816115708ring_a )
= ( P = zero_z1830546546923837194ring_a ) ) ).
% leading_coeff_0_iff
thf(fact_308_zmod__int,axiom,
! [M: nat,N: nat] :
( ( semiri1314217659103216013at_int @ ( modulo_modulo_nat @ M @ N ) )
= ( modulo_modulo_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) ) ) ).
% zmod_int
thf(fact_309_int__ops_I9_J,axiom,
! [A: nat,B: nat] :
( ( semiri1314217659103216013at_int @ ( modulo_modulo_nat @ A @ B ) )
= ( modulo_modulo_int @ ( semiri1314217659103216013at_int @ A ) @ ( semiri1314217659103216013at_int @ B ) ) ) ).
% int_ops(9)
thf(fact_310_degree__qr__poly,axiom,
( ( degree4881254707062955960ring_a @ kyber_qr_poly_a )
= ( kyber_5808863167042391122g_qr_a @ type_a ) ) ).
% degree_qr_poly
thf(fact_311_nat__mod__as__int,axiom,
( modulo_modulo_nat
= ( ^ [A2: nat,B2: nat] : ( nat2 @ ( modulo_modulo_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ) ).
% nat_mod_as_int
thf(fact_312_mod__less__divisor,axiom,
! [N: nat,M: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_nat @ ( modulo_modulo_nat @ M @ N ) @ N ) ) ).
% mod_less_divisor
thf(fact_313_Euclidean__Division_Opos__mod__bound,axiom,
! [L: int,K: int] :
( ( ord_less_int @ zero_zero_int @ L )
=> ( ord_less_int @ ( modulo_modulo_int @ K @ L ) @ L ) ) ).
% Euclidean_Division.pos_mod_bound
thf(fact_314_neg__mod__bound,axiom,
! [L: int,K: int] :
( ( ord_less_int @ L @ zero_zero_int )
=> ( ord_less_int @ L @ ( modulo_modulo_int @ K @ L ) ) ) ).
% neg_mod_bound
thf(fact_315_deg__mod__qr__poly,axiom,
! [X: poly_F3299452240248304339ring_a] :
( ( ord_less_nat @ ( degree4881254707062955960ring_a @ X ) @ ( kyber_5808863167042391122g_qr_a @ type_a ) )
=> ( ( modulo2591651872109920577ring_a @ X @ kyber_qr_poly_a )
= X ) ) ).
% deg_mod_qr_poly
thf(fact_316_mod__poly__less,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a] :
( ( ord_less_nat @ ( degree4881254707062955960ring_a @ X ) @ ( degree4881254707062955960ring_a @ Y2 ) )
=> ( ( modulo2591651872109920577ring_a @ X @ Y2 )
= X ) ) ).
% mod_poly_less
thf(fact_317_kyber__ntt_Odegree__take__n,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: poly_F3299452240248304339ring_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( nTT_ky3493641264504450921ring_a @ N @ F ) ) @ N ) ) ).
% kyber_ntt.degree_take_n
thf(fact_318_less__degree__imp,axiom,
! [N: nat,P: poly_nat] :
( ( ord_less_nat @ N @ ( degree_nat @ P ) )
=> ? [I2: nat] :
( ( ord_less_nat @ N @ I2 )
& ( ( coeff_nat @ P @ I2 )
!= zero_zero_nat ) ) ) ).
% less_degree_imp
thf(fact_319_less__degree__imp,axiom,
! [N: nat,P: poly_int] :
( ( ord_less_nat @ N @ ( degree_int @ P ) )
=> ? [I2: nat] :
( ( ord_less_nat @ N @ I2 )
& ( ( coeff_int @ P @ I2 )
!= zero_zero_int ) ) ) ).
% less_degree_imp
thf(fact_320_less__degree__imp,axiom,
! [N: nat,P: poly_F3299452240248304339ring_a] :
( ( ord_less_nat @ N @ ( degree4881254707062955960ring_a @ P ) )
=> ? [I2: nat] :
( ( ord_less_nat @ N @ I2 )
& ( ( coeff_1607515655354303335ring_a @ P @ I2 )
!= zero_z7902377541816115708ring_a ) ) ) ).
% less_degree_imp
thf(fact_321_coeff__eq__0,axiom,
! [P: poly_nat,N: nat] :
( ( ord_less_nat @ ( degree_nat @ P ) @ N )
=> ( ( coeff_nat @ P @ N )
= zero_zero_nat ) ) ).
% coeff_eq_0
thf(fact_322_coeff__eq__0,axiom,
! [P: poly_int,N: nat] :
( ( ord_less_nat @ ( degree_int @ P ) @ N )
=> ( ( coeff_int @ P @ N )
= zero_zero_int ) ) ).
% coeff_eq_0
thf(fact_323_coeff__eq__0,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( ord_less_nat @ ( degree4881254707062955960ring_a @ P ) @ N )
=> ( ( coeff_1607515655354303335ring_a @ P @ N )
= zero_z7902377541816115708ring_a ) ) ).
% coeff_eq_0
thf(fact_324_leading__coeff__neq__0,axiom,
! [P: poly_nat] :
( ( P != zero_zero_poly_nat )
=> ( ( coeff_nat @ P @ ( degree_nat @ P ) )
!= zero_zero_nat ) ) ).
% leading_coeff_neq_0
thf(fact_325_leading__coeff__neq__0,axiom,
! [P: poly_int] :
( ( P != zero_zero_poly_int )
=> ( ( coeff_int @ P @ ( degree_int @ P ) )
!= zero_zero_int ) ) ).
% leading_coeff_neq_0
thf(fact_326_leading__coeff__neq__0,axiom,
! [P: poly_F3299452240248304339ring_a] :
( ( P != zero_z1830546546923837194ring_a )
=> ( ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) )
!= zero_z7902377541816115708ring_a ) ) ).
% leading_coeff_neq_0
thf(fact_327_coeff__degree__mult,axiom,
! [P: poly_nat,Q: poly_nat] :
( ( coeff_nat @ ( times_times_poly_nat @ P @ Q ) @ ( degree_nat @ ( times_times_poly_nat @ P @ Q ) ) )
= ( times_times_nat @ ( coeff_nat @ Q @ ( degree_nat @ Q ) ) @ ( coeff_nat @ P @ ( degree_nat @ P ) ) ) ) ).
% coeff_degree_mult
thf(fact_328_coeff__degree__mult,axiom,
! [P: poly_int,Q: poly_int] :
( ( coeff_int @ ( times_times_poly_int @ P @ Q ) @ ( degree_int @ ( times_times_poly_int @ P @ Q ) ) )
= ( times_times_int @ ( coeff_int @ Q @ ( degree_int @ Q ) ) @ ( coeff_int @ P @ ( degree_int @ P ) ) ) ) ).
% coeff_degree_mult
thf(fact_329_coeff__degree__mult,axiom,
! [P: poly_p2573953413498894561ring_a,Q: poly_p2573953413498894561ring_a] :
( ( coeff_7919988552178873973ring_a @ ( times_7678616233722469404ring_a @ P @ Q ) @ ( degree617341119394917574ring_a @ ( times_7678616233722469404ring_a @ P @ Q ) ) )
= ( times_3242606764180207630ring_a @ ( coeff_7919988552178873973ring_a @ Q @ ( degree617341119394917574ring_a @ Q ) ) @ ( coeff_7919988552178873973ring_a @ P @ ( degree617341119394917574ring_a @ P ) ) ) ) ).
% coeff_degree_mult
thf(fact_330_coeff__degree__mult,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( coeff_1607515655354303335ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) @ ( degree4881254707062955960ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) ) )
= ( times_5121417576591743744ring_a @ ( coeff_1607515655354303335ring_a @ Q @ ( degree4881254707062955960ring_a @ Q ) ) @ ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) ) ) ) ).
% coeff_degree_mult
thf(fact_331_lead__coeff__mult,axiom,
! [P: poly_nat,Q: poly_nat] :
( ( coeff_nat @ ( times_times_poly_nat @ P @ Q ) @ ( degree_nat @ ( times_times_poly_nat @ P @ Q ) ) )
= ( times_times_nat @ ( coeff_nat @ P @ ( degree_nat @ P ) ) @ ( coeff_nat @ Q @ ( degree_nat @ Q ) ) ) ) ).
% lead_coeff_mult
thf(fact_332_lead__coeff__mult,axiom,
! [P: poly_int,Q: poly_int] :
( ( coeff_int @ ( times_times_poly_int @ P @ Q ) @ ( degree_int @ ( times_times_poly_int @ P @ Q ) ) )
= ( times_times_int @ ( coeff_int @ P @ ( degree_int @ P ) ) @ ( coeff_int @ Q @ ( degree_int @ Q ) ) ) ) ).
% lead_coeff_mult
thf(fact_333_lead__coeff__mult,axiom,
! [P: poly_p2573953413498894561ring_a,Q: poly_p2573953413498894561ring_a] :
( ( coeff_7919988552178873973ring_a @ ( times_7678616233722469404ring_a @ P @ Q ) @ ( degree617341119394917574ring_a @ ( times_7678616233722469404ring_a @ P @ Q ) ) )
= ( times_3242606764180207630ring_a @ ( coeff_7919988552178873973ring_a @ P @ ( degree617341119394917574ring_a @ P ) ) @ ( coeff_7919988552178873973ring_a @ Q @ ( degree617341119394917574ring_a @ Q ) ) ) ) ).
% lead_coeff_mult
thf(fact_334_lead__coeff__mult,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( coeff_1607515655354303335ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) @ ( degree4881254707062955960ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) ) )
= ( times_5121417576591743744ring_a @ ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) ) @ ( coeff_1607515655354303335ring_a @ Q @ ( degree4881254707062955960ring_a @ Q ) ) ) ) ).
% lead_coeff_mult
thf(fact_335_degree__mult__eq__0,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( ( degree4881254707062955960ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) )
= zero_zero_nat )
= ( ( P = zero_z1830546546923837194ring_a )
| ( Q = zero_z1830546546923837194ring_a )
| ( ( P != zero_z1830546546923837194ring_a )
& ( Q != zero_z1830546546923837194ring_a )
& ( ( degree4881254707062955960ring_a @ P )
= zero_zero_nat )
& ( ( degree4881254707062955960ring_a @ Q )
= zero_zero_nat ) ) ) ) ).
% degree_mult_eq_0
thf(fact_336_degree__mod__less_H,axiom,
! [B: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a] :
( ( B != zero_z1830546546923837194ring_a )
=> ( ( ( modulo2591651872109920577ring_a @ A @ B )
!= zero_z1830546546923837194ring_a )
=> ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( modulo2591651872109920577ring_a @ A @ B ) ) @ ( degree4881254707062955960ring_a @ B ) ) ) ) ).
% degree_mod_less'
thf(fact_337_degree__mod__less,axiom,
! [Y2: poly_F3299452240248304339ring_a,X: poly_F3299452240248304339ring_a] :
( ( Y2 != zero_z1830546546923837194ring_a )
=> ( ( ( modulo2591651872109920577ring_a @ X @ Y2 )
= zero_z1830546546923837194ring_a )
| ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( modulo2591651872109920577ring_a @ X @ Y2 ) ) @ ( degree4881254707062955960ring_a @ Y2 ) ) ) ) ).
% degree_mod_less
thf(fact_338_deg__qr__pos,axiom,
ord_less_nat @ zero_zero_nat @ ( kyber_5808863167042391122g_qr_a @ type_a ) ).
% deg_qr_pos
thf(fact_339_eq__to__qr,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a] :
( ( X = Y2 )
=> ( ( kyber_to_qr_a @ X )
= ( kyber_to_qr_a @ Y2 ) ) ) ).
% eq_to_qr
thf(fact_340_qr__poly__nz,axiom,
kyber_qr_poly_a != zero_z1830546546923837194ring_a ).
% qr_poly_nz
thf(fact_341_kyber__ntt_Odegree__Poly__ntt__coeffs,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) @ N ) ) ).
% kyber_ntt.degree_Poly_ntt_coeffs
thf(fact_342_kyber__ntt_Odegree__Poly__ntt__coeffs,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) ) @ N ) ) ).
% kyber_ntt.degree_Poly_ntt_coeffs
thf(fact_343_kyber__ntt_Ontt__coeffs__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ I @ N )
=> ( ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) @ I )
= ( times_5121417576591743744ring_a @ ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) @ I ) @ ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) @ I ) ) ) ) ) ).
% kyber_ntt.ntt_coeffs_mult
thf(fact_344_kyber__ntt_Ontt__coeffs__mult,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ I @ N )
=> ( ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ ( times_2095635435063429214r_qr_a @ F @ G ) ) @ I )
= ( times_5121417576591743744ring_a @ ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) @ I ) @ ( nth_Fi694352073394265932ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ G ) @ I ) ) ) ) ) ).
% kyber_ntt.ntt_coeffs_mult
thf(fact_345_mod__mult__right__eq,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A @ ( modulo8308552932176287283ring_a @ B @ C ) ) @ C )
= ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ C ) ) ).
% mod_mult_right_eq
thf(fact_346_mod__mult__right__eq,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A @ ( modulo2591651872109920577ring_a @ B @ C ) ) @ C )
= ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ C ) ) ).
% mod_mult_right_eq
thf(fact_347_mod__mult__right__eq,axiom,
! [A: nat,B: nat,C: nat] :
( ( modulo_modulo_nat @ ( times_times_nat @ A @ ( modulo_modulo_nat @ B @ C ) ) @ C )
= ( modulo_modulo_nat @ ( times_times_nat @ A @ B ) @ C ) ) ).
% mod_mult_right_eq
thf(fact_348_mod__mult__right__eq,axiom,
! [A: int,B: int,C: int] :
( ( modulo_modulo_int @ ( times_times_int @ A @ ( modulo_modulo_int @ B @ C ) ) @ C )
= ( modulo_modulo_int @ ( times_times_int @ A @ B ) @ C ) ) ).
% mod_mult_right_eq
thf(fact_349_mod__mult__left__eq,axiom,
! [A: finite_mod_ring_a,C: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ ( modulo8308552932176287283ring_a @ A @ C ) @ B ) @ C )
= ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ C ) ) ).
% mod_mult_left_eq
thf(fact_350_mod__mult__left__eq,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ ( modulo2591651872109920577ring_a @ A @ C ) @ B ) @ C )
= ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ C ) ) ).
% mod_mult_left_eq
thf(fact_351_mod__mult__left__eq,axiom,
! [A: nat,C: nat,B: nat] :
( ( modulo_modulo_nat @ ( times_times_nat @ ( modulo_modulo_nat @ A @ C ) @ B ) @ C )
= ( modulo_modulo_nat @ ( times_times_nat @ A @ B ) @ C ) ) ).
% mod_mult_left_eq
thf(fact_352_mod__mult__left__eq,axiom,
! [A: int,C: int,B: int] :
( ( modulo_modulo_int @ ( times_times_int @ ( modulo_modulo_int @ A @ C ) @ B ) @ C )
= ( modulo_modulo_int @ ( times_times_int @ A @ B ) @ C ) ) ).
% mod_mult_left_eq
thf(fact_353_mult__mod__right,axiom,
! [C: finite_mod_ring_a,A: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ C @ ( modulo8308552932176287283ring_a @ A @ B ) )
= ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ C @ A ) @ ( times_5121417576591743744ring_a @ C @ B ) ) ) ).
% mult_mod_right
thf(fact_354_mult__mod__right,axiom,
! [C: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ C @ ( modulo2591651872109920577ring_a @ A @ B ) )
= ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ C @ A ) @ ( times_3242606764180207630ring_a @ C @ B ) ) ) ).
% mult_mod_right
thf(fact_355_mult__mod__right,axiom,
! [C: nat,A: nat,B: nat] :
( ( times_times_nat @ C @ ( modulo_modulo_nat @ A @ B ) )
= ( modulo_modulo_nat @ ( times_times_nat @ C @ A ) @ ( times_times_nat @ C @ B ) ) ) ).
% mult_mod_right
thf(fact_356_mult__mod__right,axiom,
! [C: int,A: int,B: int] :
( ( times_times_int @ C @ ( modulo_modulo_int @ A @ B ) )
= ( modulo_modulo_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) ) ) ).
% mult_mod_right
thf(fact_357_mod__mult__mult2,axiom,
! [A: finite_mod_ring_a,C: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A @ C ) @ ( times_5121417576591743744ring_a @ B @ C ) )
= ( times_5121417576591743744ring_a @ ( modulo8308552932176287283ring_a @ A @ B ) @ C ) ) ).
% mod_mult_mult2
thf(fact_358_mod__mult__mult2,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A @ C ) @ ( times_3242606764180207630ring_a @ B @ C ) )
= ( times_3242606764180207630ring_a @ ( modulo2591651872109920577ring_a @ A @ B ) @ C ) ) ).
% mod_mult_mult2
thf(fact_359_mod__mult__mult2,axiom,
! [A: nat,C: nat,B: nat] :
( ( modulo_modulo_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ C ) )
= ( times_times_nat @ ( modulo_modulo_nat @ A @ B ) @ C ) ) ).
% mod_mult_mult2
thf(fact_360_mod__mult__mult2,axiom,
! [A: int,C: int,B: int] :
( ( modulo_modulo_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) )
= ( times_times_int @ ( modulo_modulo_int @ A @ B ) @ C ) ) ).
% mod_mult_mult2
thf(fact_361_mod__mult__cong,axiom,
! [A: finite_mod_ring_a,C: finite_mod_ring_a,A3: finite_mod_ring_a,B: finite_mod_ring_a,B3: finite_mod_ring_a] :
( ( ( modulo8308552932176287283ring_a @ A @ C )
= ( modulo8308552932176287283ring_a @ A3 @ C ) )
=> ( ( ( modulo8308552932176287283ring_a @ B @ C )
= ( modulo8308552932176287283ring_a @ B3 @ C ) )
=> ( ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ C )
= ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A3 @ B3 ) @ C ) ) ) ) ).
% mod_mult_cong
thf(fact_362_mod__mult__cong,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,A3: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,B3: poly_F3299452240248304339ring_a] :
( ( ( modulo2591651872109920577ring_a @ A @ C )
= ( modulo2591651872109920577ring_a @ A3 @ C ) )
=> ( ( ( modulo2591651872109920577ring_a @ B @ C )
= ( modulo2591651872109920577ring_a @ B3 @ C ) )
=> ( ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ C )
= ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A3 @ B3 ) @ C ) ) ) ) ).
% mod_mult_cong
thf(fact_363_mod__mult__cong,axiom,
! [A: nat,C: nat,A3: nat,B: nat,B3: nat] :
( ( ( modulo_modulo_nat @ A @ C )
= ( modulo_modulo_nat @ A3 @ C ) )
=> ( ( ( modulo_modulo_nat @ B @ C )
= ( modulo_modulo_nat @ B3 @ C ) )
=> ( ( modulo_modulo_nat @ ( times_times_nat @ A @ B ) @ C )
= ( modulo_modulo_nat @ ( times_times_nat @ A3 @ B3 ) @ C ) ) ) ) ).
% mod_mult_cong
thf(fact_364_mod__mult__cong,axiom,
! [A: int,C: int,A3: int,B: int,B3: int] :
( ( ( modulo_modulo_int @ A @ C )
= ( modulo_modulo_int @ A3 @ C ) )
=> ( ( ( modulo_modulo_int @ B @ C )
= ( modulo_modulo_int @ B3 @ C ) )
=> ( ( modulo_modulo_int @ ( times_times_int @ A @ B ) @ C )
= ( modulo_modulo_int @ ( times_times_int @ A3 @ B3 ) @ C ) ) ) ) ).
% mod_mult_cong
thf(fact_365_mod__mult__eq,axiom,
! [A: finite_mod_ring_a,C: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ ( modulo8308552932176287283ring_a @ A @ C ) @ ( modulo8308552932176287283ring_a @ B @ C ) ) @ C )
= ( modulo8308552932176287283ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ C ) ) ).
% mod_mult_eq
thf(fact_366_mod__mult__eq,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ ( modulo2591651872109920577ring_a @ A @ C ) @ ( modulo2591651872109920577ring_a @ B @ C ) ) @ C )
= ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ C ) ) ).
% mod_mult_eq
thf(fact_367_mod__mult__eq,axiom,
! [A: nat,C: nat,B: nat] :
( ( modulo_modulo_nat @ ( times_times_nat @ ( modulo_modulo_nat @ A @ C ) @ ( modulo_modulo_nat @ B @ C ) ) @ C )
= ( modulo_modulo_nat @ ( times_times_nat @ A @ B ) @ C ) ) ).
% mod_mult_eq
thf(fact_368_mod__mult__eq,axiom,
! [A: int,C: int,B: int] :
( ( modulo_modulo_int @ ( times_times_int @ ( modulo_modulo_int @ A @ C ) @ ( modulo_modulo_int @ B @ C ) ) @ C )
= ( modulo_modulo_int @ ( times_times_int @ A @ B ) @ C ) ) ).
% mod_mult_eq
thf(fact_369_nat__mult__eq__cancel__disj,axiom,
! [K: nat,M: nat,N: nat] :
( ( ( times_times_nat @ K @ M )
= ( times_times_nat @ K @ N ) )
= ( ( K = zero_zero_nat )
| ( M = N ) ) ) ).
% nat_mult_eq_cancel_disj
thf(fact_370_kyber__ntt_OPoly__map__coeff,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: poly_nat,Num: nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ ( degree_nat @ F ) @ Num )
=> ( ( poly_nat2 @ ( map_nat_nat @ ( coeff_nat @ F ) @ ( upt @ zero_zero_nat @ Num ) ) )
= F ) ) ) ).
% kyber_ntt.Poly_map_coeff
thf(fact_371_kyber__ntt_OPoly__map__coeff,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: poly_F3299452240248304339ring_a,Num: nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ ( degree4881254707062955960ring_a @ F ) @ Num )
=> ( ( poly_F5739129160929385880ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ F ) @ ( upt @ zero_zero_nat @ Num ) ) )
= F ) ) ) ).
% kyber_ntt.Poly_map_coeff
thf(fact_372_kyber__ntt_Ocoeff__take__deg,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,F: poly_F3299452240248304339ring_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ I @ N )
=> ( ( coeff_1607515655354303335ring_a @ ( nTT_ky3493641264504450921ring_a @ N @ F ) @ I )
= ( coeff_1607515655354303335ring_a @ F @ I ) ) ) ) ).
% kyber_ntt.coeff_take_deg
thf(fact_373_kyber__ntt_Ocoeff__take__deg,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,F: poly_F3299452240248304339ring_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_nat @ I @ N )
=> ( ( coeff_1607515655354303335ring_a @ ( nTT_ky3493641264504450921ring_a @ N @ F ) @ I )
= ( coeff_1607515655354303335ring_a @ F @ I ) ) ) ) ).
% kyber_ntt.coeff_take_deg
thf(fact_374_nat__mult__eq__cancel1,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ( ( times_times_nat @ K @ M )
= ( times_times_nat @ K @ N ) )
= ( M = N ) ) ) ).
% nat_mult_eq_cancel1
thf(fact_375_nat__mult__less__cancel1,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ( ord_less_nat @ ( times_times_nat @ K @ M ) @ ( times_times_nat @ K @ N ) )
= ( ord_less_nat @ M @ N ) ) ) ).
% nat_mult_less_cancel1
thf(fact_376_negacycl__conv__mod__qr__poly,axiom,
! [F: kyber_qr_a,G: kyber_qr_a] :
( ( modulo2591651872109920577ring_a @ ( kyber_of_qr_a @ ( nTT_ky7844408764402957685conv_a @ n @ F @ G ) ) @ kyber_qr_poly_a )
= ( kyber_of_qr_a @ ( nTT_ky7844408764402957685conv_a @ n @ F @ G ) ) ) ).
% negacycl_conv_mod_qr_poly
thf(fact_377_n__gt__1,axiom,
ord_less_int @ one_one_int @ ( semiri1314217659103216013at_int @ n ) ).
% n_gt_1
thf(fact_378_of__qr__mult,axiom,
! [A: kyber_qr_a,B: kyber_qr_a] :
( ( kyber_of_qr_a @ ( times_2095635435063429214r_qr_a @ A @ B ) )
= ( modulo2591651872109920577ring_a @ ( times_3242606764180207630ring_a @ ( kyber_of_qr_a @ A ) @ ( kyber_of_qr_a @ B ) ) @ kyber_qr_poly_a ) ) ).
% of_qr_mult
thf(fact_379_mult__less__iff1,axiom,
! [Z2: int,X: int,Y2: int] :
( ( ord_less_int @ zero_zero_int @ Z2 )
=> ( ( ord_less_int @ ( times_times_int @ X @ Z2 ) @ ( times_times_int @ Y2 @ Z2 ) )
= ( ord_less_int @ X @ Y2 ) ) ) ).
% mult_less_iff1
thf(fact_380_leading__coeff__def,axiom,
( missin871596229213354819ring_a
= ( ^ [P3: poly_F3299452240248304339ring_a] : ( coeff_1607515655354303335ring_a @ P3 @ ( degree4881254707062955960ring_a @ P3 ) ) ) ) ).
% leading_coeff_def
thf(fact_381_nth__default__map__eq,axiom,
! [F: nat > nat,Dflt: nat,Dflt2: nat,Xs: list_nat,N: nat] :
( ( ( F @ Dflt )
= Dflt2 )
=> ( ( more_nth_default_nat @ Dflt2 @ ( map_nat_nat @ F @ Xs ) @ N )
= ( F @ ( more_nth_default_nat @ Dflt @ Xs @ N ) ) ) ) ).
% nth_default_map_eq
thf(fact_382_nth__default__map__eq,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Dflt: produc4299165986903738727ring_a,Dflt2: finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,N: nat] :
( ( ( F @ Dflt )
= Dflt2 )
=> ( ( more_n3412881383938893606ring_a @ Dflt2 @ ( map_Pr8707103244924889698ring_a @ F @ Xs ) @ N )
= ( F @ ( more_n6296993454976805576ring_a @ Dflt @ Xs @ N ) ) ) ) ).
% nth_default_map_eq
thf(fact_383_nth__default__map__eq,axiom,
! [F: nat > finite_mod_ring_a,Dflt: nat,Dflt2: finite_mod_ring_a,Xs: list_nat,N: nat] :
( ( ( F @ Dflt )
= Dflt2 )
=> ( ( more_n3412881383938893606ring_a @ Dflt2 @ ( map_na1928064127006292399ring_a @ F @ Xs ) @ N )
= ( F @ ( more_nth_default_nat @ Dflt @ Xs @ N ) ) ) ) ).
% nth_default_map_eq
thf(fact_384_nth__default__map__eq,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Dflt: finite_mod_ring_a,Dflt2: finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,N: nat] :
( ( ( F @ Dflt )
= Dflt2 )
=> ( ( more_n3412881383938893606ring_a @ Dflt2 @ ( map_Fi7082711781076630404ring_a @ F @ Xs ) @ N )
= ( F @ ( more_n3412881383938893606ring_a @ Dflt @ Xs @ N ) ) ) ) ).
% nth_default_map_eq
thf(fact_385_qr__mult__coeffs__def,axiom,
! [F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_ky8916091867655869166effs_a @ n @ F @ G )
= ( kyber_to_qr_a @ ( nTT_ky7627831880102416151poly_a @ n @ times_5121417576591743744ring_a @ ( kyber_of_qr_a @ F ) @ ( kyber_of_qr_a @ G ) ) ) ) ).
% qr_mult_coeffs_def
thf(fact_386_mult_Oright__neutral,axiom,
! [A: poly_int] :
( ( times_times_poly_int @ A @ one_one_poly_int )
= A ) ).
% mult.right_neutral
thf(fact_387_mult_Oright__neutral,axiom,
! [A: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ A @ one_one_Kyber_qr_a )
= A ) ).
% mult.right_neutral
thf(fact_388_mult_Oright__neutral,axiom,
! [A: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ A @ one_on2109788427901206336ring_a )
= A ) ).
% mult.right_neutral
thf(fact_389_mult_Oright__neutral,axiom,
! [A: nat] :
( ( times_times_nat @ A @ one_one_nat )
= A ) ).
% mult.right_neutral
thf(fact_390_mult_Oright__neutral,axiom,
! [A: int] :
( ( times_times_int @ A @ one_one_int )
= A ) ).
% mult.right_neutral
thf(fact_391_mult_Oright__neutral,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ A @ one_on3394844594818161742ring_a )
= A ) ).
% mult.right_neutral
thf(fact_392_mult__1,axiom,
! [A: poly_int] :
( ( times_times_poly_int @ one_one_poly_int @ A )
= A ) ).
% mult_1
thf(fact_393_mult__1,axiom,
! [A: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ one_one_Kyber_qr_a @ A )
= A ) ).
% mult_1
thf(fact_394_mult__1,axiom,
! [A: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ one_on2109788427901206336ring_a @ A )
= A ) ).
% mult_1
thf(fact_395_mult__1,axiom,
! [A: nat] :
( ( times_times_nat @ one_one_nat @ A )
= A ) ).
% mult_1
thf(fact_396_mult__1,axiom,
! [A: int] :
( ( times_times_int @ one_one_int @ A )
= A ) ).
% mult_1
thf(fact_397_mult__1,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ one_on3394844594818161742ring_a @ A )
= A ) ).
% mult_1
thf(fact_398_of__nat__1,axiom,
( ( semiri6323754628967941525ly_int @ one_one_nat )
= one_one_poly_int ) ).
% of_nat_1
thf(fact_399_of__nat__1,axiom,
( ( semiri1314217659103216013at_int @ one_one_nat )
= one_one_int ) ).
% of_nat_1
thf(fact_400_of__nat__1,axiom,
( ( semiri9180929696517417892ring_a @ one_one_nat )
= one_on2109788427901206336ring_a ) ).
% of_nat_1
thf(fact_401_of__nat__1,axiom,
( ( semiri1316708129612266289at_nat @ one_one_nat )
= one_one_nat ) ).
% of_nat_1
thf(fact_402_of__nat__1__eq__iff,axiom,
! [N: nat] :
( ( one_one_poly_int
= ( semiri6323754628967941525ly_int @ N ) )
= ( N = one_one_nat ) ) ).
% of_nat_1_eq_iff
thf(fact_403_of__nat__1__eq__iff,axiom,
! [N: nat] :
( ( one_one_int
= ( semiri1314217659103216013at_int @ N ) )
= ( N = one_one_nat ) ) ).
% of_nat_1_eq_iff
thf(fact_404_of__nat__1__eq__iff,axiom,
! [N: nat] :
( ( one_one_nat
= ( semiri1316708129612266289at_nat @ N ) )
= ( N = one_one_nat ) ) ).
% of_nat_1_eq_iff
thf(fact_405_semiring__char__0__class_Oof__nat__eq__1__iff,axiom,
! [N: nat] :
( ( ( semiri6323754628967941525ly_int @ N )
= one_one_poly_int )
= ( N = one_one_nat ) ) ).
% semiring_char_0_class.of_nat_eq_1_iff
thf(fact_406_semiring__char__0__class_Oof__nat__eq__1__iff,axiom,
! [N: nat] :
( ( ( semiri1314217659103216013at_int @ N )
= one_one_int )
= ( N = one_one_nat ) ) ).
% semiring_char_0_class.of_nat_eq_1_iff
thf(fact_407_semiring__char__0__class_Oof__nat__eq__1__iff,axiom,
! [N: nat] :
( ( ( semiri1316708129612266289at_nat @ N )
= one_one_nat )
= ( N = one_one_nat ) ) ).
% semiring_char_0_class.of_nat_eq_1_iff
thf(fact_408_mult__cancel__left1,axiom,
! [C: poly_int,B: poly_int] :
( ( C
= ( times_times_poly_int @ C @ B ) )
= ( ( C = zero_zero_poly_int )
| ( B = one_one_poly_int ) ) ) ).
% mult_cancel_left1
thf(fact_409_mult__cancel__left1,axiom,
! [C: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( C
= ( times_5121417576591743744ring_a @ C @ B ) )
= ( ( C = zero_z7902377541816115708ring_a )
| ( B = one_on2109788427901206336ring_a ) ) ) ).
% mult_cancel_left1
thf(fact_410_mult__cancel__left1,axiom,
! [C: int,B: int] :
( ( C
= ( times_times_int @ C @ B ) )
= ( ( C = zero_zero_int )
| ( B = one_one_int ) ) ) ).
% mult_cancel_left1
thf(fact_411_mult__cancel__left1,axiom,
! [C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( C
= ( times_3242606764180207630ring_a @ C @ B ) )
= ( ( C = zero_z1830546546923837194ring_a )
| ( B = one_on3394844594818161742ring_a ) ) ) ).
% mult_cancel_left1
thf(fact_412_mult__cancel__left2,axiom,
! [C: poly_int,A: poly_int] :
( ( ( times_times_poly_int @ C @ A )
= C )
= ( ( C = zero_zero_poly_int )
| ( A = one_one_poly_int ) ) ) ).
% mult_cancel_left2
thf(fact_413_mult__cancel__left2,axiom,
! [C: finite_mod_ring_a,A: finite_mod_ring_a] :
( ( ( times_5121417576591743744ring_a @ C @ A )
= C )
= ( ( C = zero_z7902377541816115708ring_a )
| ( A = one_on2109788427901206336ring_a ) ) ) ).
% mult_cancel_left2
thf(fact_414_mult__cancel__left2,axiom,
! [C: int,A: int] :
( ( ( times_times_int @ C @ A )
= C )
= ( ( C = zero_zero_int )
| ( A = one_one_int ) ) ) ).
% mult_cancel_left2
thf(fact_415_mult__cancel__left2,axiom,
! [C: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a] :
( ( ( times_3242606764180207630ring_a @ C @ A )
= C )
= ( ( C = zero_z1830546546923837194ring_a )
| ( A = one_on3394844594818161742ring_a ) ) ) ).
% mult_cancel_left2
thf(fact_416_mult__cancel__right1,axiom,
! [C: poly_int,B: poly_int] :
( ( C
= ( times_times_poly_int @ B @ C ) )
= ( ( C = zero_zero_poly_int )
| ( B = one_one_poly_int ) ) ) ).
% mult_cancel_right1
thf(fact_417_mult__cancel__right1,axiom,
! [C: finite_mod_ring_a,B: finite_mod_ring_a] :
( ( C
= ( times_5121417576591743744ring_a @ B @ C ) )
= ( ( C = zero_z7902377541816115708ring_a )
| ( B = one_on2109788427901206336ring_a ) ) ) ).
% mult_cancel_right1
thf(fact_418_mult__cancel__right1,axiom,
! [C: int,B: int] :
( ( C
= ( times_times_int @ B @ C ) )
= ( ( C = zero_zero_int )
| ( B = one_one_int ) ) ) ).
% mult_cancel_right1
thf(fact_419_mult__cancel__right1,axiom,
! [C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( C
= ( times_3242606764180207630ring_a @ B @ C ) )
= ( ( C = zero_z1830546546923837194ring_a )
| ( B = one_on3394844594818161742ring_a ) ) ) ).
% mult_cancel_right1
thf(fact_420_mult__cancel__right2,axiom,
! [A: poly_int,C: poly_int] :
( ( ( times_times_poly_int @ A @ C )
= C )
= ( ( C = zero_zero_poly_int )
| ( A = one_one_poly_int ) ) ) ).
% mult_cancel_right2
thf(fact_421_mult__cancel__right2,axiom,
! [A: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( ( times_5121417576591743744ring_a @ A @ C )
= C )
= ( ( C = zero_z7902377541816115708ring_a )
| ( A = one_on2109788427901206336ring_a ) ) ) ).
% mult_cancel_right2
thf(fact_422_mult__cancel__right2,axiom,
! [A: int,C: int] :
( ( ( times_times_int @ A @ C )
= C )
= ( ( C = zero_zero_int )
| ( A = one_one_int ) ) ) ).
% mult_cancel_right2
thf(fact_423_mult__cancel__right2,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( ( times_3242606764180207630ring_a @ A @ C )
= C )
= ( ( C = zero_z1830546546923837194ring_a )
| ( A = one_on3394844594818161742ring_a ) ) ) ).
% mult_cancel_right2
thf(fact_424_mod__by__1,axiom,
! [A: finite_mod_ring_a] :
( ( modulo8308552932176287283ring_a @ A @ one_on2109788427901206336ring_a )
= zero_z7902377541816115708ring_a ) ).
% mod_by_1
thf(fact_425_mod__by__1,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ A @ one_on3394844594818161742ring_a )
= zero_z1830546546923837194ring_a ) ).
% mod_by_1
thf(fact_426_mod__by__1,axiom,
! [A: nat] :
( ( modulo_modulo_nat @ A @ one_one_nat )
= zero_zero_nat ) ).
% mod_by_1
thf(fact_427_mod__by__1,axiom,
! [A: int] :
( ( modulo_modulo_int @ A @ one_one_int )
= zero_zero_int ) ).
% mod_by_1
thf(fact_428_bits__mod__by__1,axiom,
! [A: nat] :
( ( modulo_modulo_nat @ A @ one_one_nat )
= zero_zero_nat ) ).
% bits_mod_by_1
thf(fact_429_bits__mod__by__1,axiom,
! [A: int] :
( ( modulo_modulo_int @ A @ one_one_int )
= zero_zero_int ) ).
% bits_mod_by_1
thf(fact_430_lead__coeff__1,axiom,
( ( coeff_nat @ one_one_poly_nat @ ( degree_nat @ one_one_poly_nat ) )
= one_one_nat ) ).
% lead_coeff_1
thf(fact_431_lead__coeff__1,axiom,
( ( coeff_poly_int @ one_on1166514126663969025ly_int @ ( degree_poly_int @ one_on1166514126663969025ly_int ) )
= one_one_poly_int ) ).
% lead_coeff_1
thf(fact_432_lead__coeff__1,axiom,
( ( coeff_int @ one_one_poly_int @ ( degree_int @ one_one_poly_int ) )
= one_one_int ) ).
% lead_coeff_1
thf(fact_433_lead__coeff__1,axiom,
( ( coeff_1607515655354303335ring_a @ one_on3394844594818161742ring_a @ ( degree4881254707062955960ring_a @ one_on3394844594818161742ring_a ) )
= one_on2109788427901206336ring_a ) ).
% lead_coeff_1
thf(fact_434_of__qr__0,axiom,
( ( kyber_of_qr_a @ zero_zero_Kyber_qr_a )
= zero_z1830546546923837194ring_a ) ).
% of_qr_0
thf(fact_435_of__qr__eq__0__iff,axiom,
! [P: kyber_qr_a] :
( ( ( kyber_of_qr_a @ P )
= zero_z1830546546923837194ring_a )
= ( P = zero_zero_Kyber_qr_a ) ) ).
% of_qr_eq_0_iff
thf(fact_436_of__qr__of__nat,axiom,
! [N: nat] :
( ( kyber_of_qr_a @ ( semiri7313030098341262522r_qr_a @ N ) )
= ( semiri8000969770135892146ring_a @ N ) ) ).
% of_qr_of_nat
thf(fact_437_one__reorient,axiom,
! [X: int] :
( ( one_one_int = X )
= ( X = one_one_int ) ) ).
% one_reorient
thf(fact_438_one__reorient,axiom,
! [X: finite_mod_ring_a] :
( ( one_on2109788427901206336ring_a = X )
= ( X = one_on2109788427901206336ring_a ) ) ).
% one_reorient
thf(fact_439_one__reorient,axiom,
! [X: nat] :
( ( one_one_nat = X )
= ( X = one_one_nat ) ) ).
% one_reorient
thf(fact_440_one__reorient,axiom,
! [X: poly_int] :
( ( one_one_poly_int = X )
= ( X = one_one_poly_int ) ) ).
% one_reorient
thf(fact_441_kyber__ntt_Oqr__mult__coeffs_Ocong,axiom,
nTT_ky8916091867655869166effs_a = nTT_ky8916091867655869166effs_a ).
% kyber_ntt.qr_mult_coeffs.cong
thf(fact_442_zero__neq__one,axiom,
zero_zero_poly_int != one_one_poly_int ).
% zero_neq_one
thf(fact_443_zero__neq__one,axiom,
zero_zero_nat != one_one_nat ).
% zero_neq_one
thf(fact_444_zero__neq__one,axiom,
zero_zero_int != one_one_int ).
% zero_neq_one
thf(fact_445_zero__neq__one,axiom,
zero_z7902377541816115708ring_a != one_on2109788427901206336ring_a ).
% zero_neq_one
thf(fact_446_comm__monoid__mult__class_Omult__1,axiom,
! [A: poly_int] :
( ( times_times_poly_int @ one_one_poly_int @ A )
= A ) ).
% comm_monoid_mult_class.mult_1
thf(fact_447_comm__monoid__mult__class_Omult__1,axiom,
! [A: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ one_one_Kyber_qr_a @ A )
= A ) ).
% comm_monoid_mult_class.mult_1
thf(fact_448_comm__monoid__mult__class_Omult__1,axiom,
! [A: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ one_on2109788427901206336ring_a @ A )
= A ) ).
% comm_monoid_mult_class.mult_1
thf(fact_449_comm__monoid__mult__class_Omult__1,axiom,
! [A: nat] :
( ( times_times_nat @ one_one_nat @ A )
= A ) ).
% comm_monoid_mult_class.mult_1
thf(fact_450_comm__monoid__mult__class_Omult__1,axiom,
! [A: int] :
( ( times_times_int @ one_one_int @ A )
= A ) ).
% comm_monoid_mult_class.mult_1
thf(fact_451_comm__monoid__mult__class_Omult__1,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ one_on3394844594818161742ring_a @ A )
= A ) ).
% comm_monoid_mult_class.mult_1
thf(fact_452_mult_Ocomm__neutral,axiom,
! [A: poly_int] :
( ( times_times_poly_int @ A @ one_one_poly_int )
= A ) ).
% mult.comm_neutral
thf(fact_453_mult_Ocomm__neutral,axiom,
! [A: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ A @ one_one_Kyber_qr_a )
= A ) ).
% mult.comm_neutral
thf(fact_454_mult_Ocomm__neutral,axiom,
! [A: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ A @ one_on2109788427901206336ring_a )
= A ) ).
% mult.comm_neutral
thf(fact_455_mult_Ocomm__neutral,axiom,
! [A: nat] :
( ( times_times_nat @ A @ one_one_nat )
= A ) ).
% mult.comm_neutral
thf(fact_456_mult_Ocomm__neutral,axiom,
! [A: int] :
( ( times_times_int @ A @ one_one_int )
= A ) ).
% mult.comm_neutral
thf(fact_457_mult_Ocomm__neutral,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ A @ one_on3394844594818161742ring_a )
= A ) ).
% mult.comm_neutral
thf(fact_458_to__qr__of__qr,axiom,
! [X: kyber_qr_a] :
( ( kyber_to_qr_a @ ( kyber_of_qr_a @ X ) )
= X ) ).
% to_qr_of_qr
thf(fact_459_monic__degree__0,axiom,
! [P: poly_int] :
( ( ( coeff_int @ P @ ( degree_int @ P ) )
= one_one_int )
=> ( ( ( degree_int @ P )
= zero_zero_nat )
= ( P = one_one_poly_int ) ) ) ).
% monic_degree_0
thf(fact_460_monic__degree__0,axiom,
! [P: poly_nat] :
( ( ( coeff_nat @ P @ ( degree_nat @ P ) )
= one_one_nat )
=> ( ( ( degree_nat @ P )
= zero_zero_nat )
= ( P = one_one_poly_nat ) ) ) ).
% monic_degree_0
thf(fact_461_monic__degree__0,axiom,
! [P: poly_poly_int] :
( ( ( coeff_poly_int @ P @ ( degree_poly_int @ P ) )
= one_one_poly_int )
=> ( ( ( degree_poly_int @ P )
= zero_zero_nat )
= ( P = one_on1166514126663969025ly_int ) ) ) ).
% monic_degree_0
thf(fact_462_monic__degree__0,axiom,
! [P: poly_F3299452240248304339ring_a] :
( ( ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) )
= one_on2109788427901206336ring_a )
=> ( ( ( degree4881254707062955960ring_a @ P )
= zero_zero_nat )
= ( P = one_on3394844594818161742ring_a ) ) ) ).
% monic_degree_0
thf(fact_463_lambda__one,axiom,
( ( ^ [X2: poly_int] : X2 )
= ( times_times_poly_int @ one_one_poly_int ) ) ).
% lambda_one
thf(fact_464_lambda__one,axiom,
( ( ^ [X2: kyber_qr_a] : X2 )
= ( times_2095635435063429214r_qr_a @ one_one_Kyber_qr_a ) ) ).
% lambda_one
thf(fact_465_lambda__one,axiom,
( ( ^ [X2: finite_mod_ring_a] : X2 )
= ( times_5121417576591743744ring_a @ one_on2109788427901206336ring_a ) ) ).
% lambda_one
thf(fact_466_lambda__one,axiom,
( ( ^ [X2: nat] : X2 )
= ( times_times_nat @ one_one_nat ) ) ).
% lambda_one
thf(fact_467_lambda__one,axiom,
( ( ^ [X2: int] : X2 )
= ( times_times_int @ one_one_int ) ) ).
% lambda_one
thf(fact_468_lambda__one,axiom,
( ( ^ [X2: poly_F3299452240248304339ring_a] : X2 )
= ( times_3242606764180207630ring_a @ one_on3394844594818161742ring_a ) ) ).
% lambda_one
thf(fact_469_not__one__less__zero,axiom,
~ ( ord_less_poly_int @ one_one_poly_int @ zero_zero_poly_int ) ).
% not_one_less_zero
thf(fact_470_not__one__less__zero,axiom,
~ ( ord_less_nat @ one_one_nat @ zero_zero_nat ) ).
% not_one_less_zero
thf(fact_471_not__one__less__zero,axiom,
~ ( ord_less_int @ one_one_int @ zero_zero_int ) ).
% not_one_less_zero
thf(fact_472_zero__less__one__class_Ozero__less__one,axiom,
ord_less_poly_int @ zero_zero_poly_int @ one_one_poly_int ).
% zero_less_one_class.zero_less_one
thf(fact_473_zero__less__one__class_Ozero__less__one,axiom,
ord_less_nat @ zero_zero_nat @ one_one_nat ).
% zero_less_one_class.zero_less_one
thf(fact_474_zero__less__one__class_Ozero__less__one,axiom,
ord_less_int @ zero_zero_int @ one_one_int ).
% zero_less_one_class.zero_less_one
thf(fact_475_less__1__mult,axiom,
! [M: poly_int,N: poly_int] :
( ( ord_less_poly_int @ one_one_poly_int @ M )
=> ( ( ord_less_poly_int @ one_one_poly_int @ N )
=> ( ord_less_poly_int @ one_one_poly_int @ ( times_times_poly_int @ M @ N ) ) ) ) ).
% less_1_mult
thf(fact_476_less__1__mult,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ one_one_nat @ M )
=> ( ( ord_less_nat @ one_one_nat @ N )
=> ( ord_less_nat @ one_one_nat @ ( times_times_nat @ M @ N ) ) ) ) ).
% less_1_mult
thf(fact_477_less__1__mult,axiom,
! [M: int,N: int] :
( ( ord_less_int @ one_one_int @ M )
=> ( ( ord_less_int @ one_one_int @ N )
=> ( ord_less_int @ one_one_int @ ( times_times_int @ M @ N ) ) ) ) ).
% less_1_mult
thf(fact_478_pos__zmult__eq__1__iff,axiom,
! [M: int,N: int] :
( ( ord_less_int @ zero_zero_int @ M )
=> ( ( ( times_times_int @ M @ N )
= one_one_int )
= ( ( M = one_one_int )
& ( N = one_one_int ) ) ) ) ).
% pos_zmult_eq_1_iff
thf(fact_479_monic__mult,axiom,
! [P: poly_int,Q: poly_int] :
( ( ( coeff_int @ P @ ( degree_int @ P ) )
= one_one_int )
=> ( ( ( coeff_int @ Q @ ( degree_int @ Q ) )
= one_one_int )
=> ( ( coeff_int @ ( times_times_poly_int @ P @ Q ) @ ( degree_int @ ( times_times_poly_int @ P @ Q ) ) )
= one_one_int ) ) ) ).
% monic_mult
thf(fact_480_monic__mult,axiom,
! [P: poly_poly_int,Q: poly_poly_int] :
( ( ( coeff_poly_int @ P @ ( degree_poly_int @ P ) )
= one_one_poly_int )
=> ( ( ( coeff_poly_int @ Q @ ( degree_poly_int @ Q ) )
= one_one_poly_int )
=> ( ( coeff_poly_int @ ( times_4739760418287672641ly_int @ P @ Q ) @ ( degree_poly_int @ ( times_4739760418287672641ly_int @ P @ Q ) ) )
= one_one_poly_int ) ) ) ).
% monic_mult
thf(fact_481_monic__mult,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) )
= one_on2109788427901206336ring_a )
=> ( ( ( coeff_1607515655354303335ring_a @ Q @ ( degree4881254707062955960ring_a @ Q ) )
= one_on2109788427901206336ring_a )
=> ( ( coeff_1607515655354303335ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) @ ( degree4881254707062955960ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) ) )
= one_on2109788427901206336ring_a ) ) ) ).
% monic_mult
thf(fact_482_monic__factor,axiom,
! [P: poly_int,Q: poly_int] :
( ( ( coeff_int @ ( times_times_poly_int @ P @ Q ) @ ( degree_int @ ( times_times_poly_int @ P @ Q ) ) )
= one_one_int )
=> ( ( ( coeff_int @ P @ ( degree_int @ P ) )
= one_one_int )
=> ( ( coeff_int @ Q @ ( degree_int @ Q ) )
= one_one_int ) ) ) ).
% monic_factor
thf(fact_483_monic__factor,axiom,
! [P: poly_poly_int,Q: poly_poly_int] :
( ( ( coeff_poly_int @ ( times_4739760418287672641ly_int @ P @ Q ) @ ( degree_poly_int @ ( times_4739760418287672641ly_int @ P @ Q ) ) )
= one_one_poly_int )
=> ( ( ( coeff_poly_int @ P @ ( degree_poly_int @ P ) )
= one_one_poly_int )
=> ( ( coeff_poly_int @ Q @ ( degree_poly_int @ Q ) )
= one_one_poly_int ) ) ) ).
% monic_factor
thf(fact_484_monic__factor,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( ( coeff_1607515655354303335ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) @ ( degree4881254707062955960ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) ) )
= one_on2109788427901206336ring_a )
=> ( ( ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) )
= one_on2109788427901206336ring_a )
=> ( ( coeff_1607515655354303335ring_a @ Q @ ( degree4881254707062955960ring_a @ Q ) )
= one_on2109788427901206336ring_a ) ) ) ).
% monic_factor
thf(fact_485_of__qr__to__qr,axiom,
! [X: poly_F3299452240248304339ring_a] :
( ( kyber_of_qr_a @ ( kyber_to_qr_a @ X ) )
= ( modulo2591651872109920577ring_a @ X @ kyber_qr_poly_a ) ) ).
% of_qr_to_qr
thf(fact_486_kyber__ntt_Oqr__mult__coeffs__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_ky8916091867655869166effs_a @ N @ F @ G )
= ( kyber_to_qr_a @ ( nTT_ky7627831880102416151poly_a @ N @ times_5121417576591743744ring_a @ ( kyber_of_qr_a @ F ) @ ( kyber_of_qr_a @ G ) ) ) ) ) ).
% kyber_ntt.qr_mult_coeffs_def
thf(fact_487_kyber__ntt_Oqr__mult__coeffs__def,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( nTT_ky8916091867655869166effs_a @ N @ F @ G )
= ( kyber_to_qr_a @ ( nTT_ky7627831880102416151poly_a @ N @ times_5121417576591743744ring_a @ ( kyber_of_qr_a @ F ) @ ( kyber_of_qr_a @ G ) ) ) ) ) ).
% kyber_ntt.qr_mult_coeffs_def
thf(fact_488_deg__of__qr,axiom,
! [X: kyber_qr_a] : ( ord_less_nat @ ( degree4881254707062955960ring_a @ ( kyber_of_qr_a @ X ) ) @ ( kyber_5808863167042391122g_qr_a @ type_a ) ) ).
% deg_of_qr
thf(fact_489_of__qr__to__qr_H,axiom,
! [X: poly_F3299452240248304339ring_a] :
( ( ord_less_nat @ ( degree4881254707062955960ring_a @ X ) @ ( kyber_5808863167042391122g_qr_a @ type_a ) )
=> ( ( kyber_of_qr_a @ ( kyber_to_qr_a @ X ) )
= X ) ) ).
% of_qr_to_qr'
thf(fact_490_kyber__ntt_Onegacycl__conv__mod__qr__poly,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( modulo2591651872109920577ring_a @ ( kyber_of_qr_a @ ( nTT_ky7844408764402957685conv_a @ N @ F @ G ) ) @ kyber_qr_poly_a )
= ( kyber_of_qr_a @ ( nTT_ky7844408764402957685conv_a @ N @ F @ G ) ) ) ) ).
% kyber_ntt.negacycl_conv_mod_qr_poly
thf(fact_491_kyber__ntt_Onegacycl__conv__mod__qr__poly,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a,G: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( modulo2591651872109920577ring_a @ ( kyber_of_qr_a @ ( nTT_ky7844408764402957685conv_a @ N @ F @ G ) ) @ kyber_qr_poly_a )
= ( kyber_of_qr_a @ ( nTT_ky7844408764402957685conv_a @ N @ F @ G ) ) ) ) ).
% kyber_ntt.negacycl_conv_mod_qr_poly
thf(fact_492_Totient_Oof__nat__eq__1__iff,axiom,
! [X: nat] :
( ( ( semiri6323754628967941525ly_int @ X )
= one_one_poly_int )
= ( X = one_one_nat ) ) ).
% Totient.of_nat_eq_1_iff
thf(fact_493_Totient_Oof__nat__eq__1__iff,axiom,
! [X: nat] :
( ( ( semiri1314217659103216013at_int @ X )
= one_one_int )
= ( X = one_one_nat ) ) ).
% Totient.of_nat_eq_1_iff
thf(fact_494_Totient_Oof__nat__eq__1__iff,axiom,
! [X: nat] :
( ( ( semiri1316708129612266289at_nat @ X )
= one_one_nat )
= ( X = one_one_nat ) ) ).
% Totient.of_nat_eq_1_iff
thf(fact_495_coeff__of__qr__zero,axiom,
! [I: nat,F: kyber_qr_a] :
( ( ord_less_eq_nat @ n @ I )
=> ( ( coeff_1607515655354303335ring_a @ ( kyber_of_qr_a @ F ) @ I )
= zero_z7902377541816115708ring_a ) ) ).
% coeff_of_qr_zero
thf(fact_496_poly__mod_Olead__coeff__monic__mult,axiom,
! [P: poly_int,Q: poly_int] :
( ( ( coeff_int @ P @ ( degree_int @ P ) )
= one_one_int )
=> ( ( coeff_int @ ( times_times_poly_int @ P @ Q ) @ ( degree_int @ ( times_times_poly_int @ P @ Q ) ) )
= ( coeff_int @ Q @ ( degree_int @ Q ) ) ) ) ).
% poly_mod.lead_coeff_monic_mult
thf(fact_497_poly__mod_Olead__coeff__monic__mult,axiom,
! [P: poly_nat,Q: poly_nat] :
( ( ( coeff_nat @ P @ ( degree_nat @ P ) )
= one_one_nat )
=> ( ( coeff_nat @ ( times_times_poly_nat @ P @ Q ) @ ( degree_nat @ ( times_times_poly_nat @ P @ Q ) ) )
= ( coeff_nat @ Q @ ( degree_nat @ Q ) ) ) ) ).
% poly_mod.lead_coeff_monic_mult
thf(fact_498_poly__mod_Olead__coeff__monic__mult,axiom,
! [P: poly_poly_int,Q: poly_poly_int] :
( ( ( coeff_poly_int @ P @ ( degree_poly_int @ P ) )
= one_one_poly_int )
=> ( ( coeff_poly_int @ ( times_4739760418287672641ly_int @ P @ Q ) @ ( degree_poly_int @ ( times_4739760418287672641ly_int @ P @ Q ) ) )
= ( coeff_poly_int @ Q @ ( degree_poly_int @ Q ) ) ) ) ).
% poly_mod.lead_coeff_monic_mult
thf(fact_499_poly__mod_Olead__coeff__monic__mult,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) )
= one_on2109788427901206336ring_a )
=> ( ( coeff_1607515655354303335ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) @ ( degree4881254707062955960ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) ) )
= ( coeff_1607515655354303335ring_a @ Q @ ( degree4881254707062955960ring_a @ Q ) ) ) ) ).
% poly_mod.lead_coeff_monic_mult
thf(fact_500_zmod__eq__0D,axiom,
! [M: int,D: int] :
( ( ( modulo_modulo_int @ M @ D )
= zero_zero_int )
=> ? [Q3: int] :
( M
= ( times_times_int @ D @ Q3 ) ) ) ).
% zmod_eq_0D
thf(fact_501_of__nat__mod,axiom,
! [M: nat,N: nat] :
( ( semiri1314217659103216013at_int @ ( modulo_modulo_nat @ M @ N ) )
= ( modulo_modulo_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) ) ) ).
% of_nat_mod
thf(fact_502_of__nat__mod,axiom,
! [M: nat,N: nat] :
( ( semiri1316708129612266289at_nat @ ( modulo_modulo_nat @ M @ N ) )
= ( modulo_modulo_nat @ ( semiri1316708129612266289at_nat @ M ) @ ( semiri1316708129612266289at_nat @ N ) ) ) ).
% of_nat_mod
thf(fact_503_gcd__nat__induct,axiom,
! [P4: nat > nat > $o,M: nat,N: nat] :
( ! [M3: nat] : ( P4 @ M3 @ zero_zero_nat )
=> ( ! [M3: nat,N3: nat] :
( ( ord_less_nat @ zero_zero_nat @ N3 )
=> ( ( P4 @ N3 @ ( modulo_modulo_nat @ M3 @ N3 ) )
=> ( P4 @ M3 @ N3 ) ) )
=> ( P4 @ M @ N ) ) ) ).
% gcd_nat_induct
thf(fact_504_less__numeral__extra_I1_J,axiom,
ord_less_poly_int @ zero_zero_poly_int @ one_one_poly_int ).
% less_numeral_extra(1)
thf(fact_505_less__numeral__extra_I1_J,axiom,
ord_less_nat @ zero_zero_nat @ one_one_nat ).
% less_numeral_extra(1)
thf(fact_506_less__numeral__extra_I1_J,axiom,
ord_less_int @ zero_zero_int @ one_one_int ).
% less_numeral_extra(1)
thf(fact_507_psi__props_I3_J,axiom,
psi != one_on2109788427901206336ring_a ).
% psi_props(3)
thf(fact_508_of__qr__1,axiom,
( ( kyber_of_qr_a @ one_one_Kyber_qr_a )
= one_on3394844594818161742ring_a ) ).
% of_qr_1
thf(fact_509_to__qr__1,axiom,
( ( kyber_to_qr_a @ one_on3394844594818161742ring_a )
= one_one_Kyber_qr_a ) ).
% to_qr_1
thf(fact_510_le__zero__eq,axiom,
! [N: nat] :
( ( ord_less_eq_nat @ N @ zero_zero_nat )
= ( N = zero_zero_nat ) ) ).
% le_zero_eq
thf(fact_511_le0,axiom,
! [N: nat] : ( ord_less_eq_nat @ zero_zero_nat @ N ) ).
% le0
thf(fact_512_bot__nat__0_Oextremum,axiom,
! [A: nat] : ( ord_less_eq_nat @ zero_zero_nat @ A ) ).
% bot_nat_0.extremum
thf(fact_513_nat__1__eq__mult__iff,axiom,
! [M: nat,N: nat] :
( ( one_one_nat
= ( times_times_nat @ M @ N ) )
= ( ( M = one_one_nat )
& ( N = one_one_nat ) ) ) ).
% nat_1_eq_mult_iff
thf(fact_514_nat__mult__eq__1__iff,axiom,
! [M: nat,N: nat] :
( ( ( times_times_nat @ M @ N )
= one_one_nat )
= ( ( M = one_one_nat )
& ( N = one_one_nat ) ) ) ).
% nat_mult_eq_1_iff
thf(fact_515_one__mod__qr__poly,axiom,
( ( modulo2591651872109920577ring_a @ one_on3394844594818161742ring_a @ kyber_qr_poly_a )
= one_on3394844594818161742ring_a ) ).
% one_mod_qr_poly
thf(fact_516_of__nat__le__iff,axiom,
! [M: nat,N: nat] :
( ( ord_less_eq_nat @ ( semiri1316708129612266289at_nat @ M ) @ ( semiri1316708129612266289at_nat @ N ) )
= ( ord_less_eq_nat @ M @ N ) ) ).
% of_nat_le_iff
thf(fact_517_of__nat__le__iff,axiom,
! [M: nat,N: nat] :
( ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) )
= ( ord_less_eq_nat @ M @ N ) ) ).
% of_nat_le_iff
thf(fact_518_less__one,axiom,
! [N: nat] :
( ( ord_less_nat @ N @ one_one_nat )
= ( N = zero_zero_nat ) ) ).
% less_one
thf(fact_519_degree__1,axiom,
( ( degree4881254707062955960ring_a @ one_on3394844594818161742ring_a )
= zero_zero_nat ) ).
% degree_1
thf(fact_520_degree__1,axiom,
( ( degree_int @ one_one_poly_int )
= zero_zero_nat ) ).
% degree_1
thf(fact_521_of__nat__le__0__iff,axiom,
! [M: nat] :
( ( ord_less_eq_nat @ ( semiri1316708129612266289at_nat @ M ) @ zero_zero_nat )
= ( M = zero_zero_nat ) ) ).
% of_nat_le_0_iff
thf(fact_522_of__nat__le__0__iff,axiom,
! [M: nat] :
( ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ M ) @ zero_zero_int )
= ( M = zero_zero_nat ) ) ).
% of_nat_le_0_iff
thf(fact_523_nat__mult__le__cancel__disj,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ ( times_times_nat @ K @ M ) @ ( times_times_nat @ K @ N ) )
= ( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ord_less_eq_nat @ M @ N ) ) ) ).
% nat_mult_le_cancel_disj
thf(fact_524_mult__le__cancel2,axiom,
! [M: nat,K: nat,N: nat] :
( ( ord_less_eq_nat @ ( times_times_nat @ M @ K ) @ ( times_times_nat @ N @ K ) )
= ( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ord_less_eq_nat @ M @ N ) ) ) ).
% mult_le_cancel2
thf(fact_525_of__nat__mono,axiom,
! [I: nat,J: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_nat @ ( semiri1316708129612266289at_nat @ I ) @ ( semiri1316708129612266289at_nat @ J ) ) ) ).
% of_nat_mono
thf(fact_526_of__nat__mono,axiom,
! [I: nat,J: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ I ) @ ( semiri1314217659103216013at_int @ J ) ) ) ).
% of_nat_mono
thf(fact_527_le__numeral__extra_I3_J,axiom,
ord_less_eq_nat @ zero_zero_nat @ zero_zero_nat ).
% le_numeral_extra(3)
thf(fact_528_le__numeral__extra_I3_J,axiom,
ord_less_eq_int @ zero_zero_int @ zero_zero_int ).
% le_numeral_extra(3)
thf(fact_529_le__numeral__extra_I4_J,axiom,
ord_less_eq_poly_int @ one_one_poly_int @ one_one_poly_int ).
% le_numeral_extra(4)
thf(fact_530_le__numeral__extra_I4_J,axiom,
ord_less_eq_nat @ one_one_nat @ one_one_nat ).
% le_numeral_extra(4)
thf(fact_531_le__numeral__extra_I4_J,axiom,
ord_less_eq_int @ one_one_int @ one_one_int ).
% le_numeral_extra(4)
thf(fact_532_verit__la__disequality,axiom,
! [A: nat,B: nat] :
( ( A = B )
| ~ ( ord_less_eq_nat @ A @ B )
| ~ ( ord_less_eq_nat @ B @ A ) ) ).
% verit_la_disequality
thf(fact_533_verit__la__disequality,axiom,
! [A: int,B: int] :
( ( A = B )
| ~ ( ord_less_eq_int @ A @ B )
| ~ ( ord_less_eq_int @ B @ A ) ) ).
% verit_la_disequality
thf(fact_534_verit__comp__simplify1_I2_J,axiom,
! [A: nat] : ( ord_less_eq_nat @ A @ A ) ).
% verit_comp_simplify1(2)
thf(fact_535_verit__comp__simplify1_I2_J,axiom,
! [A: int] : ( ord_less_eq_int @ A @ A ) ).
% verit_comp_simplify1(2)
thf(fact_536_Nat_Oex__has__greatest__nat,axiom,
! [P4: nat > $o,K: nat,B: nat] :
( ( P4 @ K )
=> ( ! [Y3: nat] :
( ( P4 @ Y3 )
=> ( ord_less_eq_nat @ Y3 @ B ) )
=> ? [X3: nat] :
( ( P4 @ X3 )
& ! [Y4: nat] :
( ( P4 @ Y4 )
=> ( ord_less_eq_nat @ Y4 @ X3 ) ) ) ) ) ).
% Nat.ex_has_greatest_nat
thf(fact_537_nat__le__linear,axiom,
! [M: nat,N: nat] :
( ( ord_less_eq_nat @ M @ N )
| ( ord_less_eq_nat @ N @ M ) ) ).
% nat_le_linear
thf(fact_538_le__antisym,axiom,
! [M: nat,N: nat] :
( ( ord_less_eq_nat @ M @ N )
=> ( ( ord_less_eq_nat @ N @ M )
=> ( M = N ) ) ) ).
% le_antisym
thf(fact_539_eq__imp__le,axiom,
! [M: nat,N: nat] :
( ( M = N )
=> ( ord_less_eq_nat @ M @ N ) ) ).
% eq_imp_le
thf(fact_540_le__trans,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( ord_less_eq_nat @ J @ K )
=> ( ord_less_eq_nat @ I @ K ) ) ) ).
% le_trans
thf(fact_541_le__refl,axiom,
! [N: nat] : ( ord_less_eq_nat @ N @ N ) ).
% le_refl
thf(fact_542_zero__le,axiom,
! [X: nat] : ( ord_less_eq_nat @ zero_zero_nat @ X ) ).
% zero_le
thf(fact_543_verit__comp__simplify1_I3_J,axiom,
! [B3: nat,A3: nat] :
( ( ~ ( ord_less_eq_nat @ B3 @ A3 ) )
= ( ord_less_nat @ A3 @ B3 ) ) ).
% verit_comp_simplify1(3)
thf(fact_544_verit__comp__simplify1_I3_J,axiom,
! [B3: int,A3: int] :
( ( ~ ( ord_less_eq_int @ B3 @ A3 ) )
= ( ord_less_int @ A3 @ B3 ) ) ).
% verit_comp_simplify1(3)
thf(fact_545_le__0__eq,axiom,
! [N: nat] :
( ( ord_less_eq_nat @ N @ zero_zero_nat )
= ( N = zero_zero_nat ) ) ).
% le_0_eq
thf(fact_546_bot__nat__0_Oextremum__uniqueI,axiom,
! [A: nat] :
( ( ord_less_eq_nat @ A @ zero_zero_nat )
=> ( A = zero_zero_nat ) ) ).
% bot_nat_0.extremum_uniqueI
thf(fact_547_bot__nat__0_Oextremum__unique,axiom,
! [A: nat] :
( ( ord_less_eq_nat @ A @ zero_zero_nat )
= ( A = zero_zero_nat ) ) ).
% bot_nat_0.extremum_unique
thf(fact_548_less__eq__nat_Osimps_I1_J,axiom,
! [N: nat] : ( ord_less_eq_nat @ zero_zero_nat @ N ) ).
% less_eq_nat.simps(1)
thf(fact_549_less__mono__imp__le__mono,axiom,
! [F: nat > nat,I: nat,J: nat] :
( ! [I2: nat,J2: nat] :
( ( ord_less_nat @ I2 @ J2 )
=> ( ord_less_nat @ ( F @ I2 ) @ ( F @ J2 ) ) )
=> ( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_nat @ ( F @ I ) @ ( F @ J ) ) ) ) ).
% less_mono_imp_le_mono
thf(fact_550_le__neq__implies__less,axiom,
! [M: nat,N: nat] :
( ( ord_less_eq_nat @ M @ N )
=> ( ( M != N )
=> ( ord_less_nat @ M @ N ) ) ) ).
% le_neq_implies_less
thf(fact_551_less__or__eq__imp__le,axiom,
! [M: nat,N: nat] :
( ( ( ord_less_nat @ M @ N )
| ( M = N ) )
=> ( ord_less_eq_nat @ M @ N ) ) ).
% less_or_eq_imp_le
thf(fact_552_le__eq__less__or__eq,axiom,
( ord_less_eq_nat
= ( ^ [M4: nat,N2: nat] :
( ( ord_less_nat @ M4 @ N2 )
| ( M4 = N2 ) ) ) ) ).
% le_eq_less_or_eq
thf(fact_553_less__imp__le__nat,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ M @ N )
=> ( ord_less_eq_nat @ M @ N ) ) ).
% less_imp_le_nat
thf(fact_554_nat__less__le,axiom,
( ord_less_nat
= ( ^ [M4: nat,N2: nat] :
( ( ord_less_eq_nat @ M4 @ N2 )
& ( M4 != N2 ) ) ) ) ).
% nat_less_le
thf(fact_555_le__cube,axiom,
! [M: nat] : ( ord_less_eq_nat @ M @ ( times_times_nat @ M @ ( times_times_nat @ M @ M ) ) ) ).
% le_cube
thf(fact_556_le__square,axiom,
! [M: nat] : ( ord_less_eq_nat @ M @ ( times_times_nat @ M @ M ) ) ).
% le_square
thf(fact_557_mult__le__mono,axiom,
! [I: nat,J: nat,K: nat,L: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( ord_less_eq_nat @ K @ L )
=> ( ord_less_eq_nat @ ( times_times_nat @ I @ K ) @ ( times_times_nat @ J @ L ) ) ) ) ).
% mult_le_mono
thf(fact_558_mult__le__mono1,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_nat @ ( times_times_nat @ I @ K ) @ ( times_times_nat @ J @ K ) ) ) ).
% mult_le_mono1
thf(fact_559_mult__le__mono2,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_nat @ ( times_times_nat @ K @ I ) @ ( times_times_nat @ K @ J ) ) ) ).
% mult_le_mono2
thf(fact_560_mod__less__eq__dividend,axiom,
! [M: nat,N: nat] : ( ord_less_eq_nat @ ( modulo_modulo_nat @ M @ N ) @ M ) ).
% mod_less_eq_dividend
thf(fact_561_nat__mult__1,axiom,
! [N: nat] :
( ( times_times_nat @ one_one_nat @ N )
= N ) ).
% nat_mult_1
thf(fact_562_nat__mult__1__right,axiom,
! [N: nat] :
( ( times_times_nat @ N @ one_one_nat )
= N ) ).
% nat_mult_1_right
thf(fact_563_ordered__comm__semiring__class_Ocomm__mult__left__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_eq_nat @ ( times_times_nat @ C @ A ) @ ( times_times_nat @ C @ B ) ) ) ) ).
% ordered_comm_semiring_class.comm_mult_left_mono
thf(fact_564_ordered__comm__semiring__class_Ocomm__mult__left__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) ) ) ) ).
% ordered_comm_semiring_class.comm_mult_left_mono
thf(fact_565_zero__le__mult__iff,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ zero_zero_int @ ( times_times_int @ A @ B ) )
= ( ( ( ord_less_eq_int @ zero_zero_int @ A )
& ( ord_less_eq_int @ zero_zero_int @ B ) )
| ( ( ord_less_eq_int @ A @ zero_zero_int )
& ( ord_less_eq_int @ B @ zero_zero_int ) ) ) ) ).
% zero_le_mult_iff
thf(fact_566_mult__nonneg__nonpos2,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ B @ zero_zero_nat )
=> ( ord_less_eq_nat @ ( times_times_nat @ B @ A ) @ zero_zero_nat ) ) ) ).
% mult_nonneg_nonpos2
thf(fact_567_mult__nonneg__nonpos2,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ B @ zero_zero_int )
=> ( ord_less_eq_int @ ( times_times_int @ B @ A ) @ zero_zero_int ) ) ) ).
% mult_nonneg_nonpos2
thf(fact_568_mult__nonpos__nonneg,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ zero_zero_nat )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% mult_nonpos_nonneg
thf(fact_569_mult__nonpos__nonneg,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ A @ zero_zero_int )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ord_less_eq_int @ ( times_times_int @ A @ B ) @ zero_zero_int ) ) ) ).
% mult_nonpos_nonneg
thf(fact_570_mult__nonneg__nonpos,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ B @ zero_zero_nat )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% mult_nonneg_nonpos
thf(fact_571_mult__nonneg__nonpos,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ B @ zero_zero_int )
=> ( ord_less_eq_int @ ( times_times_int @ A @ B ) @ zero_zero_int ) ) ) ).
% mult_nonneg_nonpos
thf(fact_572_mult__nonneg__nonneg,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ord_less_eq_nat @ zero_zero_nat @ ( times_times_nat @ A @ B ) ) ) ) ).
% mult_nonneg_nonneg
thf(fact_573_mult__nonneg__nonneg,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ord_less_eq_int @ zero_zero_int @ ( times_times_int @ A @ B ) ) ) ) ).
% mult_nonneg_nonneg
thf(fact_574_split__mult__neg__le,axiom,
! [A: nat,B: nat] :
( ( ( ( ord_less_eq_nat @ zero_zero_nat @ A )
& ( ord_less_eq_nat @ B @ zero_zero_nat ) )
| ( ( ord_less_eq_nat @ A @ zero_zero_nat )
& ( ord_less_eq_nat @ zero_zero_nat @ B ) ) )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ B ) @ zero_zero_nat ) ) ).
% split_mult_neg_le
thf(fact_575_split__mult__neg__le,axiom,
! [A: int,B: int] :
( ( ( ( ord_less_eq_int @ zero_zero_int @ A )
& ( ord_less_eq_int @ B @ zero_zero_int ) )
| ( ( ord_less_eq_int @ A @ zero_zero_int )
& ( ord_less_eq_int @ zero_zero_int @ B ) ) )
=> ( ord_less_eq_int @ ( times_times_int @ A @ B ) @ zero_zero_int ) ) ).
% split_mult_neg_le
thf(fact_576_mult__le__0__iff,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ ( times_times_int @ A @ B ) @ zero_zero_int )
= ( ( ( ord_less_eq_int @ zero_zero_int @ A )
& ( ord_less_eq_int @ B @ zero_zero_int ) )
| ( ( ord_less_eq_int @ A @ zero_zero_int )
& ( ord_less_eq_int @ zero_zero_int @ B ) ) ) ) ).
% mult_le_0_iff
thf(fact_577_mult__right__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ C ) ) ) ) ).
% mult_right_mono
thf(fact_578_mult__right__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) ) ) ) ).
% mult_right_mono
thf(fact_579_mult__right__mono__neg,axiom,
! [B: int,A: int,C: int] :
( ( ord_less_eq_int @ B @ A )
=> ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) ) ) ) ).
% mult_right_mono_neg
thf(fact_580_mult__left__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_eq_nat @ ( times_times_nat @ C @ A ) @ ( times_times_nat @ C @ B ) ) ) ) ).
% mult_left_mono
thf(fact_581_mult__left__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) ) ) ) ).
% mult_left_mono
thf(fact_582_mult__nonpos__nonpos,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ A @ zero_zero_int )
=> ( ( ord_less_eq_int @ B @ zero_zero_int )
=> ( ord_less_eq_int @ zero_zero_int @ ( times_times_int @ A @ B ) ) ) ) ).
% mult_nonpos_nonpos
thf(fact_583_mult__left__mono__neg,axiom,
! [B: int,A: int,C: int] :
( ( ord_less_eq_int @ B @ A )
=> ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) ) ) ) ).
% mult_left_mono_neg
thf(fact_584_split__mult__pos__le,axiom,
! [A: int,B: int] :
( ( ( ( ord_less_eq_int @ zero_zero_int @ A )
& ( ord_less_eq_int @ zero_zero_int @ B ) )
| ( ( ord_less_eq_int @ A @ zero_zero_int )
& ( ord_less_eq_int @ B @ zero_zero_int ) ) )
=> ( ord_less_eq_int @ zero_zero_int @ ( times_times_int @ A @ B ) ) ) ).
% split_mult_pos_le
thf(fact_585_zero__le__square,axiom,
! [A: int] : ( ord_less_eq_int @ zero_zero_int @ ( times_times_int @ A @ A ) ) ).
% zero_le_square
thf(fact_586_mult__mono_H,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ C @ D )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ D ) ) ) ) ) ) ).
% mult_mono'
thf(fact_587_mult__mono_H,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_eq_int @ C @ D )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ D ) ) ) ) ) ) ).
% mult_mono'
thf(fact_588_mult__mono,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ C @ D )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ D ) ) ) ) ) ) ).
% mult_mono
thf(fact_589_mult__mono,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_eq_int @ C @ D )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ D ) ) ) ) ) ) ).
% mult_mono
thf(fact_590_not__one__le__zero,axiom,
~ ( ord_less_eq_poly_int @ one_one_poly_int @ zero_zero_poly_int ) ).
% not_one_le_zero
thf(fact_591_not__one__le__zero,axiom,
~ ( ord_less_eq_nat @ one_one_nat @ zero_zero_nat ) ).
% not_one_le_zero
thf(fact_592_not__one__le__zero,axiom,
~ ( ord_less_eq_int @ one_one_int @ zero_zero_int ) ).
% not_one_le_zero
thf(fact_593_linordered__nonzero__semiring__class_Ozero__le__one,axiom,
ord_less_eq_poly_int @ zero_zero_poly_int @ one_one_poly_int ).
% linordered_nonzero_semiring_class.zero_le_one
thf(fact_594_linordered__nonzero__semiring__class_Ozero__le__one,axiom,
ord_less_eq_nat @ zero_zero_nat @ one_one_nat ).
% linordered_nonzero_semiring_class.zero_le_one
thf(fact_595_linordered__nonzero__semiring__class_Ozero__le__one,axiom,
ord_less_eq_int @ zero_zero_int @ one_one_int ).
% linordered_nonzero_semiring_class.zero_le_one
thf(fact_596_zero__less__one__class_Ozero__le__one,axiom,
ord_less_eq_poly_int @ zero_zero_poly_int @ one_one_poly_int ).
% zero_less_one_class.zero_le_one
thf(fact_597_zero__less__one__class_Ozero__le__one,axiom,
ord_less_eq_nat @ zero_zero_nat @ one_one_nat ).
% zero_less_one_class.zero_le_one
thf(fact_598_zero__less__one__class_Ozero__le__one,axiom,
ord_less_eq_int @ zero_zero_int @ one_one_int ).
% zero_less_one_class.zero_le_one
thf(fact_599_of__nat__0__le__iff,axiom,
! [N: nat] : ( ord_less_eq_nat @ zero_zero_nat @ ( semiri1316708129612266289at_nat @ N ) ) ).
% of_nat_0_le_iff
thf(fact_600_of__nat__0__le__iff,axiom,
! [N: nat] : ( ord_less_eq_int @ zero_zero_int @ ( semiri1314217659103216013at_int @ N ) ) ).
% of_nat_0_le_iff
thf(fact_601_ex__least__nat__le,axiom,
! [P4: nat > $o,N: nat] :
( ( P4 @ N )
=> ( ~ ( P4 @ zero_zero_nat )
=> ? [K2: nat] :
( ( ord_less_eq_nat @ K2 @ N )
& ! [I3: nat] :
( ( ord_less_nat @ I3 @ K2 )
=> ~ ( P4 @ I3 ) )
& ( P4 @ K2 ) ) ) ) ).
% ex_least_nat_le
thf(fact_602_poly__eqI2,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a] :
( ( ( degree4881254707062955960ring_a @ P )
= ( degree4881254707062955960ring_a @ Q ) )
=> ( ! [I2: nat] :
( ( ord_less_eq_nat @ I2 @ ( degree4881254707062955960ring_a @ P ) )
=> ( ( coeff_1607515655354303335ring_a @ P @ I2 )
= ( coeff_1607515655354303335ring_a @ Q @ I2 ) ) )
=> ( P = Q ) ) ) ).
% poly_eqI2
thf(fact_603_mult__eq__self__implies__10,axiom,
! [M: nat,N: nat] :
( ( M
= ( times_times_nat @ M @ N ) )
=> ( ( N = one_one_nat )
| ( M = zero_zero_nat ) ) ) ).
% mult_eq_self_implies_10
thf(fact_604_int__ops_I2_J,axiom,
( ( semiri1314217659103216013at_int @ one_one_nat )
= one_one_int ) ).
% int_ops(2)
thf(fact_605_nat__one__as__int,axiom,
( one_one_nat
= ( nat2 @ one_one_int ) ) ).
% nat_one_as_int
thf(fact_606_kyber__ntt_Opsi__props_I3_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( Psi != one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.psi_props(3)
thf(fact_607_kyber__ntt_Opsi__props_I3_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( Psi != one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.psi_props(3)
thf(fact_608_NTT__Scheme_Okyber__ntt_Omu__properties_I2_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( Mu != one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.mu_properties(2)
thf(fact_609_NTT__Scheme_Okyber__ntt_Omu__properties_I2_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( Mu != one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.mu_properties(2)
thf(fact_610_NTT__Scheme_Okyber__ntt_Oomega__properties_I2_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( Omega != one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.omega_properties(2)
thf(fact_611_NTT__Scheme_Okyber__ntt_Oomega__properties_I2_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( Omega != one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.omega_properties(2)
thf(fact_612_linordered__semiring__strict__class_Omult__less__le__imp__less,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_eq_nat @ C @ D )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_less_le_imp_less
thf(fact_613_linordered__semiring__strict__class_Omult__less__le__imp__less,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_eq_int @ C @ D )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_less_le_imp_less
thf(fact_614_linordered__semiring__strict__class_Omult__le__less__imp__less,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_nat @ C @ D )
=> ( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_le_less_imp_less
thf(fact_615_linordered__semiring__strict__class_Omult__le__less__imp__less,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_int @ C @ D )
=> ( ( ord_less_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_le_less_imp_less
thf(fact_616_mult__right__le__imp__le,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_eq_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ C ) )
=> ( ( ord_less_nat @ zero_zero_nat @ C )
=> ( ord_less_eq_nat @ A @ B ) ) ) ).
% mult_right_le_imp_le
thf(fact_617_mult__right__le__imp__le,axiom,
! [A: int,C: int,B: int] :
( ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) )
=> ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ A @ B ) ) ) ).
% mult_right_le_imp_le
thf(fact_618_mult__left__le__imp__le,axiom,
! [C: nat,A: nat,B: nat] :
( ( ord_less_eq_nat @ ( times_times_nat @ C @ A ) @ ( times_times_nat @ C @ B ) )
=> ( ( ord_less_nat @ zero_zero_nat @ C )
=> ( ord_less_eq_nat @ A @ B ) ) ) ).
% mult_left_le_imp_le
thf(fact_619_mult__left__le__imp__le,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
=> ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ A @ B ) ) ) ).
% mult_left_le_imp_le
thf(fact_620_mult__le__cancel__left__pos,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ C )
=> ( ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
= ( ord_less_eq_int @ A @ B ) ) ) ).
% mult_le_cancel_left_pos
thf(fact_621_mult__le__cancel__left__neg,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_int @ C @ zero_zero_int )
=> ( ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
= ( ord_less_eq_int @ B @ A ) ) ) ).
% mult_le_cancel_left_neg
thf(fact_622_mult__less__cancel__right,axiom,
! [A: int,C: int,B: int] :
( ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) )
= ( ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ A @ B ) )
& ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_int @ B @ A ) ) ) ) ).
% mult_less_cancel_right
thf(fact_623_linordered__semiring__strict__class_Omult__strict__mono_H,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_nat @ C @ D )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_mono'
thf(fact_624_linordered__semiring__strict__class_Omult__strict__mono_H,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_int @ C @ D )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_mono'
thf(fact_625_mult__right__less__imp__less,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ C ) )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ A @ B ) ) ) ).
% mult_right_less_imp_less
thf(fact_626_mult__right__less__imp__less,axiom,
! [A: int,C: int,B: int] :
( ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ A @ B ) ) ) ).
% mult_right_less_imp_less
thf(fact_627_mult__less__cancel__left,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
= ( ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ A @ B ) )
& ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_int @ B @ A ) ) ) ) ).
% mult_less_cancel_left
thf(fact_628_linordered__semiring__strict__class_Omult__strict__mono,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_nat @ C @ D )
=> ( ( ord_less_nat @ zero_zero_nat @ B )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ ( times_times_nat @ A @ C ) @ ( times_times_nat @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_mono
thf(fact_629_linordered__semiring__strict__class_Omult__strict__mono,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_int @ C @ D )
=> ( ( ord_less_int @ zero_zero_int @ B )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ D ) ) ) ) ) ) ).
% linordered_semiring_strict_class.mult_strict_mono
thf(fact_630_mult__left__less__imp__less,axiom,
! [C: nat,A: nat,B: nat] :
( ( ord_less_nat @ ( times_times_nat @ C @ A ) @ ( times_times_nat @ C @ B ) )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ord_less_nat @ A @ B ) ) ) ).
% mult_left_less_imp_less
thf(fact_631_mult__left__less__imp__less,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
=> ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ A @ B ) ) ) ).
% mult_left_less_imp_less
thf(fact_632_mult__le__cancel__right,axiom,
! [A: int,C: int,B: int] :
( ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) )
= ( ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ A @ B ) )
& ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ B @ A ) ) ) ) ).
% mult_le_cancel_right
thf(fact_633_mult__le__cancel__left,axiom,
! [C: int,A: int,B: int] :
( ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ ( times_times_int @ C @ B ) )
= ( ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ A @ B ) )
& ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ B @ A ) ) ) ) ).
% mult_le_cancel_left
thf(fact_634_mult__le__cancel__iff2,axiom,
! [Z2: int,X: int,Y2: int] :
( ( ord_less_int @ zero_zero_int @ Z2 )
=> ( ( ord_less_eq_int @ ( times_times_int @ Z2 @ X ) @ ( times_times_int @ Z2 @ Y2 ) )
= ( ord_less_eq_int @ X @ Y2 ) ) ) ).
% mult_le_cancel_iff2
thf(fact_635_mult__le__cancel__iff1,axiom,
! [Z2: int,X: int,Y2: int] :
( ( ord_less_int @ zero_zero_int @ Z2 )
=> ( ( ord_less_eq_int @ ( times_times_int @ X @ Z2 ) @ ( times_times_int @ Y2 @ Z2 ) )
= ( ord_less_eq_int @ X @ Y2 ) ) ) ).
% mult_le_cancel_iff1
thf(fact_636_mult__left__le,axiom,
! [C: poly_int,A: poly_int] :
( ( ord_less_eq_poly_int @ C @ one_one_poly_int )
=> ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ A )
=> ( ord_less_eq_poly_int @ ( times_times_poly_int @ A @ C ) @ A ) ) ) ).
% mult_left_le
thf(fact_637_mult__left__le,axiom,
! [C: nat,A: nat] :
( ( ord_less_eq_nat @ C @ one_one_nat )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ C ) @ A ) ) ) ).
% mult_left_le
thf(fact_638_mult__left__le,axiom,
! [C: int,A: int] :
( ( ord_less_eq_int @ C @ one_one_int )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ A ) ) ) ).
% mult_left_le
thf(fact_639_mult__le__one,axiom,
! [A: poly_int,B: poly_int] :
( ( ord_less_eq_poly_int @ A @ one_one_poly_int )
=> ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ B )
=> ( ( ord_less_eq_poly_int @ B @ one_one_poly_int )
=> ( ord_less_eq_poly_int @ ( times_times_poly_int @ A @ B ) @ one_one_poly_int ) ) ) ) ).
% mult_le_one
thf(fact_640_mult__le__one,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ one_one_nat )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ( ord_less_eq_nat @ B @ one_one_nat )
=> ( ord_less_eq_nat @ ( times_times_nat @ A @ B ) @ one_one_nat ) ) ) ) ).
% mult_le_one
thf(fact_641_mult__le__one,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ A @ one_one_int )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ( ord_less_eq_int @ B @ one_one_int )
=> ( ord_less_eq_int @ ( times_times_int @ A @ B ) @ one_one_int ) ) ) ) ).
% mult_le_one
thf(fact_642_mult__right__le__one__le,axiom,
! [X: poly_int,Y2: poly_int] :
( ( ord_less_eq_poly_int @ zero_zero_poly_int @ X )
=> ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ Y2 )
=> ( ( ord_less_eq_poly_int @ Y2 @ one_one_poly_int )
=> ( ord_less_eq_poly_int @ ( times_times_poly_int @ X @ Y2 ) @ X ) ) ) ) ).
% mult_right_le_one_le
thf(fact_643_mult__right__le__one__le,axiom,
! [X: int,Y2: int] :
( ( ord_less_eq_int @ zero_zero_int @ X )
=> ( ( ord_less_eq_int @ zero_zero_int @ Y2 )
=> ( ( ord_less_eq_int @ Y2 @ one_one_int )
=> ( ord_less_eq_int @ ( times_times_int @ X @ Y2 ) @ X ) ) ) ) ).
% mult_right_le_one_le
thf(fact_644_mult__left__le__one__le,axiom,
! [X: poly_int,Y2: poly_int] :
( ( ord_less_eq_poly_int @ zero_zero_poly_int @ X )
=> ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ Y2 )
=> ( ( ord_less_eq_poly_int @ Y2 @ one_one_poly_int )
=> ( ord_less_eq_poly_int @ ( times_times_poly_int @ Y2 @ X ) @ X ) ) ) ) ).
% mult_left_le_one_le
thf(fact_645_mult__left__le__one__le,axiom,
! [X: int,Y2: int] :
( ( ord_less_eq_int @ zero_zero_int @ X )
=> ( ( ord_less_eq_int @ zero_zero_int @ Y2 )
=> ( ( ord_less_eq_int @ Y2 @ one_one_int )
=> ( ord_less_eq_int @ ( times_times_int @ Y2 @ X ) @ X ) ) ) ) ).
% mult_left_le_one_le
thf(fact_646_nat__mult__le__cancel1,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ K )
=> ( ( ord_less_eq_nat @ ( times_times_nat @ K @ M ) @ ( times_times_nat @ K @ N ) )
= ( ord_less_eq_nat @ M @ N ) ) ) ).
% nat_mult_le_cancel1
thf(fact_647_le__degree,axiom,
! [P: poly_nat,N: nat] :
( ( ( coeff_nat @ P @ N )
!= zero_zero_nat )
=> ( ord_less_eq_nat @ N @ ( degree_nat @ P ) ) ) ).
% le_degree
thf(fact_648_le__degree,axiom,
! [P: poly_int,N: nat] :
( ( ( coeff_int @ P @ N )
!= zero_zero_int )
=> ( ord_less_eq_nat @ N @ ( degree_int @ P ) ) ) ).
% le_degree
thf(fact_649_le__degree,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( ( coeff_1607515655354303335ring_a @ P @ N )
!= zero_z7902377541816115708ring_a )
=> ( ord_less_eq_nat @ N @ ( degree4881254707062955960ring_a @ P ) ) ) ).
% le_degree
thf(fact_650_mod__le__divisor,axiom,
! [N: nat,M: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_eq_nat @ ( modulo_modulo_nat @ M @ N ) @ N ) ) ).
% mod_le_divisor
thf(fact_651_degree__mult__right__le,axiom,
! [Q: poly_F3299452240248304339ring_a,P: poly_F3299452240248304339ring_a] :
( ( Q != zero_z1830546546923837194ring_a )
=> ( ord_less_eq_nat @ ( degree4881254707062955960ring_a @ P ) @ ( degree4881254707062955960ring_a @ ( times_3242606764180207630ring_a @ P @ Q ) ) ) ) ).
% degree_mult_right_le
thf(fact_652_kyber__ntt_Opsi__psiinv,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ Psi @ Psi_inv )
= one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.psi_psiinv
thf(fact_653_kyber__ntt_Opsi__psiinv,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ Psi @ Psi_inv )
= one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.psi_psiinv
thf(fact_654_NTT__Scheme_Okyber__ntt_Omu__properties_I1_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ Mu @ Omega )
= one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.mu_properties(1)
thf(fact_655_NTT__Scheme_Okyber__ntt_Omu__properties_I1_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ Mu @ Omega )
= one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.mu_properties(1)
thf(fact_656_mult__less__cancel__right2,axiom,
! [A: poly_int,C: poly_int] :
( ( ord_less_poly_int @ ( times_times_poly_int @ A @ C ) @ C )
= ( ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_poly_int @ A @ one_one_poly_int ) )
& ( ( ord_less_eq_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_poly_int @ one_one_poly_int @ A ) ) ) ) ).
% mult_less_cancel_right2
thf(fact_657_mult__less__cancel__right2,axiom,
! [A: int,C: int] :
( ( ord_less_int @ ( times_times_int @ A @ C ) @ C )
= ( ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ A @ one_one_int ) )
& ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_int @ one_one_int @ A ) ) ) ) ).
% mult_less_cancel_right2
thf(fact_658_mult__less__cancel__right1,axiom,
! [C: poly_int,B: poly_int] :
( ( ord_less_poly_int @ C @ ( times_times_poly_int @ B @ C ) )
= ( ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_poly_int @ one_one_poly_int @ B ) )
& ( ( ord_less_eq_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_poly_int @ B @ one_one_poly_int ) ) ) ) ).
% mult_less_cancel_right1
thf(fact_659_mult__less__cancel__right1,axiom,
! [C: int,B: int] :
( ( ord_less_int @ C @ ( times_times_int @ B @ C ) )
= ( ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ one_one_int @ B ) )
& ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_int @ B @ one_one_int ) ) ) ) ).
% mult_less_cancel_right1
thf(fact_660_mult__less__cancel__left2,axiom,
! [C: poly_int,A: poly_int] :
( ( ord_less_poly_int @ ( times_times_poly_int @ C @ A ) @ C )
= ( ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_poly_int @ A @ one_one_poly_int ) )
& ( ( ord_less_eq_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_poly_int @ one_one_poly_int @ A ) ) ) ) ).
% mult_less_cancel_left2
thf(fact_661_mult__less__cancel__left2,axiom,
! [C: int,A: int] :
( ( ord_less_int @ ( times_times_int @ C @ A ) @ C )
= ( ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ A @ one_one_int ) )
& ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_int @ one_one_int @ A ) ) ) ) ).
% mult_less_cancel_left2
thf(fact_662_mult__less__cancel__left1,axiom,
! [C: poly_int,B: poly_int] :
( ( ord_less_poly_int @ C @ ( times_times_poly_int @ C @ B ) )
= ( ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_poly_int @ one_one_poly_int @ B ) )
& ( ( ord_less_eq_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_poly_int @ B @ one_one_poly_int ) ) ) ) ).
% mult_less_cancel_left1
thf(fact_663_mult__less__cancel__left1,axiom,
! [C: int,B: int] :
( ( ord_less_int @ C @ ( times_times_int @ C @ B ) )
= ( ( ( ord_less_eq_int @ zero_zero_int @ C )
=> ( ord_less_int @ one_one_int @ B ) )
& ( ( ord_less_eq_int @ C @ zero_zero_int )
=> ( ord_less_int @ B @ one_one_int ) ) ) ) ).
% mult_less_cancel_left1
thf(fact_664_mult__le__cancel__right2,axiom,
! [A: poly_int,C: poly_int] :
( ( ord_less_eq_poly_int @ ( times_times_poly_int @ A @ C ) @ C )
= ( ( ( ord_less_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_eq_poly_int @ A @ one_one_poly_int ) )
& ( ( ord_less_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_eq_poly_int @ one_one_poly_int @ A ) ) ) ) ).
% mult_le_cancel_right2
thf(fact_665_mult__le__cancel__right2,axiom,
! [A: int,C: int] :
( ( ord_less_eq_int @ ( times_times_int @ A @ C ) @ C )
= ( ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ A @ one_one_int ) )
& ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ one_one_int @ A ) ) ) ) ).
% mult_le_cancel_right2
thf(fact_666_mult__le__cancel__right1,axiom,
! [C: poly_int,B: poly_int] :
( ( ord_less_eq_poly_int @ C @ ( times_times_poly_int @ B @ C ) )
= ( ( ( ord_less_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_eq_poly_int @ one_one_poly_int @ B ) )
& ( ( ord_less_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_eq_poly_int @ B @ one_one_poly_int ) ) ) ) ).
% mult_le_cancel_right1
thf(fact_667_mult__le__cancel__right1,axiom,
! [C: int,B: int] :
( ( ord_less_eq_int @ C @ ( times_times_int @ B @ C ) )
= ( ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ one_one_int @ B ) )
& ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ B @ one_one_int ) ) ) ) ).
% mult_le_cancel_right1
thf(fact_668_mult__le__cancel__left2,axiom,
! [C: poly_int,A: poly_int] :
( ( ord_less_eq_poly_int @ ( times_times_poly_int @ C @ A ) @ C )
= ( ( ( ord_less_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_eq_poly_int @ A @ one_one_poly_int ) )
& ( ( ord_less_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_eq_poly_int @ one_one_poly_int @ A ) ) ) ) ).
% mult_le_cancel_left2
thf(fact_669_mult__le__cancel__left2,axiom,
! [C: int,A: int] :
( ( ord_less_eq_int @ ( times_times_int @ C @ A ) @ C )
= ( ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ A @ one_one_int ) )
& ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ one_one_int @ A ) ) ) ) ).
% mult_le_cancel_left2
thf(fact_670_mult__le__cancel__left1,axiom,
! [C: poly_int,B: poly_int] :
( ( ord_less_eq_poly_int @ C @ ( times_times_poly_int @ C @ B ) )
= ( ( ( ord_less_poly_int @ zero_zero_poly_int @ C )
=> ( ord_less_eq_poly_int @ one_one_poly_int @ B ) )
& ( ( ord_less_poly_int @ C @ zero_zero_poly_int )
=> ( ord_less_eq_poly_int @ B @ one_one_poly_int ) ) ) ) ).
% mult_le_cancel_left1
thf(fact_671_mult__le__cancel__left1,axiom,
! [C: int,B: int] :
( ( ord_less_eq_int @ C @ ( times_times_int @ C @ B ) )
= ( ( ( ord_less_int @ zero_zero_int @ C )
=> ( ord_less_eq_int @ one_one_int @ B ) )
& ( ( ord_less_int @ C @ zero_zero_int )
=> ( ord_less_eq_int @ B @ one_one_int ) ) ) ) ).
% mult_le_cancel_left1
thf(fact_672_degree__le,axiom,
! [N: nat,P: poly_nat] :
( ! [I2: nat] :
( ( ord_less_nat @ N @ I2 )
=> ( ( coeff_nat @ P @ I2 )
= zero_zero_nat ) )
=> ( ord_less_eq_nat @ ( degree_nat @ P ) @ N ) ) ).
% degree_le
thf(fact_673_degree__le,axiom,
! [N: nat,P: poly_int] :
( ! [I2: nat] :
( ( ord_less_nat @ N @ I2 )
=> ( ( coeff_int @ P @ I2 )
= zero_zero_int ) )
=> ( ord_less_eq_nat @ ( degree_int @ P ) @ N ) ) ).
% degree_le
thf(fact_674_degree__le,axiom,
! [N: nat,P: poly_F3299452240248304339ring_a] :
( ! [I2: nat] :
( ( ord_less_nat @ N @ I2 )
=> ( ( coeff_1607515655354303335ring_a @ P @ I2 )
= zero_z7902377541816115708ring_a ) )
=> ( ord_less_eq_nat @ ( degree4881254707062955960ring_a @ P ) @ N ) ) ).
% degree_le
thf(fact_675_degree__less__if__less__eqI,axiom,
! [X: poly_nat,Y2: poly_F3299452240248304339ring_a] :
( ( ord_less_eq_nat @ ( degree_nat @ X ) @ ( degree4881254707062955960ring_a @ Y2 ) )
=> ( ( ( coeff_nat @ X @ ( degree4881254707062955960ring_a @ Y2 ) )
= zero_zero_nat )
=> ( ( X != zero_zero_poly_nat )
=> ( ord_less_nat @ ( degree_nat @ X ) @ ( degree4881254707062955960ring_a @ Y2 ) ) ) ) ) ).
% degree_less_if_less_eqI
thf(fact_676_degree__less__if__less__eqI,axiom,
! [X: poly_int,Y2: poly_F3299452240248304339ring_a] :
( ( ord_less_eq_nat @ ( degree_int @ X ) @ ( degree4881254707062955960ring_a @ Y2 ) )
=> ( ( ( coeff_int @ X @ ( degree4881254707062955960ring_a @ Y2 ) )
= zero_zero_int )
=> ( ( X != zero_zero_poly_int )
=> ( ord_less_nat @ ( degree_int @ X ) @ ( degree4881254707062955960ring_a @ Y2 ) ) ) ) ) ).
% degree_less_if_less_eqI
thf(fact_677_degree__less__if__less__eqI,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a] :
( ( ord_less_eq_nat @ ( degree4881254707062955960ring_a @ X ) @ ( degree4881254707062955960ring_a @ Y2 ) )
=> ( ( ( coeff_1607515655354303335ring_a @ X @ ( degree4881254707062955960ring_a @ Y2 ) )
= zero_z7902377541816115708ring_a )
=> ( ( X != zero_z1830546546923837194ring_a )
=> ( ord_less_nat @ ( degree4881254707062955960ring_a @ X ) @ ( degree4881254707062955960ring_a @ Y2 ) ) ) ) ) ).
% degree_less_if_less_eqI
thf(fact_678_eq__zero__or__degree__less,axiom,
! [P: poly_nat,N: nat] :
( ( ord_less_eq_nat @ ( degree_nat @ P ) @ N )
=> ( ( ( coeff_nat @ P @ N )
= zero_zero_nat )
=> ( ( P = zero_zero_poly_nat )
| ( ord_less_nat @ ( degree_nat @ P ) @ N ) ) ) ) ).
% eq_zero_or_degree_less
thf(fact_679_eq__zero__or__degree__less,axiom,
! [P: poly_int,N: nat] :
( ( ord_less_eq_nat @ ( degree_int @ P ) @ N )
=> ( ( ( coeff_int @ P @ N )
= zero_zero_int )
=> ( ( P = zero_zero_poly_int )
| ( ord_less_nat @ ( degree_int @ P ) @ N ) ) ) ) ).
% eq_zero_or_degree_less
thf(fact_680_eq__zero__or__degree__less,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( ord_less_eq_nat @ ( degree4881254707062955960ring_a @ P ) @ N )
=> ( ( ( coeff_1607515655354303335ring_a @ P @ N )
= zero_z7902377541816115708ring_a )
=> ( ( P = zero_z1830546546923837194ring_a )
| ( ord_less_nat @ ( degree4881254707062955960ring_a @ P ) @ N ) ) ) ) ).
% eq_zero_or_degree_less
thf(fact_681_kyber__ntt_Ocoeff__of__qr__zero,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,F: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_eq_nat @ N @ I )
=> ( ( coeff_1607515655354303335ring_a @ ( kyber_of_qr_a @ F ) @ I )
= zero_z7902377541816115708ring_a ) ) ) ).
% kyber_ntt.coeff_of_qr_zero
thf(fact_682_kyber__ntt_Ocoeff__of__qr__zero,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat,F: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ord_less_eq_nat @ N @ I )
=> ( ( coeff_1607515655354303335ring_a @ ( kyber_of_qr_a @ F ) @ I )
= zero_z7902377541816115708ring_a ) ) ) ).
% kyber_ntt.coeff_of_qr_zero
thf(fact_683_less__numeral__extra_I3_J,axiom,
~ ( ord_less_nat @ zero_zero_nat @ zero_zero_nat ) ).
% less_numeral_extra(3)
thf(fact_684_less__numeral__extra_I3_J,axiom,
~ ( ord_less_int @ zero_zero_int @ zero_zero_int ) ).
% less_numeral_extra(3)
thf(fact_685_less__numeral__extra_I4_J,axiom,
~ ( ord_less_poly_int @ one_one_poly_int @ one_one_poly_int ) ).
% less_numeral_extra(4)
thf(fact_686_less__numeral__extra_I4_J,axiom,
~ ( ord_less_nat @ one_one_nat @ one_one_nat ) ).
% less_numeral_extra(4)
thf(fact_687_less__numeral__extra_I4_J,axiom,
~ ( ord_less_int @ one_one_int @ one_one_int ) ).
% less_numeral_extra(4)
thf(fact_688_kyber__ntt_Oomega__properties__ex,axiom,
~ ! [Omega2: finite_mod_ring_a] :
( ( ( power_6826135765519566523ring_a @ Omega2 @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
= one_on2109788427901206336ring_a )
=> ( ( Omega2 != one_on2109788427901206336ring_a )
=> ~ ! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ Omega2 @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ M2 ) ) ) ) ).
% kyber_ntt.omega_properties_ex
thf(fact_689_kyber__ntt_Oomega__exists,axiom,
? [Omega2: finite_mod_ring_a] :
( ( ( power_6826135765519566523ring_a @ Omega2 @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
= one_on2109788427901206336ring_a )
& ( Omega2 != one_on2109788427901206336ring_a )
& ! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ Omega2 @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ M2 ) ) ) ).
% kyber_ntt.omega_exists
thf(fact_690_length__ntt__coeffs,axiom,
! [F: kyber_qr_a] : ( ord_less_eq_nat @ ( size_s7115545719440041015ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ F ) ) @ n ) ).
% length_ntt_coeffs
thf(fact_691_poly__cutoff__1,axiom,
! [N: nat] :
( ( ( N = zero_zero_nat )
=> ( ( poly_cutoff_int @ N @ one_one_poly_int )
= zero_zero_poly_int ) )
& ( ( N != zero_zero_nat )
=> ( ( poly_cutoff_int @ N @ one_one_poly_int )
= one_one_poly_int ) ) ) ).
% poly_cutoff_1
thf(fact_692_psi__psiinv,axiom,
( ( times_5121417576591743744ring_a @ psi @ psi_inv )
= one_on2109788427901206336ring_a ) ).
% psi_psiinv
thf(fact_693_less__eq__fract__respect,axiom,
! [B: int,B3: int,D: int,D2: int,A: int,A3: int,C: int,C2: int] :
( ( B != zero_zero_int )
=> ( ( B3 != zero_zero_int )
=> ( ( D != zero_zero_int )
=> ( ( D2 != zero_zero_int )
=> ( ( ( times_times_int @ A @ B3 )
= ( times_times_int @ A3 @ B ) )
=> ( ( ( times_times_int @ C @ D2 )
= ( times_times_int @ C2 @ D ) )
=> ( ( ord_less_eq_int @ ( times_times_int @ ( times_times_int @ A @ D ) @ ( times_times_int @ B @ D ) ) @ ( times_times_int @ ( times_times_int @ C @ B ) @ ( times_times_int @ B @ D ) ) )
= ( ord_less_eq_int @ ( times_times_int @ ( times_times_int @ A3 @ D2 ) @ ( times_times_int @ B3 @ D2 ) ) @ ( times_times_int @ ( times_times_int @ C2 @ B3 ) @ ( times_times_int @ B3 @ D2 ) ) ) ) ) ) ) ) ) ) ).
% less_eq_fract_respect
thf(fact_694_kyber__ntt_Oexp__rule,axiom,
! [C: finite_mod_ring_a,D: finite_mod_ring_a,E: nat] :
( ( power_6826135765519566523ring_a @ ( times_5121417576591743744ring_a @ C @ D ) @ E )
= ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ C @ E ) @ ( power_6826135765519566523ring_a @ D @ E ) ) ) ).
% kyber_ntt.exp_rule
thf(fact_695_inv__psi__exp,axiom,
! [I: nat] :
( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ psi_inv @ I ) @ ( power_6826135765519566523ring_a @ psi @ I ) )
= one_on2109788427901206336ring_a ) ).
% inv_psi_exp
thf(fact_696_psi__inv__exp,axiom,
! [I: nat] :
( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ psi @ I ) @ ( power_6826135765519566523ring_a @ psi_inv @ I ) )
= one_on2109788427901206336ring_a ) ).
% psi_inv_exp
thf(fact_697_length__map,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a] :
( ( size_s7115545719440041015ring_a @ ( map_Pr8707103244924889698ring_a @ F @ Xs ) )
= ( size_s681732177277979353ring_a @ Xs ) ) ).
% length_map
thf(fact_698_length__map,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a] :
( ( size_s7115545719440041015ring_a @ ( map_Fi7082711781076630404ring_a @ F @ Xs ) )
= ( size_s7115545719440041015ring_a @ Xs ) ) ).
% length_map
thf(fact_699_length__map,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat] :
( ( size_s7115545719440041015ring_a @ ( map_na1928064127006292399ring_a @ F @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_map
thf(fact_700_length__map,axiom,
! [F: finite_mod_ring_a > nat,Xs: list_F4626807571770296779ring_a] :
( ( size_size_list_nat @ ( map_Fi4188601705611449169_a_nat @ F @ Xs ) )
= ( size_s7115545719440041015ring_a @ Xs ) ) ).
% length_map
thf(fact_701_length__map,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( size_size_list_nat @ ( map_nat_nat @ F @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_map
thf(fact_702_nat__le__0,axiom,
! [Z2: int] :
( ( ord_less_eq_int @ Z2 @ zero_zero_int )
=> ( ( nat2 @ Z2 )
= zero_zero_nat ) ) ).
% nat_le_0
thf(fact_703_nat__0__iff,axiom,
! [I: int] :
( ( ( nat2 @ I )
= zero_zero_nat )
= ( ord_less_eq_int @ I @ zero_zero_int ) ) ).
% nat_0_iff
thf(fact_704_int__nat__eq,axiom,
! [Z2: int] :
( ( ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ( semiri1314217659103216013at_int @ ( nat2 @ Z2 ) )
= Z2 ) )
& ( ~ ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ( semiri1314217659103216013at_int @ ( nat2 @ Z2 ) )
= zero_zero_int ) ) ) ).
% int_nat_eq
thf(fact_705_mod__neg__neg__trivial,axiom,
! [K: int,L: int] :
( ( ord_less_eq_int @ K @ zero_zero_int )
=> ( ( ord_less_int @ L @ K )
=> ( ( modulo_modulo_int @ K @ L )
= K ) ) ) ).
% mod_neg_neg_trivial
thf(fact_706_mod__pos__pos__trivial,axiom,
! [K: int,L: int] :
( ( ord_less_eq_int @ zero_zero_int @ K )
=> ( ( ord_less_int @ K @ L )
=> ( ( modulo_modulo_int @ K @ L )
= K ) ) ) ).
% mod_pos_pos_trivial
thf(fact_707_nth__map,axiom,
! [N: nat,Xs: list_P3622523039039653997ring_a,F: produc4299165986903738727ring_a > finite_mod_ring_a] :
( ( ord_less_nat @ N @ ( size_s681732177277979353ring_a @ Xs ) )
=> ( ( nth_Fi694352073394265932ring_a @ ( map_Pr8707103244924889698ring_a @ F @ Xs ) @ N )
= ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ N ) ) ) ) ).
% nth_map
thf(fact_708_nth__map,axiom,
! [N: nat,Xs: list_F4626807571770296779ring_a,F: finite_mod_ring_a > nat] :
( ( ord_less_nat @ N @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( nth_nat @ ( map_Fi4188601705611449169_a_nat @ F @ Xs ) @ N )
= ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ N ) ) ) ) ).
% nth_map
thf(fact_709_nth__map,axiom,
! [N: nat,Xs: list_F4626807571770296779ring_a,F: finite_mod_ring_a > finite_mod_ring_a] :
( ( ord_less_nat @ N @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( nth_Fi694352073394265932ring_a @ ( map_Fi7082711781076630404ring_a @ F @ Xs ) @ N )
= ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ N ) ) ) ) ).
% nth_map
thf(fact_710_nth__map,axiom,
! [N: nat,Xs: list_nat,F: nat > finite_mod_ring_a] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_Fi694352073394265932ring_a @ ( map_na1928064127006292399ring_a @ F @ Xs ) @ N )
= ( F @ ( nth_nat @ Xs @ N ) ) ) ) ).
% nth_map
thf(fact_711_nth__map,axiom,
! [N: nat,Xs: list_nat,F: nat > nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( map_nat_nat @ F @ Xs ) @ N )
= ( F @ ( nth_nat @ Xs @ N ) ) ) ) ).
% nth_map
thf(fact_712_Ex__list__of__length,axiom,
! [N: nat] :
? [Xs3: list_F4626807571770296779ring_a] :
( ( size_s7115545719440041015ring_a @ Xs3 )
= N ) ).
% Ex_list_of_length
thf(fact_713_Ex__list__of__length,axiom,
! [N: nat] :
? [Xs3: list_nat] :
( ( size_size_list_nat @ Xs3 )
= N ) ).
% Ex_list_of_length
thf(fact_714_neq__if__length__neq,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs )
!= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( Xs != Ys ) ) ).
% neq_if_length_neq
thf(fact_715_neq__if__length__neq,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( size_size_list_nat @ Xs )
!= ( size_size_list_nat @ Ys ) )
=> ( Xs != Ys ) ) ).
% neq_if_length_neq
thf(fact_716_size__neq__size__imp__neq,axiom,
! [X: list_F4626807571770296779ring_a,Y2: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ X )
!= ( size_s7115545719440041015ring_a @ Y2 ) )
=> ( X != Y2 ) ) ).
% size_neq_size_imp_neq
thf(fact_717_size__neq__size__imp__neq,axiom,
! [X: list_nat,Y2: list_nat] :
( ( ( size_size_list_nat @ X )
!= ( size_size_list_nat @ Y2 ) )
=> ( X != Y2 ) ) ).
% size_neq_size_imp_neq
thf(fact_718_coeff__0__power,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( coeff_1607515655354303335ring_a @ ( power_6500929916544582089ring_a @ P @ N ) @ zero_zero_nat )
= ( power_6826135765519566523ring_a @ ( coeff_1607515655354303335ring_a @ P @ zero_zero_nat ) @ N ) ) ).
% coeff_0_power
thf(fact_719_coeff__0__power,axiom,
! [P: poly_int,N: nat] :
( ( coeff_int @ ( power_power_poly_int @ P @ N ) @ zero_zero_nat )
= ( power_power_int @ ( coeff_int @ P @ zero_zero_nat ) @ N ) ) ).
% coeff_0_power
thf(fact_720_coeff__0__power,axiom,
! [P: poly_nat,N: nat] :
( ( coeff_nat @ ( power_power_poly_nat @ P @ N ) @ zero_zero_nat )
= ( power_power_nat @ ( coeff_nat @ P @ zero_zero_nat ) @ N ) ) ).
% coeff_0_power
thf(fact_721_lead__coeff__power,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( coeff_1607515655354303335ring_a @ ( power_6500929916544582089ring_a @ P @ N ) @ ( degree4881254707062955960ring_a @ ( power_6500929916544582089ring_a @ P @ N ) ) )
= ( power_6826135765519566523ring_a @ ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) ) @ N ) ) ).
% lead_coeff_power
thf(fact_722_lead__coeff__power,axiom,
! [P: poly_int,N: nat] :
( ( coeff_int @ ( power_power_poly_int @ P @ N ) @ ( degree_int @ ( power_power_poly_int @ P @ N ) ) )
= ( power_power_int @ ( coeff_int @ P @ ( degree_int @ P ) ) @ N ) ) ).
% lead_coeff_power
thf(fact_723_lead__coeff__power,axiom,
! [P: poly_nat,N: nat] :
( ( coeff_nat @ ( power_power_poly_nat @ P @ N ) @ ( degree_nat @ ( power_power_poly_nat @ P @ N ) ) )
= ( power_power_nat @ ( coeff_nat @ P @ ( degree_nat @ P ) ) @ N ) ) ).
% lead_coeff_power
thf(fact_724_length__induct,axiom,
! [P4: list_F4626807571770296779ring_a > $o,Xs: list_F4626807571770296779ring_a] :
( ! [Xs3: list_F4626807571770296779ring_a] :
( ! [Ys2: list_F4626807571770296779ring_a] :
( ( ord_less_nat @ ( size_s7115545719440041015ring_a @ Ys2 ) @ ( size_s7115545719440041015ring_a @ Xs3 ) )
=> ( P4 @ Ys2 ) )
=> ( P4 @ Xs3 ) )
=> ( P4 @ Xs ) ) ).
% length_induct
thf(fact_725_length__induct,axiom,
! [P4: list_nat > $o,Xs: list_nat] :
( ! [Xs3: list_nat] :
( ! [Ys2: list_nat] :
( ( ord_less_nat @ ( size_size_list_nat @ Ys2 ) @ ( size_size_list_nat @ Xs3 ) )
=> ( P4 @ Ys2 ) )
=> ( P4 @ Xs3 ) )
=> ( P4 @ Xs ) ) ).
% length_induct
thf(fact_726_map__eq__imp__length__eq,axiom,
! [F: nat > nat,Xs: list_nat,G: nat > nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
=> ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_727_map__eq__imp__length__eq,axiom,
! [F: finite_mod_ring_a > nat,Xs: list_F4626807571770296779ring_a,G: nat > nat,Ys: list_nat] :
( ( ( map_Fi4188601705611449169_a_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
=> ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_728_map__eq__imp__length__eq,axiom,
! [F: nat > nat,Xs: list_nat,G: finite_mod_ring_a > nat,Ys: list_F4626807571770296779ring_a] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_Fi4188601705611449169_a_nat @ G @ Ys ) )
=> ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_729_map__eq__imp__length__eq,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
=> ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_730_map__eq__imp__length__eq,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
=> ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_731_map__eq__imp__length__eq,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
=> ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_732_map__eq__imp__length__eq,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
=> ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_733_map__eq__imp__length__eq,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
=> ( ( size_s681732177277979353ring_a @ Xs )
= ( size_size_list_nat @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_734_map__eq__imp__length__eq,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: produc4299165986903738727ring_a > finite_mod_ring_a,Ys: list_P3622523039039653997ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_Pr8707103244924889698ring_a @ G @ Ys ) )
=> ( ( size_size_list_nat @ Xs )
= ( size_s681732177277979353ring_a @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_735_map__eq__imp__length__eq,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
=> ( ( size_s681732177277979353ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_736_power__mod,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,N: nat] :
( ( modulo8308552932176287283ring_a @ ( power_6826135765519566523ring_a @ ( modulo8308552932176287283ring_a @ A @ B ) @ N ) @ B )
= ( modulo8308552932176287283ring_a @ ( power_6826135765519566523ring_a @ A @ N ) @ B ) ) ).
% power_mod
thf(fact_737_power__mod,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,N: nat] :
( ( modulo2591651872109920577ring_a @ ( power_6500929916544582089ring_a @ ( modulo2591651872109920577ring_a @ A @ B ) @ N ) @ B )
= ( modulo2591651872109920577ring_a @ ( power_6500929916544582089ring_a @ A @ N ) @ B ) ) ).
% power_mod
thf(fact_738_power__mod,axiom,
! [A: nat,B: nat,N: nat] :
( ( modulo_modulo_nat @ ( power_power_nat @ ( modulo_modulo_nat @ A @ B ) @ N ) @ B )
= ( modulo_modulo_nat @ ( power_power_nat @ A @ N ) @ B ) ) ).
% power_mod
thf(fact_739_power__mod,axiom,
! [A: int,B: int,N: nat] :
( ( modulo_modulo_int @ ( power_power_int @ ( modulo_modulo_int @ A @ B ) @ N ) @ B )
= ( modulo_modulo_int @ ( power_power_int @ A @ N ) @ B ) ) ).
% power_mod
thf(fact_740_less__eq__int__code_I1_J,axiom,
ord_less_eq_int @ zero_zero_int @ zero_zero_int ).
% less_eq_int_code(1)
thf(fact_741_list__eq__iff__nth__eq,axiom,
( ( ^ [Y: list_F4626807571770296779ring_a,Z: list_F4626807571770296779ring_a] : ( Y = Z ) )
= ( ^ [Xs2: list_F4626807571770296779ring_a,Ys3: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs2 )
= ( size_s7115545719440041015ring_a @ Ys3 ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Xs2 ) )
=> ( ( nth_Fi694352073394265932ring_a @ Xs2 @ I4 )
= ( nth_Fi694352073394265932ring_a @ Ys3 @ I4 ) ) ) ) ) ) ).
% list_eq_iff_nth_eq
thf(fact_742_list__eq__iff__nth__eq,axiom,
( ( ^ [Y: list_nat,Z: list_nat] : ( Y = Z ) )
= ( ^ [Xs2: list_nat,Ys3: list_nat] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs2 ) )
=> ( ( nth_nat @ Xs2 @ I4 )
= ( nth_nat @ Ys3 @ I4 ) ) ) ) ) ) ).
% list_eq_iff_nth_eq
thf(fact_743_Skolem__list__nth,axiom,
! [K: nat,P4: nat > finite_mod_ring_a > $o] :
( ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ K )
=> ? [X4: finite_mod_ring_a] : ( P4 @ I4 @ X4 ) ) )
= ( ? [Xs2: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs2 )
= K )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ K )
=> ( P4 @ I4 @ ( nth_Fi694352073394265932ring_a @ Xs2 @ I4 ) ) ) ) ) ) ).
% Skolem_list_nth
thf(fact_744_Skolem__list__nth,axiom,
! [K: nat,P4: nat > nat > $o] :
( ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ K )
=> ? [X4: nat] : ( P4 @ I4 @ X4 ) ) )
= ( ? [Xs2: list_nat] :
( ( ( size_size_list_nat @ Xs2 )
= K )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ K )
=> ( P4 @ I4 @ ( nth_nat @ Xs2 @ I4 ) ) ) ) ) ) ).
% Skolem_list_nth
thf(fact_745_nth__equalityI,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ! [I2: nat] :
( ( ord_less_nat @ I2 @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( nth_Fi694352073394265932ring_a @ Xs @ I2 )
= ( nth_Fi694352073394265932ring_a @ Ys @ I2 ) ) )
=> ( Xs = Ys ) ) ) ).
% nth_equalityI
thf(fact_746_nth__equalityI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ! [I2: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ Xs @ I2 )
= ( nth_nat @ Ys @ I2 ) ) )
=> ( Xs = Ys ) ) ) ).
% nth_equalityI
thf(fact_747_nat__int__comparison_I3_J,axiom,
( ord_less_eq_nat
= ( ^ [A2: nat,B2: nat] : ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ).
% nat_int_comparison(3)
thf(fact_748_zle__int,axiom,
! [M: nat,N: nat] :
( ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) )
= ( ord_less_eq_nat @ M @ N ) ) ).
% zle_int
thf(fact_749_zero__le__imp__eq__int,axiom,
! [K: int] :
( ( ord_less_eq_int @ zero_zero_int @ K )
=> ? [N3: nat] :
( K
= ( semiri1314217659103216013at_int @ N3 ) ) ) ).
% zero_le_imp_eq_int
thf(fact_750_nonneg__int__cases,axiom,
! [K: int] :
( ( ord_less_eq_int @ zero_zero_int @ K )
=> ~ ! [N3: nat] :
( K
!= ( semiri1314217659103216013at_int @ N3 ) ) ) ).
% nonneg_int_cases
thf(fact_751_nat__mono,axiom,
! [X: int,Y2: int] :
( ( ord_less_eq_int @ X @ Y2 )
=> ( ord_less_eq_nat @ ( nat2 @ X ) @ ( nat2 @ Y2 ) ) ) ).
% nat_mono
thf(fact_752_eq__nat__nat__iff,axiom,
! [Z2: int,Z3: int] :
( ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ( ord_less_eq_int @ zero_zero_int @ Z3 )
=> ( ( ( nat2 @ Z2 )
= ( nat2 @ Z3 ) )
= ( Z2 = Z3 ) ) ) ) ).
% eq_nat_nat_iff
thf(fact_753_all__nat,axiom,
( ( ^ [P5: nat > $o] :
! [X5: nat] : ( P5 @ X5 ) )
= ( ^ [P6: nat > $o] :
! [X2: int] :
( ( ord_less_eq_int @ zero_zero_int @ X2 )
=> ( P6 @ ( nat2 @ X2 ) ) ) ) ) ).
% all_nat
thf(fact_754_ex__nat,axiom,
( ( ^ [P5: nat > $o] :
? [X5: nat] : ( P5 @ X5 ) )
= ( ^ [P6: nat > $o] :
? [X2: int] :
( ( ord_less_eq_int @ zero_zero_int @ X2 )
& ( P6 @ ( nat2 @ X2 ) ) ) ) ) ).
% ex_nat
thf(fact_755_zmod__le__nonneg__dividend,axiom,
! [M: int,K: int] :
( ( ord_less_eq_int @ zero_zero_int @ M )
=> ( ord_less_eq_int @ ( modulo_modulo_int @ M @ K ) @ M ) ) ).
% zmod_le_nonneg_dividend
thf(fact_756_nth__default__beyond,axiom,
! [Xs: list_nat,N: nat,Dflt2: nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ N )
=> ( ( more_nth_default_nat @ Dflt2 @ Xs @ N )
= Dflt2 ) ) ).
% nth_default_beyond
thf(fact_757_nth__default__beyond,axiom,
! [Xs: list_F4626807571770296779ring_a,N: nat,Dflt2: finite_mod_ring_a] :
( ( ord_less_eq_nat @ ( size_s7115545719440041015ring_a @ Xs ) @ N )
=> ( ( more_n3412881383938893606ring_a @ Dflt2 @ Xs @ N )
= Dflt2 ) ) ).
% nth_default_beyond
thf(fact_758_NTT__Scheme_Okyber__ntt_Oomega__properties_I1_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( power_6826135765519566523ring_a @ Omega @ N )
= one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.omega_properties(1)
thf(fact_759_NTT__Scheme_Okyber__ntt_Oomega__properties_I1_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( power_6826135765519566523ring_a @ Omega @ N )
= one_on2109788427901206336ring_a ) ) ).
% NTT_Scheme.kyber_ntt.omega_properties(1)
thf(fact_760_nat__leq__as__int,axiom,
( ord_less_eq_nat
= ( ^ [A2: nat,B2: nat] : ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ).
% nat_leq_as_int
thf(fact_761_map__equality__iff,axiom,
! [F: nat > nat,Xs: list_nat,G: nat > nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_762_map__equality__iff,axiom,
! [F: finite_mod_ring_a > nat,Xs: list_F4626807571770296779ring_a,G: nat > nat,Ys: list_nat] :
( ( ( map_Fi4188601705611449169_a_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
= ( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_763_map__equality__iff,axiom,
! [F: nat > nat,Xs: list_nat,G: finite_mod_ring_a > nat,Ys: list_F4626807571770296779ring_a] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_Fi4188601705611449169_a_nat @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_764_map__equality__iff,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_765_map__equality__iff,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
= ( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_766_map__equality__iff,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_767_map__equality__iff,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
= ( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_768_map__equality__iff,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
= ( ( ( size_s681732177277979353ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_769_map__equality__iff,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: produc4299165986903738727ring_a > finite_mod_ring_a,Ys: list_P3622523039039653997ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_Pr8707103244924889698ring_a @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_s681732177277979353ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s681732177277979353ring_a @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_Pr6403360895060014830ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_770_map__equality__iff,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
= ( ( ( size_s681732177277979353ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_771_degree__Poly,axiom,
! [Xs: list_F4626807571770296779ring_a] : ( ord_less_eq_nat @ ( degree4881254707062955960ring_a @ ( poly_F5739129160929385880ring_a @ Xs ) ) @ ( size_s7115545719440041015ring_a @ Xs ) ) ).
% degree_Poly
thf(fact_772_degree__Poly,axiom,
! [Xs: list_nat] : ( ord_less_eq_nat @ ( degree_nat @ ( poly_nat2 @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ).
% degree_Poly
thf(fact_773_int__one__le__iff__zero__less,axiom,
! [Z2: int] :
( ( ord_less_eq_int @ one_one_int @ Z2 )
= ( ord_less_int @ zero_zero_int @ Z2 ) ) ).
% int_one_le_iff_zero_less
thf(fact_774_nat__le__iff,axiom,
! [X: int,N: nat] :
( ( ord_less_eq_nat @ ( nat2 @ X ) @ N )
= ( ord_less_eq_int @ X @ ( semiri1314217659103216013at_int @ N ) ) ) ).
% nat_le_iff
thf(fact_775_nat__0__le,axiom,
! [Z2: int] :
( ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ( semiri1314217659103216013at_int @ ( nat2 @ Z2 ) )
= Z2 ) ) ).
% nat_0_le
thf(fact_776_int__eq__iff,axiom,
! [M: nat,Z2: int] :
( ( ( semiri1314217659103216013at_int @ M )
= Z2 )
= ( ( M
= ( nat2 @ Z2 ) )
& ( ord_less_eq_int @ zero_zero_int @ Z2 ) ) ) ).
% int_eq_iff
thf(fact_777_nth__default__eq__dflt__iff,axiom,
! [Dflt2: nat,Xs: list_nat,K: nat] :
( ( ( more_nth_default_nat @ Dflt2 @ Xs @ K )
= Dflt2 )
= ( ( ord_less_nat @ K @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ Xs @ K )
= Dflt2 ) ) ) ).
% nth_default_eq_dflt_iff
thf(fact_778_nth__default__eq__dflt__iff,axiom,
! [Dflt2: finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,K: nat] :
( ( ( more_n3412881383938893606ring_a @ Dflt2 @ Xs @ K )
= Dflt2 )
= ( ( ord_less_nat @ K @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( nth_Fi694352073394265932ring_a @ Xs @ K )
= Dflt2 ) ) ) ).
% nth_default_eq_dflt_iff
thf(fact_779_nth__default__nth,axiom,
! [N: nat,Xs: list_nat,Dflt2: nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( more_nth_default_nat @ Dflt2 @ Xs @ N )
= ( nth_nat @ Xs @ N ) ) ) ).
% nth_default_nth
thf(fact_780_nth__default__nth,axiom,
! [N: nat,Xs: list_F4626807571770296779ring_a,Dflt2: finite_mod_ring_a] :
( ( ord_less_nat @ N @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( more_n3412881383938893606ring_a @ Dflt2 @ Xs @ N )
= ( nth_Fi694352073394265932ring_a @ Xs @ N ) ) ) ).
% nth_default_nth
thf(fact_781_nth__default__def,axiom,
( more_nth_default_nat
= ( ^ [Dflt3: nat,Xs2: list_nat,N2: nat] : ( if_nat @ ( ord_less_nat @ N2 @ ( size_size_list_nat @ Xs2 ) ) @ ( nth_nat @ Xs2 @ N2 ) @ Dflt3 ) ) ) ).
% nth_default_def
thf(fact_782_nth__default__def,axiom,
( more_n3412881383938893606ring_a
= ( ^ [Dflt3: finite_mod_ring_a,Xs2: list_F4626807571770296779ring_a,N2: nat] : ( if_Finite_mod_ring_a @ ( ord_less_nat @ N2 @ ( size_s7115545719440041015ring_a @ Xs2 ) ) @ ( nth_Fi694352073394265932ring_a @ Xs2 @ N2 ) @ Dflt3 ) ) ) ).
% nth_default_def
thf(fact_783_neg__mod__sign,axiom,
! [L: int,K: int] :
( ( ord_less_int @ L @ zero_zero_int )
=> ( ord_less_eq_int @ ( modulo_modulo_int @ K @ L ) @ zero_zero_int ) ) ).
% neg_mod_sign
thf(fact_784_Euclidean__Division_Opos__mod__sign,axiom,
! [L: int,K: int] :
( ( ord_less_int @ zero_zero_int @ L )
=> ( ord_less_eq_int @ zero_zero_int @ ( modulo_modulo_int @ K @ L ) ) ) ).
% Euclidean_Division.pos_mod_sign
thf(fact_785_zmod__trivial__iff,axiom,
! [I: int,K: int] :
( ( ( modulo_modulo_int @ I @ K )
= I )
= ( ( K = zero_zero_int )
| ( ( ord_less_eq_int @ zero_zero_int @ I )
& ( ord_less_int @ I @ K ) )
| ( ( ord_less_eq_int @ I @ zero_zero_int )
& ( ord_less_int @ K @ I ) ) ) ) ).
% zmod_trivial_iff
thf(fact_786_kyber__ntt_Oinv__psi__exp,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ Psi_inv @ I ) @ ( power_6826135765519566523ring_a @ Psi @ I ) )
= one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.inv_psi_exp
thf(fact_787_kyber__ntt_Oinv__psi__exp,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ Psi_inv @ I ) @ ( power_6826135765519566523ring_a @ Psi @ I ) )
= one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.inv_psi_exp
thf(fact_788_kyber__ntt_Opsi__inv__exp,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ Psi @ I ) @ ( power_6826135765519566523ring_a @ Psi_inv @ I ) )
= one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.psi_inv_exp
thf(fact_789_kyber__ntt_Opsi__inv__exp,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,I: nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ Psi @ I ) @ ( power_6826135765519566523ring_a @ Psi_inv @ I ) )
= one_on2109788427901206336ring_a ) ) ).
% kyber_ntt.psi_inv_exp
thf(fact_790_NTT__Scheme_Okyber__ntt_Oomega__properties_I3_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ Omega @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ N @ M2 ) ) ) ).
% NTT_Scheme.kyber_ntt.omega_properties(3)
thf(fact_791_NTT__Scheme_Okyber__ntt_Oomega__properties_I3_J,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ Omega @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ N @ M2 ) ) ) ).
% NTT_Scheme.kyber_ntt.omega_properties(3)
thf(fact_792_kyber__ntt_Omu__prop,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ Mu @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ N @ M2 ) ) ) ).
% kyber_ntt.mu_prop
thf(fact_793_kyber__ntt_Omu__prop,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ Mu @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ N @ M2 ) ) ) ).
% kyber_ntt.mu_prop
thf(fact_794_kyber__ntt_Omu__prop_H,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,M5: nat] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ( power_6826135765519566523ring_a @ Mu @ M5 )
= one_on2109788427901206336ring_a )
=> ( ( M5 != zero_zero_nat )
=> ( ord_less_eq_nat @ N @ M5 ) ) ) ) ).
% kyber_ntt.mu_prop'
thf(fact_795_kyber__ntt_Omu__prop_H,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,M5: nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ( power_6826135765519566523ring_a @ Mu @ M5 )
= one_on2109788427901206336ring_a )
=> ( ( M5 != zero_zero_nat )
=> ( ord_less_eq_nat @ N @ M5 ) ) ) ) ).
% kyber_ntt.mu_prop'
thf(fact_796_kyber__ntt_Oomega__prop_H,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,M5: nat] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ( power_6826135765519566523ring_a @ Omega @ M5 )
= one_on2109788427901206336ring_a )
=> ( ( M5 != zero_zero_nat )
=> ( ord_less_eq_nat @ N @ M5 ) ) ) ) ).
% kyber_ntt.omega_prop'
thf(fact_797_kyber__ntt_Oomega__prop_H,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,M5: nat] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ( ( power_6826135765519566523ring_a @ Omega @ M5 )
= one_on2109788427901206336ring_a )
=> ( ( M5 != zero_zero_nat )
=> ( ord_less_eq_nat @ N @ M5 ) ) ) ) ).
% kyber_ntt.omega_prop'
thf(fact_798_nat__eq__iff,axiom,
! [W: int,M: nat] :
( ( ( nat2 @ W )
= M )
= ( ( ( ord_less_eq_int @ zero_zero_int @ W )
=> ( W
= ( semiri1314217659103216013at_int @ M ) ) )
& ( ~ ( ord_less_eq_int @ zero_zero_int @ W )
=> ( M = zero_zero_nat ) ) ) ) ).
% nat_eq_iff
thf(fact_799_nat__eq__iff2,axiom,
! [M: nat,W: int] :
( ( M
= ( nat2 @ W ) )
= ( ( ( ord_less_eq_int @ zero_zero_int @ W )
=> ( W
= ( semiri1314217659103216013at_int @ M ) ) )
& ( ~ ( ord_less_eq_int @ zero_zero_int @ W )
=> ( M = zero_zero_nat ) ) ) ) ).
% nat_eq_iff2
thf(fact_800_le__nat__iff,axiom,
! [K: int,N: nat] :
( ( ord_less_eq_int @ zero_zero_int @ K )
=> ( ( ord_less_eq_nat @ N @ ( nat2 @ K ) )
= ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ N ) @ K ) ) ) ).
% le_nat_iff
thf(fact_801_nat__less__eq__zless,axiom,
! [W: int,Z2: int] :
( ( ord_less_eq_int @ zero_zero_int @ W )
=> ( ( ord_less_nat @ ( nat2 @ W ) @ ( nat2 @ Z2 ) )
= ( ord_less_int @ W @ Z2 ) ) ) ).
% nat_less_eq_zless
thf(fact_802_nat__le__eq__zle,axiom,
! [W: int,Z2: int] :
( ( ( ord_less_int @ zero_zero_int @ W )
| ( ord_less_eq_int @ zero_zero_int @ Z2 ) )
=> ( ( ord_less_eq_nat @ ( nat2 @ W ) @ ( nat2 @ Z2 ) )
= ( ord_less_eq_int @ W @ Z2 ) ) ) ).
% nat_le_eq_zle
thf(fact_803_nat__mult__distrib,axiom,
! [Z2: int,Z3: int] :
( ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ( nat2 @ ( times_times_int @ Z2 @ Z3 ) )
= ( times_times_nat @ ( nat2 @ Z2 ) @ ( nat2 @ Z3 ) ) ) ) ).
% nat_mult_distrib
thf(fact_804_nat__mod__distrib,axiom,
! [X: int,Y2: int] :
( ( ord_less_eq_int @ zero_zero_int @ X )
=> ( ( ord_less_eq_int @ zero_zero_int @ Y2 )
=> ( ( nat2 @ ( modulo_modulo_int @ X @ Y2 ) )
= ( modulo_modulo_nat @ ( nat2 @ X ) @ ( nat2 @ Y2 ) ) ) ) ) ).
% nat_mod_distrib
thf(fact_805_map__nth__default,axiom,
! [X: nat,Xs: list_nat] :
( ( map_nat_nat @ ( more_nth_default_nat @ X @ Xs ) @ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Xs ) ) )
= Xs ) ).
% map_nth_default
thf(fact_806_map__nth__default,axiom,
! [X: finite_mod_ring_a,Xs: list_F4626807571770296779ring_a] :
( ( map_na1928064127006292399ring_a @ ( more_n3412881383938893606ring_a @ X @ Xs ) @ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Xs ) ) )
= Xs ) ).
% map_nth_default
thf(fact_807_kyber__ntt_Olength__ntt__coeffs,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a] :
( ( nTT_kyber_ntt_a_a @ type_a @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ord_less_eq_nat @ ( size_s7115545719440041015ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) @ N ) ) ).
% kyber_ntt.length_ntt_coeffs
thf(fact_808_kyber__ntt_Olength__ntt__coeffs,axiom,
! [N: nat,Q: int,K: nat,N4: nat,Omega: finite_mod_ring_a,Mu: finite_mod_ring_a,Psi: finite_mod_ring_a,Psi_inv: finite_mod_ring_a,Ninv: finite_mod_ring_a,Mult_factor: int,F: kyber_qr_a] :
( ( nTT_kyber_ntt_k_a @ type_k @ N @ Q @ K @ N4 @ Omega @ Mu @ Psi @ Psi_inv @ Ninv @ Mult_factor )
=> ( ord_less_eq_nat @ ( size_s7115545719440041015ring_a @ ( nTT_ky9081197955043955481effs_a @ N @ Psi @ F ) ) @ N ) ) ).
% kyber_ntt.length_ntt_coeffs
thf(fact_809_map__nth,axiom,
! [Xs: list_F4626807571770296779ring_a] :
( ( map_na1928064127006292399ring_a @ ( nth_Fi694352073394265932ring_a @ Xs ) @ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Xs ) ) )
= Xs ) ).
% map_nth
thf(fact_810_map__nth,axiom,
! [Xs: list_nat] :
( ( map_nat_nat @ ( nth_nat @ Xs ) @ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Xs ) ) )
= Xs ) ).
% map_nth
thf(fact_811_nth__default__map2,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > nat > finite_mod_ring_a,D1: nat,D22: nat,D: finite_mod_ring_a,N: nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( F @ D1 @ D22 )
= D )
=> ( ( more_n3412881383938893606ring_a @ D @ ( map_Pr4768433397210869704ring_a @ ( produc6889438062880330999ring_a @ F ) @ ( zip_nat_nat @ Xs @ Ys ) ) @ N )
= ( F @ ( more_nth_default_nat @ D1 @ Xs @ N ) @ ( more_nth_default_nat @ D22 @ Ys @ N ) ) ) ) ) ).
% nth_default_map2
thf(fact_812_nth__default__map2,axiom,
! [Xs: list_nat,Ys: list_F4626807571770296779ring_a,F: nat > finite_mod_ring_a > finite_mod_ring_a,D1: nat,D22: finite_mod_ring_a,D: finite_mod_ring_a,N: nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( ( F @ D1 @ D22 )
= D )
=> ( ( more_n3412881383938893606ring_a @ D @ ( map_Pr6677102360513991957ring_a @ ( produc6819528916691020348ring_a @ F ) @ ( zip_na6535958757960386428ring_a @ Xs @ Ys ) ) @ N )
= ( F @ ( more_nth_default_nat @ D1 @ Xs @ N ) @ ( more_n3412881383938893606ring_a @ D22 @ Ys @ N ) ) ) ) ) ).
% nth_default_map2
thf(fact_813_nth__default__map2,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_nat,F: finite_mod_ring_a > nat > finite_mod_ring_a,D1: finite_mod_ring_a,D22: nat,D: finite_mod_ring_a,N: nat] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( F @ D1 @ D22 )
= D )
=> ( ( more_n3412881383938893606ring_a @ D @ ( map_Pr7682932610255141947ring_a @ ( produc8273129539502305050ring_a @ F ) @ ( zip_Fi8796496336565543198_a_nat @ Xs @ Ys ) ) @ N )
= ( F @ ( more_n3412881383938893606ring_a @ D1 @ Xs @ N ) @ ( more_nth_default_nat @ D22 @ Ys @ N ) ) ) ) ) ).
% nth_default_map2
thf(fact_814_nth__default__map2,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_F4626807571770296779ring_a,F: finite_mod_ring_a > finite_mod_ring_a > finite_mod_ring_a,D1: finite_mod_ring_a,D22: finite_mod_ring_a,D: finite_mod_ring_a,N: nat] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( ( F @ D1 @ D22 )
= D )
=> ( ( more_n3412881383938893606ring_a @ D @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ F ) @ ( zip_Fi507625284836285431ring_a @ Xs @ Ys ) ) @ N )
= ( F @ ( more_n3412881383938893606ring_a @ D1 @ Xs @ N ) @ ( more_n3412881383938893606ring_a @ D22 @ Ys @ N ) ) ) ) ) ).
% nth_default_map2
thf(fact_815_nat__less__iff,axiom,
! [W: int,M: nat] :
( ( ord_less_eq_int @ zero_zero_int @ W )
=> ( ( ord_less_nat @ ( nat2 @ W ) @ M )
= ( ord_less_int @ W @ ( semiri1314217659103216013at_int @ M ) ) ) ) ).
% nat_less_iff
thf(fact_816_coeff__poly__cutoff,axiom,
! [K: nat,N: nat,P: poly_nat] :
( ( ( ord_less_nat @ K @ N )
=> ( ( coeff_nat @ ( poly_cutoff_nat @ N @ P ) @ K )
= ( coeff_nat @ P @ K ) ) )
& ( ~ ( ord_less_nat @ K @ N )
=> ( ( coeff_nat @ ( poly_cutoff_nat @ N @ P ) @ K )
= zero_zero_nat ) ) ) ).
% coeff_poly_cutoff
thf(fact_817_coeff__poly__cutoff,axiom,
! [K: nat,N: nat,P: poly_int] :
( ( ( ord_less_nat @ K @ N )
=> ( ( coeff_int @ ( poly_cutoff_int @ N @ P ) @ K )
= ( coeff_int @ P @ K ) ) )
& ( ~ ( ord_less_nat @ K @ N )
=> ( ( coeff_int @ ( poly_cutoff_int @ N @ P ) @ K )
= zero_zero_int ) ) ) ).
% coeff_poly_cutoff
thf(fact_818_coeff__poly__cutoff,axiom,
! [K: nat,N: nat,P: poly_F3299452240248304339ring_a] :
( ( ( ord_less_nat @ K @ N )
=> ( ( coeff_1607515655354303335ring_a @ ( poly_c8149583573515411563ring_a @ N @ P ) @ K )
= ( coeff_1607515655354303335ring_a @ P @ K ) ) )
& ( ~ ( ord_less_nat @ K @ N )
=> ( ( coeff_1607515655354303335ring_a @ ( poly_c8149583573515411563ring_a @ N @ P ) @ K )
= zero_z7902377541816115708ring_a ) ) ) ).
% coeff_poly_cutoff
thf(fact_819_of__nat__zero__less__power__iff,axiom,
! [X: nat,N: nat] :
( ( ord_less_int @ zero_zero_int @ ( power_power_int @ ( semiri1314217659103216013at_int @ X ) @ N ) )
= ( ( ord_less_nat @ zero_zero_nat @ X )
| ( N = zero_zero_nat ) ) ) ).
% of_nat_zero_less_power_iff
thf(fact_820_of__nat__zero__less__power__iff,axiom,
! [X: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( power_power_nat @ ( semiri1316708129612266289at_nat @ X ) @ N ) )
= ( ( ord_less_nat @ zero_zero_nat @ X )
| ( N = zero_zero_nat ) ) ) ).
% of_nat_zero_less_power_iff
thf(fact_821_power__decreasing__iff,axiom,
! [B: poly_int,M: nat,N: nat] :
( ( ord_less_poly_int @ zero_zero_poly_int @ B )
=> ( ( ord_less_poly_int @ B @ one_one_poly_int )
=> ( ( ord_less_eq_poly_int @ ( power_power_poly_int @ B @ M ) @ ( power_power_poly_int @ B @ N ) )
= ( ord_less_eq_nat @ N @ M ) ) ) ) ).
% power_decreasing_iff
thf(fact_822_power__decreasing__iff,axiom,
! [B: nat,M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ B )
=> ( ( ord_less_nat @ B @ one_one_nat )
=> ( ( ord_less_eq_nat @ ( power_power_nat @ B @ M ) @ ( power_power_nat @ B @ N ) )
= ( ord_less_eq_nat @ N @ M ) ) ) ) ).
% power_decreasing_iff
thf(fact_823_power__decreasing__iff,axiom,
! [B: int,M: nat,N: nat] :
( ( ord_less_int @ zero_zero_int @ B )
=> ( ( ord_less_int @ B @ one_one_int )
=> ( ( ord_less_eq_int @ ( power_power_int @ B @ M ) @ ( power_power_int @ B @ N ) )
= ( ord_less_eq_nat @ N @ M ) ) ) ) ).
% power_decreasing_iff
thf(fact_824_power__increasing__iff,axiom,
! [B: poly_int,X: nat,Y2: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ B )
=> ( ( ord_less_eq_poly_int @ ( power_power_poly_int @ B @ X ) @ ( power_power_poly_int @ B @ Y2 ) )
= ( ord_less_eq_nat @ X @ Y2 ) ) ) ).
% power_increasing_iff
thf(fact_825_power__increasing__iff,axiom,
! [B: nat,X: nat,Y2: nat] :
( ( ord_less_nat @ one_one_nat @ B )
=> ( ( ord_less_eq_nat @ ( power_power_nat @ B @ X ) @ ( power_power_nat @ B @ Y2 ) )
= ( ord_less_eq_nat @ X @ Y2 ) ) ) ).
% power_increasing_iff
thf(fact_826_power__increasing__iff,axiom,
! [B: int,X: nat,Y2: nat] :
( ( ord_less_int @ one_one_int @ B )
=> ( ( ord_less_eq_int @ ( power_power_int @ B @ X ) @ ( power_power_int @ B @ Y2 ) )
= ( ord_less_eq_nat @ X @ Y2 ) ) ) ).
% power_increasing_iff
thf(fact_827_power__mono__iff,axiom,
! [A: nat,B: nat,N: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( ord_less_eq_nat @ ( power_power_nat @ A @ N ) @ ( power_power_nat @ B @ N ) )
= ( ord_less_eq_nat @ A @ B ) ) ) ) ) ).
% power_mono_iff
thf(fact_828_power__mono__iff,axiom,
! [A: int,B: int,N: nat] :
( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( ord_less_eq_int @ ( power_power_int @ A @ N ) @ ( power_power_int @ B @ N ) )
= ( ord_less_eq_int @ A @ B ) ) ) ) ) ).
% power_mono_iff
thf(fact_829_power__strict__decreasing__iff,axiom,
! [B: poly_int,M: nat,N: nat] :
( ( ord_less_poly_int @ zero_zero_poly_int @ B )
=> ( ( ord_less_poly_int @ B @ one_one_poly_int )
=> ( ( ord_less_poly_int @ ( power_power_poly_int @ B @ M ) @ ( power_power_poly_int @ B @ N ) )
= ( ord_less_nat @ N @ M ) ) ) ) ).
% power_strict_decreasing_iff
thf(fact_830_power__strict__decreasing__iff,axiom,
! [B: nat,M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ B )
=> ( ( ord_less_nat @ B @ one_one_nat )
=> ( ( ord_less_nat @ ( power_power_nat @ B @ M ) @ ( power_power_nat @ B @ N ) )
= ( ord_less_nat @ N @ M ) ) ) ) ).
% power_strict_decreasing_iff
thf(fact_831_power__strict__decreasing__iff,axiom,
! [B: int,M: nat,N: nat] :
( ( ord_less_int @ zero_zero_int @ B )
=> ( ( ord_less_int @ B @ one_one_int )
=> ( ( ord_less_int @ ( power_power_int @ B @ M ) @ ( power_power_int @ B @ N ) )
= ( ord_less_nat @ N @ M ) ) ) ) ).
% power_strict_decreasing_iff
thf(fact_832_kyber__ntt_Oint__exp__hom,axiom,
! [X: nat,I: nat] :
( ( power_power_int @ ( semiri1314217659103216013at_int @ X ) @ I )
= ( semiri1314217659103216013at_int @ ( power_power_nat @ X @ I ) ) ) ).
% kyber_ntt.int_exp_hom
thf(fact_833_power__one,axiom,
! [N: nat] :
( ( power_power_poly_int @ one_one_poly_int @ N )
= one_one_poly_int ) ).
% power_one
thf(fact_834_power__one,axiom,
! [N: nat] :
( ( power_6826135765519566523ring_a @ one_on2109788427901206336ring_a @ N )
= one_on2109788427901206336ring_a ) ).
% power_one
thf(fact_835_power__one,axiom,
! [N: nat] :
( ( power_power_int @ one_one_int @ N )
= one_one_int ) ).
% power_one
thf(fact_836_power__one,axiom,
! [N: nat] :
( ( power_power_nat @ one_one_nat @ N )
= one_one_nat ) ).
% power_one
thf(fact_837_nat__zero__less__power__iff,axiom,
! [X: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( power_power_nat @ X @ N ) )
= ( ( ord_less_nat @ zero_zero_nat @ X )
| ( N = zero_zero_nat ) ) ) ).
% nat_zero_less_power_iff
thf(fact_838_of__nat__power,axiom,
! [M: nat,N: nat] :
( ( semiri1314217659103216013at_int @ ( power_power_nat @ M @ N ) )
= ( power_power_int @ ( semiri1314217659103216013at_int @ M ) @ N ) ) ).
% of_nat_power
thf(fact_839_of__nat__power,axiom,
! [M: nat,N: nat] :
( ( semiri9180929696517417892ring_a @ ( power_power_nat @ M @ N ) )
= ( power_6826135765519566523ring_a @ ( semiri9180929696517417892ring_a @ M ) @ N ) ) ).
% of_nat_power
thf(fact_840_of__nat__power,axiom,
! [M: nat,N: nat] :
( ( semiri1316708129612266289at_nat @ ( power_power_nat @ M @ N ) )
= ( power_power_nat @ ( semiri1316708129612266289at_nat @ M ) @ N ) ) ).
% of_nat_power
thf(fact_841_of__nat__eq__of__nat__power__cancel__iff,axiom,
! [B: nat,W: nat,X: nat] :
( ( ( power_power_int @ ( semiri1314217659103216013at_int @ B ) @ W )
= ( semiri1314217659103216013at_int @ X ) )
= ( ( power_power_nat @ B @ W )
= X ) ) ).
% of_nat_eq_of_nat_power_cancel_iff
thf(fact_842_of__nat__eq__of__nat__power__cancel__iff,axiom,
! [B: nat,W: nat,X: nat] :
( ( ( power_power_nat @ ( semiri1316708129612266289at_nat @ B ) @ W )
= ( semiri1316708129612266289at_nat @ X ) )
= ( ( power_power_nat @ B @ W )
= X ) ) ).
% of_nat_eq_of_nat_power_cancel_iff
thf(fact_843_of__nat__power__eq__of__nat__cancel__iff,axiom,
! [X: nat,B: nat,W: nat] :
( ( ( semiri1314217659103216013at_int @ X )
= ( power_power_int @ ( semiri1314217659103216013at_int @ B ) @ W ) )
= ( X
= ( power_power_nat @ B @ W ) ) ) ).
% of_nat_power_eq_of_nat_cancel_iff
thf(fact_844_of__nat__power__eq__of__nat__cancel__iff,axiom,
! [X: nat,B: nat,W: nat] :
( ( ( semiri1316708129612266289at_nat @ X )
= ( power_power_nat @ ( semiri1316708129612266289at_nat @ B ) @ W ) )
= ( X
= ( power_power_nat @ B @ W ) ) ) ).
% of_nat_power_eq_of_nat_cancel_iff
thf(fact_845_power__one__right,axiom,
! [A: finite_mod_ring_a] :
( ( power_6826135765519566523ring_a @ A @ one_one_nat )
= A ) ).
% power_one_right
thf(fact_846_power__one__right,axiom,
! [A: int] :
( ( power_power_int @ A @ one_one_nat )
= A ) ).
% power_one_right
thf(fact_847_power__one__right,axiom,
! [A: nat] :
( ( power_power_nat @ A @ one_one_nat )
= A ) ).
% power_one_right
thf(fact_848_power__inject__exp,axiom,
! [A: poly_int,M: nat,N: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ A )
=> ( ( ( power_power_poly_int @ A @ M )
= ( power_power_poly_int @ A @ N ) )
= ( M = N ) ) ) ).
% power_inject_exp
thf(fact_849_power__inject__exp,axiom,
! [A: nat,M: nat,N: nat] :
( ( ord_less_nat @ one_one_nat @ A )
=> ( ( ( power_power_nat @ A @ M )
= ( power_power_nat @ A @ N ) )
= ( M = N ) ) ) ).
% power_inject_exp
thf(fact_850_power__inject__exp,axiom,
! [A: int,M: nat,N: nat] :
( ( ord_less_int @ one_one_int @ A )
=> ( ( ( power_power_int @ A @ M )
= ( power_power_int @ A @ N ) )
= ( M = N ) ) ) ).
% power_inject_exp
thf(fact_851_power__eq__0__iff,axiom,
! [A: finite_mod_ring_a,N: nat] :
( ( ( power_6826135765519566523ring_a @ A @ N )
= zero_z7902377541816115708ring_a )
= ( ( A = zero_z7902377541816115708ring_a )
& ( ord_less_nat @ zero_zero_nat @ N ) ) ) ).
% power_eq_0_iff
thf(fact_852_power__eq__0__iff,axiom,
! [A: int,N: nat] :
( ( ( power_power_int @ A @ N )
= zero_zero_int )
= ( ( A = zero_zero_int )
& ( ord_less_nat @ zero_zero_nat @ N ) ) ) ).
% power_eq_0_iff
thf(fact_853_power__eq__0__iff,axiom,
! [A: nat,N: nat] :
( ( ( power_power_nat @ A @ N )
= zero_zero_nat )
= ( ( A = zero_zero_nat )
& ( ord_less_nat @ zero_zero_nat @ N ) ) ) ).
% power_eq_0_iff
thf(fact_854_power__strict__increasing__iff,axiom,
! [B: poly_int,X: nat,Y2: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ B )
=> ( ( ord_less_poly_int @ ( power_power_poly_int @ B @ X ) @ ( power_power_poly_int @ B @ Y2 ) )
= ( ord_less_nat @ X @ Y2 ) ) ) ).
% power_strict_increasing_iff
thf(fact_855_power__strict__increasing__iff,axiom,
! [B: nat,X: nat,Y2: nat] :
( ( ord_less_nat @ one_one_nat @ B )
=> ( ( ord_less_nat @ ( power_power_nat @ B @ X ) @ ( power_power_nat @ B @ Y2 ) )
= ( ord_less_nat @ X @ Y2 ) ) ) ).
% power_strict_increasing_iff
thf(fact_856_power__strict__increasing__iff,axiom,
! [B: int,X: nat,Y2: nat] :
( ( ord_less_int @ one_one_int @ B )
=> ( ( ord_less_int @ ( power_power_int @ B @ X ) @ ( power_power_int @ B @ Y2 ) )
= ( ord_less_nat @ X @ Y2 ) ) ) ).
% power_strict_increasing_iff
thf(fact_857_of__nat__power__less__of__nat__cancel__iff,axiom,
! [X: nat,B: nat,W: nat] :
( ( ord_less_int @ ( semiri1314217659103216013at_int @ X ) @ ( power_power_int @ ( semiri1314217659103216013at_int @ B ) @ W ) )
= ( ord_less_nat @ X @ ( power_power_nat @ B @ W ) ) ) ).
% of_nat_power_less_of_nat_cancel_iff
thf(fact_858_of__nat__power__less__of__nat__cancel__iff,axiom,
! [X: nat,B: nat,W: nat] :
( ( ord_less_nat @ ( semiri1316708129612266289at_nat @ X ) @ ( power_power_nat @ ( semiri1316708129612266289at_nat @ B ) @ W ) )
= ( ord_less_nat @ X @ ( power_power_nat @ B @ W ) ) ) ).
% of_nat_power_less_of_nat_cancel_iff
thf(fact_859_of__nat__less__of__nat__power__cancel__iff,axiom,
! [B: nat,W: nat,X: nat] :
( ( ord_less_int @ ( power_power_int @ ( semiri1314217659103216013at_int @ B ) @ W ) @ ( semiri1314217659103216013at_int @ X ) )
= ( ord_less_nat @ ( power_power_nat @ B @ W ) @ X ) ) ).
% of_nat_less_of_nat_power_cancel_iff
thf(fact_860_of__nat__less__of__nat__power__cancel__iff,axiom,
! [B: nat,W: nat,X: nat] :
( ( ord_less_nat @ ( power_power_nat @ ( semiri1316708129612266289at_nat @ B ) @ W ) @ ( semiri1316708129612266289at_nat @ X ) )
= ( ord_less_nat @ ( power_power_nat @ B @ W ) @ X ) ) ).
% of_nat_less_of_nat_power_cancel_iff
thf(fact_861_of__nat__le__of__nat__power__cancel__iff,axiom,
! [B: nat,W: nat,X: nat] :
( ( ord_less_eq_nat @ ( power_power_nat @ ( semiri1316708129612266289at_nat @ B ) @ W ) @ ( semiri1316708129612266289at_nat @ X ) )
= ( ord_less_eq_nat @ ( power_power_nat @ B @ W ) @ X ) ) ).
% of_nat_le_of_nat_power_cancel_iff
thf(fact_862_of__nat__le__of__nat__power__cancel__iff,axiom,
! [B: nat,W: nat,X: nat] :
( ( ord_less_eq_int @ ( power_power_int @ ( semiri1314217659103216013at_int @ B ) @ W ) @ ( semiri1314217659103216013at_int @ X ) )
= ( ord_less_eq_nat @ ( power_power_nat @ B @ W ) @ X ) ) ).
% of_nat_le_of_nat_power_cancel_iff
thf(fact_863_of__nat__power__le__of__nat__cancel__iff,axiom,
! [X: nat,B: nat,W: nat] :
( ( ord_less_eq_nat @ ( semiri1316708129612266289at_nat @ X ) @ ( power_power_nat @ ( semiri1316708129612266289at_nat @ B ) @ W ) )
= ( ord_less_eq_nat @ X @ ( power_power_nat @ B @ W ) ) ) ).
% of_nat_power_le_of_nat_cancel_iff
thf(fact_864_of__nat__power__le__of__nat__cancel__iff,axiom,
! [X: nat,B: nat,W: nat] :
( ( ord_less_eq_int @ ( semiri1314217659103216013at_int @ X ) @ ( power_power_int @ ( semiri1314217659103216013at_int @ B ) @ W ) )
= ( ord_less_eq_nat @ X @ ( power_power_nat @ B @ W ) ) ) ).
% of_nat_power_le_of_nat_cancel_iff
thf(fact_865_nat__power__eq,axiom,
! [Z2: int,N: nat] :
( ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ( nat2 @ ( power_power_int @ Z2 @ N ) )
= ( power_power_nat @ ( nat2 @ Z2 ) @ N ) ) ) ).
% nat_power_eq
thf(fact_866_verit__la__generic,axiom,
! [A: int,X: int] :
( ( ord_less_eq_int @ A @ X )
| ( A = X )
| ( ord_less_eq_int @ X @ A ) ) ).
% verit_la_generic
thf(fact_867_nat__power__less__imp__less,axiom,
! [I: nat,M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ I )
=> ( ( ord_less_nat @ ( power_power_nat @ I @ M ) @ ( power_power_nat @ I @ N ) )
=> ( ord_less_nat @ M @ N ) ) ) ).
% nat_power_less_imp_less
thf(fact_868_monic__power,axiom,
! [P: poly_int,N: nat] :
( ( ( coeff_int @ P @ ( degree_int @ P ) )
= one_one_int )
=> ( ( coeff_int @ ( power_power_poly_int @ P @ N ) @ ( degree_int @ ( power_power_poly_int @ P @ N ) ) )
= one_one_int ) ) ).
% monic_power
thf(fact_869_monic__power,axiom,
! [P: poly_poly_int,N: nat] :
( ( ( coeff_poly_int @ P @ ( degree_poly_int @ P ) )
= one_one_poly_int )
=> ( ( coeff_poly_int @ ( power_7364042453852871110ly_int @ P @ N ) @ ( degree_poly_int @ ( power_7364042453852871110ly_int @ P @ N ) ) )
= one_one_poly_int ) ) ).
% monic_power
thf(fact_870_monic__power,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( ( coeff_1607515655354303335ring_a @ P @ ( degree4881254707062955960ring_a @ P ) )
= one_on2109788427901206336ring_a )
=> ( ( coeff_1607515655354303335ring_a @ ( power_6500929916544582089ring_a @ P @ N ) @ ( degree4881254707062955960ring_a @ ( power_6500929916544582089ring_a @ P @ N ) ) )
= one_on2109788427901206336ring_a ) ) ).
% monic_power
thf(fact_871_degree__power__le,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] : ( ord_less_eq_nat @ ( degree4881254707062955960ring_a @ ( power_6500929916544582089ring_a @ P @ N ) ) @ ( times_times_nat @ ( degree4881254707062955960ring_a @ P ) @ N ) ) ).
% degree_power_le
thf(fact_872_Missing__Polynomial_Odegree__power__eq,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( P != zero_z1830546546923837194ring_a )
=> ( ( degree4881254707062955960ring_a @ ( power_6500929916544582089ring_a @ P @ N ) )
= ( times_times_nat @ ( degree4881254707062955960ring_a @ P ) @ N ) ) ) ).
% Missing_Polynomial.degree_power_eq
thf(fact_873_Polynomial_Odegree__power__eq,axiom,
! [P: poly_F3299452240248304339ring_a,N: nat] :
( ( P != zero_z1830546546923837194ring_a )
=> ( ( degree4881254707062955960ring_a @ ( power_6500929916544582089ring_a @ P @ N ) )
= ( times_times_nat @ N @ ( degree4881254707062955960ring_a @ P ) ) ) ) ).
% Polynomial.degree_power_eq
thf(fact_874_power__not__zero,axiom,
! [A: finite_mod_ring_a,N: nat] :
( ( A != zero_z7902377541816115708ring_a )
=> ( ( power_6826135765519566523ring_a @ A @ N )
!= zero_z7902377541816115708ring_a ) ) ).
% power_not_zero
thf(fact_875_power__not__zero,axiom,
! [A: int,N: nat] :
( ( A != zero_zero_int )
=> ( ( power_power_int @ A @ N )
!= zero_zero_int ) ) ).
% power_not_zero
thf(fact_876_power__not__zero,axiom,
! [A: nat,N: nat] :
( ( A != zero_zero_nat )
=> ( ( power_power_nat @ A @ N )
!= zero_zero_nat ) ) ).
% power_not_zero
thf(fact_877_power__commutes,axiom,
! [A: kyber_qr_a,N: nat] :
( ( times_2095635435063429214r_qr_a @ ( power_5122640293590465123r_qr_a @ A @ N ) @ A )
= ( times_2095635435063429214r_qr_a @ A @ ( power_5122640293590465123r_qr_a @ A @ N ) ) ) ).
% power_commutes
thf(fact_878_power__commutes,axiom,
! [A: finite_mod_ring_a,N: nat] :
( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ A @ N ) @ A )
= ( times_5121417576591743744ring_a @ A @ ( power_6826135765519566523ring_a @ A @ N ) ) ) ).
% power_commutes
thf(fact_879_power__commutes,axiom,
! [A: nat,N: nat] :
( ( times_times_nat @ ( power_power_nat @ A @ N ) @ A )
= ( times_times_nat @ A @ ( power_power_nat @ A @ N ) ) ) ).
% power_commutes
thf(fact_880_power__commutes,axiom,
! [A: int,N: nat] :
( ( times_times_int @ ( power_power_int @ A @ N ) @ A )
= ( times_times_int @ A @ ( power_power_int @ A @ N ) ) ) ).
% power_commutes
thf(fact_881_power__commutes,axiom,
! [A: poly_F3299452240248304339ring_a,N: nat] :
( ( times_3242606764180207630ring_a @ ( power_6500929916544582089ring_a @ A @ N ) @ A )
= ( times_3242606764180207630ring_a @ A @ ( power_6500929916544582089ring_a @ A @ N ) ) ) ).
% power_commutes
thf(fact_882_power__mult__distrib,axiom,
! [A: kyber_qr_a,B: kyber_qr_a,N: nat] :
( ( power_5122640293590465123r_qr_a @ ( times_2095635435063429214r_qr_a @ A @ B ) @ N )
= ( times_2095635435063429214r_qr_a @ ( power_5122640293590465123r_qr_a @ A @ N ) @ ( power_5122640293590465123r_qr_a @ B @ N ) ) ) ).
% power_mult_distrib
thf(fact_883_power__mult__distrib,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,N: nat] :
( ( power_6826135765519566523ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ N )
= ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ A @ N ) @ ( power_6826135765519566523ring_a @ B @ N ) ) ) ).
% power_mult_distrib
thf(fact_884_power__mult__distrib,axiom,
! [A: nat,B: nat,N: nat] :
( ( power_power_nat @ ( times_times_nat @ A @ B ) @ N )
= ( times_times_nat @ ( power_power_nat @ A @ N ) @ ( power_power_nat @ B @ N ) ) ) ).
% power_mult_distrib
thf(fact_885_power__mult__distrib,axiom,
! [A: int,B: int,N: nat] :
( ( power_power_int @ ( times_times_int @ A @ B ) @ N )
= ( times_times_int @ ( power_power_int @ A @ N ) @ ( power_power_int @ B @ N ) ) ) ).
% power_mult_distrib
thf(fact_886_power__mult__distrib,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,N: nat] :
( ( power_6500929916544582089ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ N )
= ( times_3242606764180207630ring_a @ ( power_6500929916544582089ring_a @ A @ N ) @ ( power_6500929916544582089ring_a @ B @ N ) ) ) ).
% power_mult_distrib
thf(fact_887_power__commuting__commutes,axiom,
! [X: kyber_qr_a,Y2: kyber_qr_a,N: nat] :
( ( ( times_2095635435063429214r_qr_a @ X @ Y2 )
= ( times_2095635435063429214r_qr_a @ Y2 @ X ) )
=> ( ( times_2095635435063429214r_qr_a @ ( power_5122640293590465123r_qr_a @ X @ N ) @ Y2 )
= ( times_2095635435063429214r_qr_a @ Y2 @ ( power_5122640293590465123r_qr_a @ X @ N ) ) ) ) ).
% power_commuting_commutes
thf(fact_888_power__commuting__commutes,axiom,
! [X: finite_mod_ring_a,Y2: finite_mod_ring_a,N: nat] :
( ( ( times_5121417576591743744ring_a @ X @ Y2 )
= ( times_5121417576591743744ring_a @ Y2 @ X ) )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ X @ N ) @ Y2 )
= ( times_5121417576591743744ring_a @ Y2 @ ( power_6826135765519566523ring_a @ X @ N ) ) ) ) ).
% power_commuting_commutes
thf(fact_889_power__commuting__commutes,axiom,
! [X: nat,Y2: nat,N: nat] :
( ( ( times_times_nat @ X @ Y2 )
= ( times_times_nat @ Y2 @ X ) )
=> ( ( times_times_nat @ ( power_power_nat @ X @ N ) @ Y2 )
= ( times_times_nat @ Y2 @ ( power_power_nat @ X @ N ) ) ) ) ).
% power_commuting_commutes
thf(fact_890_power__commuting__commutes,axiom,
! [X: int,Y2: int,N: nat] :
( ( ( times_times_int @ X @ Y2 )
= ( times_times_int @ Y2 @ X ) )
=> ( ( times_times_int @ ( power_power_int @ X @ N ) @ Y2 )
= ( times_times_int @ Y2 @ ( power_power_int @ X @ N ) ) ) ) ).
% power_commuting_commutes
thf(fact_891_power__commuting__commutes,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a,N: nat] :
( ( ( times_3242606764180207630ring_a @ X @ Y2 )
= ( times_3242606764180207630ring_a @ Y2 @ X ) )
=> ( ( times_3242606764180207630ring_a @ ( power_6500929916544582089ring_a @ X @ N ) @ Y2 )
= ( times_3242606764180207630ring_a @ Y2 @ ( power_6500929916544582089ring_a @ X @ N ) ) ) ) ).
% power_commuting_commutes
thf(fact_892_power__mult,axiom,
! [A: finite_mod_ring_a,M: nat,N: nat] :
( ( power_6826135765519566523ring_a @ A @ ( times_times_nat @ M @ N ) )
= ( power_6826135765519566523ring_a @ ( power_6826135765519566523ring_a @ A @ M ) @ N ) ) ).
% power_mult
thf(fact_893_power__mult,axiom,
! [A: int,M: nat,N: nat] :
( ( power_power_int @ A @ ( times_times_nat @ M @ N ) )
= ( power_power_int @ ( power_power_int @ A @ M ) @ N ) ) ).
% power_mult
thf(fact_894_power__mult,axiom,
! [A: nat,M: nat,N: nat] :
( ( power_power_nat @ A @ ( times_times_nat @ M @ N ) )
= ( power_power_nat @ ( power_power_nat @ A @ M ) @ N ) ) ).
% power_mult
thf(fact_895_power__mono,axiom,
! [A: nat,B: nat,N: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ord_less_eq_nat @ ( power_power_nat @ A @ N ) @ ( power_power_nat @ B @ N ) ) ) ) ).
% power_mono
thf(fact_896_power__mono,axiom,
! [A: int,B: int,N: nat] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ord_less_eq_int @ ( power_power_int @ A @ N ) @ ( power_power_int @ B @ N ) ) ) ) ).
% power_mono
thf(fact_897_zero__le__power,axiom,
! [A: nat,N: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ord_less_eq_nat @ zero_zero_nat @ ( power_power_nat @ A @ N ) ) ) ).
% zero_le_power
thf(fact_898_zero__le__power,axiom,
! [A: int,N: nat] :
( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ord_less_eq_int @ zero_zero_int @ ( power_power_int @ A @ N ) ) ) ).
% zero_le_power
thf(fact_899_zero__less__power,axiom,
! [A: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ord_less_nat @ zero_zero_nat @ ( power_power_nat @ A @ N ) ) ) ).
% zero_less_power
thf(fact_900_zero__less__power,axiom,
! [A: int,N: nat] :
( ( ord_less_int @ zero_zero_int @ A )
=> ( ord_less_int @ zero_zero_int @ ( power_power_int @ A @ N ) ) ) ).
% zero_less_power
thf(fact_901_one__le__power,axiom,
! [A: poly_int,N: nat] :
( ( ord_less_eq_poly_int @ one_one_poly_int @ A )
=> ( ord_less_eq_poly_int @ one_one_poly_int @ ( power_power_poly_int @ A @ N ) ) ) ).
% one_le_power
thf(fact_902_one__le__power,axiom,
! [A: nat,N: nat] :
( ( ord_less_eq_nat @ one_one_nat @ A )
=> ( ord_less_eq_nat @ one_one_nat @ ( power_power_nat @ A @ N ) ) ) ).
% one_le_power
thf(fact_903_one__le__power,axiom,
! [A: int,N: nat] :
( ( ord_less_eq_int @ one_one_int @ A )
=> ( ord_less_eq_int @ one_one_int @ ( power_power_int @ A @ N ) ) ) ).
% one_le_power
thf(fact_904_left__right__inverse__power,axiom,
! [X: poly_int,Y2: poly_int,N: nat] :
( ( ( times_times_poly_int @ X @ Y2 )
= one_one_poly_int )
=> ( ( times_times_poly_int @ ( power_power_poly_int @ X @ N ) @ ( power_power_poly_int @ Y2 @ N ) )
= one_one_poly_int ) ) ).
% left_right_inverse_power
thf(fact_905_left__right__inverse__power,axiom,
! [X: kyber_qr_a,Y2: kyber_qr_a,N: nat] :
( ( ( times_2095635435063429214r_qr_a @ X @ Y2 )
= one_one_Kyber_qr_a )
=> ( ( times_2095635435063429214r_qr_a @ ( power_5122640293590465123r_qr_a @ X @ N ) @ ( power_5122640293590465123r_qr_a @ Y2 @ N ) )
= one_one_Kyber_qr_a ) ) ).
% left_right_inverse_power
thf(fact_906_left__right__inverse__power,axiom,
! [X: finite_mod_ring_a,Y2: finite_mod_ring_a,N: nat] :
( ( ( times_5121417576591743744ring_a @ X @ Y2 )
= one_on2109788427901206336ring_a )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ X @ N ) @ ( power_6826135765519566523ring_a @ Y2 @ N ) )
= one_on2109788427901206336ring_a ) ) ).
% left_right_inverse_power
thf(fact_907_left__right__inverse__power,axiom,
! [X: nat,Y2: nat,N: nat] :
( ( ( times_times_nat @ X @ Y2 )
= one_one_nat )
=> ( ( times_times_nat @ ( power_power_nat @ X @ N ) @ ( power_power_nat @ Y2 @ N ) )
= one_one_nat ) ) ).
% left_right_inverse_power
thf(fact_908_left__right__inverse__power,axiom,
! [X: int,Y2: int,N: nat] :
( ( ( times_times_int @ X @ Y2 )
= one_one_int )
=> ( ( times_times_int @ ( power_power_int @ X @ N ) @ ( power_power_int @ Y2 @ N ) )
= one_one_int ) ) ).
% left_right_inverse_power
thf(fact_909_left__right__inverse__power,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a,N: nat] :
( ( ( times_3242606764180207630ring_a @ X @ Y2 )
= one_on3394844594818161742ring_a )
=> ( ( times_3242606764180207630ring_a @ ( power_6500929916544582089ring_a @ X @ N ) @ ( power_6500929916544582089ring_a @ Y2 @ N ) )
= one_on3394844594818161742ring_a ) ) ).
% left_right_inverse_power
thf(fact_910_power__0,axiom,
! [A: poly_int] :
( ( power_power_poly_int @ A @ zero_zero_nat )
= one_one_poly_int ) ).
% power_0
thf(fact_911_power__0,axiom,
! [A: finite_mod_ring_a] :
( ( power_6826135765519566523ring_a @ A @ zero_zero_nat )
= one_on2109788427901206336ring_a ) ).
% power_0
thf(fact_912_power__0,axiom,
! [A: int] :
( ( power_power_int @ A @ zero_zero_nat )
= one_one_int ) ).
% power_0
thf(fact_913_power__0,axiom,
! [A: nat] :
( ( power_power_nat @ A @ zero_zero_nat )
= one_one_nat ) ).
% power_0
thf(fact_914_power__less__imp__less__base,axiom,
! [A: nat,N: nat,B: nat] :
( ( ord_less_nat @ ( power_power_nat @ A @ N ) @ ( power_power_nat @ B @ N ) )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ord_less_nat @ A @ B ) ) ) ).
% power_less_imp_less_base
thf(fact_915_power__less__imp__less__base,axiom,
! [A: int,N: nat,B: int] :
( ( ord_less_int @ ( power_power_int @ A @ N ) @ ( power_power_int @ B @ N ) )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ord_less_int @ A @ B ) ) ) ).
% power_less_imp_less_base
thf(fact_916_power__le__one,axiom,
! [A: poly_int,N: nat] :
( ( ord_less_eq_poly_int @ zero_zero_poly_int @ A )
=> ( ( ord_less_eq_poly_int @ A @ one_one_poly_int )
=> ( ord_less_eq_poly_int @ ( power_power_poly_int @ A @ N ) @ one_one_poly_int ) ) ) ).
% power_le_one
thf(fact_917_power__le__one,axiom,
! [A: nat,N: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ A @ one_one_nat )
=> ( ord_less_eq_nat @ ( power_power_nat @ A @ N ) @ one_one_nat ) ) ) ).
% power_le_one
thf(fact_918_power__le__one,axiom,
! [A: int,N: nat] :
( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ A @ one_one_int )
=> ( ord_less_eq_int @ ( power_power_int @ A @ N ) @ one_one_int ) ) ) ).
% power_le_one
thf(fact_919_power__gt1__lemma,axiom,
! [A: poly_int,N: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ A )
=> ( ord_less_poly_int @ one_one_poly_int @ ( times_times_poly_int @ A @ ( power_power_poly_int @ A @ N ) ) ) ) ).
% power_gt1_lemma
thf(fact_920_power__gt1__lemma,axiom,
! [A: nat,N: nat] :
( ( ord_less_nat @ one_one_nat @ A )
=> ( ord_less_nat @ one_one_nat @ ( times_times_nat @ A @ ( power_power_nat @ A @ N ) ) ) ) ).
% power_gt1_lemma
thf(fact_921_power__gt1__lemma,axiom,
! [A: int,N: nat] :
( ( ord_less_int @ one_one_int @ A )
=> ( ord_less_int @ one_one_int @ ( times_times_int @ A @ ( power_power_int @ A @ N ) ) ) ) ).
% power_gt1_lemma
thf(fact_922_power__less__power__Suc,axiom,
! [A: poly_int,N: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ A )
=> ( ord_less_poly_int @ ( power_power_poly_int @ A @ N ) @ ( times_times_poly_int @ A @ ( power_power_poly_int @ A @ N ) ) ) ) ).
% power_less_power_Suc
thf(fact_923_power__less__power__Suc,axiom,
! [A: nat,N: nat] :
( ( ord_less_nat @ one_one_nat @ A )
=> ( ord_less_nat @ ( power_power_nat @ A @ N ) @ ( times_times_nat @ A @ ( power_power_nat @ A @ N ) ) ) ) ).
% power_less_power_Suc
thf(fact_924_power__less__power__Suc,axiom,
! [A: int,N: nat] :
( ( ord_less_int @ one_one_int @ A )
=> ( ord_less_int @ ( power_power_int @ A @ N ) @ ( times_times_int @ A @ ( power_power_int @ A @ N ) ) ) ) ).
% power_less_power_Suc
thf(fact_925_power__0__left,axiom,
! [N: nat] :
( ( ( N = zero_zero_nat )
=> ( ( power_power_poly_int @ zero_zero_poly_int @ N )
= one_one_poly_int ) )
& ( ( N != zero_zero_nat )
=> ( ( power_power_poly_int @ zero_zero_poly_int @ N )
= zero_zero_poly_int ) ) ) ).
% power_0_left
thf(fact_926_power__0__left,axiom,
! [N: nat] :
( ( ( N = zero_zero_nat )
=> ( ( power_6826135765519566523ring_a @ zero_z7902377541816115708ring_a @ N )
= one_on2109788427901206336ring_a ) )
& ( ( N != zero_zero_nat )
=> ( ( power_6826135765519566523ring_a @ zero_z7902377541816115708ring_a @ N )
= zero_z7902377541816115708ring_a ) ) ) ).
% power_0_left
thf(fact_927_power__0__left,axiom,
! [N: nat] :
( ( ( N = zero_zero_nat )
=> ( ( power_power_int @ zero_zero_int @ N )
= one_one_int ) )
& ( ( N != zero_zero_nat )
=> ( ( power_power_int @ zero_zero_int @ N )
= zero_zero_int ) ) ) ).
% power_0_left
thf(fact_928_power__0__left,axiom,
! [N: nat] :
( ( ( N = zero_zero_nat )
=> ( ( power_power_nat @ zero_zero_nat @ N )
= one_one_nat ) )
& ( ( N != zero_zero_nat )
=> ( ( power_power_nat @ zero_zero_nat @ N )
= zero_zero_nat ) ) ) ).
% power_0_left
thf(fact_929_zero__power,axiom,
! [N: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( power_6826135765519566523ring_a @ zero_z7902377541816115708ring_a @ N )
= zero_z7902377541816115708ring_a ) ) ).
% zero_power
thf(fact_930_zero__power,axiom,
! [N: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( power_power_int @ zero_zero_int @ N )
= zero_zero_int ) ) ).
% zero_power
thf(fact_931_zero__power,axiom,
! [N: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( power_power_nat @ zero_zero_nat @ N )
= zero_zero_nat ) ) ).
% zero_power
thf(fact_932_power__less__imp__less__exp,axiom,
! [A: poly_int,M: nat,N: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ A )
=> ( ( ord_less_poly_int @ ( power_power_poly_int @ A @ M ) @ ( power_power_poly_int @ A @ N ) )
=> ( ord_less_nat @ M @ N ) ) ) ).
% power_less_imp_less_exp
thf(fact_933_power__less__imp__less__exp,axiom,
! [A: nat,M: nat,N: nat] :
( ( ord_less_nat @ one_one_nat @ A )
=> ( ( ord_less_nat @ ( power_power_nat @ A @ M ) @ ( power_power_nat @ A @ N ) )
=> ( ord_less_nat @ M @ N ) ) ) ).
% power_less_imp_less_exp
thf(fact_934_power__less__imp__less__exp,axiom,
! [A: int,M: nat,N: nat] :
( ( ord_less_int @ one_one_int @ A )
=> ( ( ord_less_int @ ( power_power_int @ A @ M ) @ ( power_power_int @ A @ N ) )
=> ( ord_less_nat @ M @ N ) ) ) ).
% power_less_imp_less_exp
thf(fact_935_power__strict__increasing,axiom,
! [N: nat,N5: nat,A: poly_int] :
( ( ord_less_nat @ N @ N5 )
=> ( ( ord_less_poly_int @ one_one_poly_int @ A )
=> ( ord_less_poly_int @ ( power_power_poly_int @ A @ N ) @ ( power_power_poly_int @ A @ N5 ) ) ) ) ).
% power_strict_increasing
thf(fact_936_power__strict__increasing,axiom,
! [N: nat,N5: nat,A: nat] :
( ( ord_less_nat @ N @ N5 )
=> ( ( ord_less_nat @ one_one_nat @ A )
=> ( ord_less_nat @ ( power_power_nat @ A @ N ) @ ( power_power_nat @ A @ N5 ) ) ) ) ).
% power_strict_increasing
thf(fact_937_power__strict__increasing,axiom,
! [N: nat,N5: nat,A: int] :
( ( ord_less_nat @ N @ N5 )
=> ( ( ord_less_int @ one_one_int @ A )
=> ( ord_less_int @ ( power_power_int @ A @ N ) @ ( power_power_int @ A @ N5 ) ) ) ) ).
% power_strict_increasing
thf(fact_938_power__increasing,axiom,
! [N: nat,N5: nat,A: poly_int] :
( ( ord_less_eq_nat @ N @ N5 )
=> ( ( ord_less_eq_poly_int @ one_one_poly_int @ A )
=> ( ord_less_eq_poly_int @ ( power_power_poly_int @ A @ N ) @ ( power_power_poly_int @ A @ N5 ) ) ) ) ).
% power_increasing
thf(fact_939_power__increasing,axiom,
! [N: nat,N5: nat,A: nat] :
( ( ord_less_eq_nat @ N @ N5 )
=> ( ( ord_less_eq_nat @ one_one_nat @ A )
=> ( ord_less_eq_nat @ ( power_power_nat @ A @ N ) @ ( power_power_nat @ A @ N5 ) ) ) ) ).
% power_increasing
thf(fact_940_power__increasing,axiom,
! [N: nat,N5: nat,A: int] :
( ( ord_less_eq_nat @ N @ N5 )
=> ( ( ord_less_eq_int @ one_one_int @ A )
=> ( ord_less_eq_int @ ( power_power_int @ A @ N ) @ ( power_power_int @ A @ N5 ) ) ) ) ).
% power_increasing
thf(fact_941_power__Suc__less,axiom,
! [A: poly_int,N: nat] :
( ( ord_less_poly_int @ zero_zero_poly_int @ A )
=> ( ( ord_less_poly_int @ A @ one_one_poly_int )
=> ( ord_less_poly_int @ ( times_times_poly_int @ A @ ( power_power_poly_int @ A @ N ) ) @ ( power_power_poly_int @ A @ N ) ) ) ) ).
% power_Suc_less
thf(fact_942_power__Suc__less,axiom,
! [A: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ A @ one_one_nat )
=> ( ord_less_nat @ ( times_times_nat @ A @ ( power_power_nat @ A @ N ) ) @ ( power_power_nat @ A @ N ) ) ) ) ).
% power_Suc_less
thf(fact_943_power__Suc__less,axiom,
! [A: int,N: nat] :
( ( ord_less_int @ zero_zero_int @ A )
=> ( ( ord_less_int @ A @ one_one_int )
=> ( ord_less_int @ ( times_times_int @ A @ ( power_power_int @ A @ N ) ) @ ( power_power_int @ A @ N ) ) ) ) ).
% power_Suc_less
thf(fact_944_power__strict__decreasing,axiom,
! [N: nat,N5: nat,A: poly_int] :
( ( ord_less_nat @ N @ N5 )
=> ( ( ord_less_poly_int @ zero_zero_poly_int @ A )
=> ( ( ord_less_poly_int @ A @ one_one_poly_int )
=> ( ord_less_poly_int @ ( power_power_poly_int @ A @ N5 ) @ ( power_power_poly_int @ A @ N ) ) ) ) ) ).
% power_strict_decreasing
thf(fact_945_power__strict__decreasing,axiom,
! [N: nat,N5: nat,A: nat] :
( ( ord_less_nat @ N @ N5 )
=> ( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ A @ one_one_nat )
=> ( ord_less_nat @ ( power_power_nat @ A @ N5 ) @ ( power_power_nat @ A @ N ) ) ) ) ) ).
% power_strict_decreasing
thf(fact_946_power__strict__decreasing,axiom,
! [N: nat,N5: nat,A: int] :
( ( ord_less_nat @ N @ N5 )
=> ( ( ord_less_int @ zero_zero_int @ A )
=> ( ( ord_less_int @ A @ one_one_int )
=> ( ord_less_int @ ( power_power_int @ A @ N5 ) @ ( power_power_int @ A @ N ) ) ) ) ) ).
% power_strict_decreasing
thf(fact_947_power__eq__imp__eq__base,axiom,
! [A: nat,N: nat,B: nat] :
( ( ( power_power_nat @ A @ N )
= ( power_power_nat @ B @ N ) )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( A = B ) ) ) ) ) ).
% power_eq_imp_eq_base
thf(fact_948_power__eq__imp__eq__base,axiom,
! [A: int,N: nat,B: int] :
( ( ( power_power_int @ A @ N )
= ( power_power_int @ B @ N ) )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( A = B ) ) ) ) ) ).
% power_eq_imp_eq_base
thf(fact_949_power__eq__iff__eq__base,axiom,
! [N: nat,A: nat,B: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ( ( power_power_nat @ A @ N )
= ( power_power_nat @ B @ N ) )
= ( A = B ) ) ) ) ) ).
% power_eq_iff_eq_base
thf(fact_950_power__eq__iff__eq__base,axiom,
! [N: nat,A: int,B: int] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ B )
=> ( ( ( power_power_int @ A @ N )
= ( power_power_int @ B @ N ) )
= ( A = B ) ) ) ) ) ).
% power_eq_iff_eq_base
thf(fact_951_power__decreasing,axiom,
! [N: nat,N5: nat,A: poly_int] :
( ( ord_less_eq_nat @ N @ N5 )
=> ( ( ord_less_eq_poly_int @ zero_zero_poly_int @ A )
=> ( ( ord_less_eq_poly_int @ A @ one_one_poly_int )
=> ( ord_less_eq_poly_int @ ( power_power_poly_int @ A @ N5 ) @ ( power_power_poly_int @ A @ N ) ) ) ) ) ).
% power_decreasing
thf(fact_952_power__decreasing,axiom,
! [N: nat,N5: nat,A: nat] :
( ( ord_less_eq_nat @ N @ N5 )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ A @ one_one_nat )
=> ( ord_less_eq_nat @ ( power_power_nat @ A @ N5 ) @ ( power_power_nat @ A @ N ) ) ) ) ) ).
% power_decreasing
thf(fact_953_power__decreasing,axiom,
! [N: nat,N5: nat,A: int] :
( ( ord_less_eq_nat @ N @ N5 )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ A @ one_one_int )
=> ( ord_less_eq_int @ ( power_power_int @ A @ N5 ) @ ( power_power_int @ A @ N ) ) ) ) ) ).
% power_decreasing
thf(fact_954_self__le__power,axiom,
! [A: poly_int,N: nat] :
( ( ord_less_eq_poly_int @ one_one_poly_int @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_eq_poly_int @ A @ ( power_power_poly_int @ A @ N ) ) ) ) ).
% self_le_power
thf(fact_955_self__le__power,axiom,
! [A: nat,N: nat] :
( ( ord_less_eq_nat @ one_one_nat @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_eq_nat @ A @ ( power_power_nat @ A @ N ) ) ) ) ).
% self_le_power
thf(fact_956_self__le__power,axiom,
! [A: int,N: nat] :
( ( ord_less_eq_int @ one_one_int @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_eq_int @ A @ ( power_power_int @ A @ N ) ) ) ) ).
% self_le_power
thf(fact_957_power__le__imp__le__exp,axiom,
! [A: poly_int,M: nat,N: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ A )
=> ( ( ord_less_eq_poly_int @ ( power_power_poly_int @ A @ M ) @ ( power_power_poly_int @ A @ N ) )
=> ( ord_less_eq_nat @ M @ N ) ) ) ).
% power_le_imp_le_exp
thf(fact_958_power__le__imp__le__exp,axiom,
! [A: nat,M: nat,N: nat] :
( ( ord_less_nat @ one_one_nat @ A )
=> ( ( ord_less_eq_nat @ ( power_power_nat @ A @ M ) @ ( power_power_nat @ A @ N ) )
=> ( ord_less_eq_nat @ M @ N ) ) ) ).
% power_le_imp_le_exp
thf(fact_959_power__le__imp__le__exp,axiom,
! [A: int,M: nat,N: nat] :
( ( ord_less_int @ one_one_int @ A )
=> ( ( ord_less_eq_int @ ( power_power_int @ A @ M ) @ ( power_power_int @ A @ N ) )
=> ( ord_less_eq_nat @ M @ N ) ) ) ).
% power_le_imp_le_exp
thf(fact_960_one__less__power,axiom,
! [A: poly_int,N: nat] :
( ( ord_less_poly_int @ one_one_poly_int @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_poly_int @ one_one_poly_int @ ( power_power_poly_int @ A @ N ) ) ) ) ).
% one_less_power
thf(fact_961_one__less__power,axiom,
! [A: nat,N: nat] :
( ( ord_less_nat @ one_one_nat @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_nat @ one_one_nat @ ( power_power_nat @ A @ N ) ) ) ) ).
% one_less_power
thf(fact_962_one__less__power,axiom,
! [A: int,N: nat] :
( ( ord_less_int @ one_one_int @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_int @ one_one_int @ ( power_power_int @ A @ N ) ) ) ) ).
% one_less_power
thf(fact_963_power__strict__mono,axiom,
! [A: nat,B: nat,N: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_nat @ ( power_power_nat @ A @ N ) @ ( power_power_nat @ B @ N ) ) ) ) ) ).
% power_strict_mono
thf(fact_964_power__strict__mono,axiom,
! [A: int,B: int,N: nat] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ord_less_int @ ( power_power_int @ A @ N ) @ ( power_power_int @ B @ N ) ) ) ) ) ).
% power_strict_mono
thf(fact_965_map__upt__len__same__len__conv,axiom,
! [Xs: list_P3622523039039653997ring_a,Ys: list_F4626807571770296779ring_a,F: produc4299165986903738727ring_a > finite_mod_ring_a] :
( ( ( size_s681732177277979353ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Ys ) ) )
= ( map_Pr8707103244924889698ring_a @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_966_map__upt__len__same__len__conv,axiom,
! [Xs: list_P3622523039039653997ring_a,Ys: list_nat,F: produc4299165986903738727ring_a > finite_mod_ring_a] :
( ( ( size_s681732177277979353ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Ys ) ) )
= ( map_Pr8707103244924889698ring_a @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_967_map__upt__len__same__len__conv,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_F4626807571770296779ring_a,F: finite_mod_ring_a > finite_mod_ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Ys ) ) )
= ( map_Fi7082711781076630404ring_a @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_968_map__upt__len__same__len__conv,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_F4626807571770296779ring_a,F: finite_mod_ring_a > nat] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( map_nat_nat
@ ^ [I4: nat] : ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Ys ) ) )
= ( map_Fi4188601705611449169_a_nat @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_969_map__upt__len__same__len__conv,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_nat,F: finite_mod_ring_a > finite_mod_ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Ys ) ) )
= ( map_Fi7082711781076630404ring_a @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_970_map__upt__len__same__len__conv,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_nat,F: finite_mod_ring_a > nat] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( map_nat_nat
@ ^ [I4: nat] : ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Ys ) ) )
= ( map_Fi4188601705611449169_a_nat @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_971_map__upt__len__same__len__conv,axiom,
! [Xs: list_nat,Ys: list_F4626807571770296779ring_a,F: nat > finite_mod_ring_a] :
( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_nat @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Ys ) ) )
= ( map_na1928064127006292399ring_a @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_972_map__upt__len__same__len__conv,axiom,
! [Xs: list_nat,Ys: list_F4626807571770296779ring_a,F: nat > nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( map_nat_nat
@ ^ [I4: nat] : ( F @ ( nth_nat @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Ys ) ) )
= ( map_nat_nat @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_973_map__upt__len__same__len__conv,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > finite_mod_ring_a] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_nat @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Ys ) ) )
= ( map_na1928064127006292399ring_a @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_974_map__upt__len__same__len__conv,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( map_nat_nat
@ ^ [I4: nat] : ( F @ ( nth_nat @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Ys ) ) )
= ( map_nat_nat @ F @ Xs ) ) ) ).
% map_upt_len_same_len_conv
thf(fact_975_map__upt__len__conv,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a] :
( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s681732177277979353ring_a @ Xs ) ) )
= ( map_Pr8707103244924889698ring_a @ F @ Xs ) ) ).
% map_upt_len_conv
thf(fact_976_map__upt__len__conv,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a] :
( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Xs ) ) )
= ( map_Fi7082711781076630404ring_a @ F @ Xs ) ) ).
% map_upt_len_conv
thf(fact_977_map__upt__len__conv,axiom,
! [F: finite_mod_ring_a > nat,Xs: list_F4626807571770296779ring_a] :
( ( map_nat_nat
@ ^ [I4: nat] : ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_s7115545719440041015ring_a @ Xs ) ) )
= ( map_Fi4188601705611449169_a_nat @ F @ Xs ) ) ).
% map_upt_len_conv
thf(fact_978_map__upt__len__conv,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat] :
( ( map_na1928064127006292399ring_a
@ ^ [I4: nat] : ( F @ ( nth_nat @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Xs ) ) )
= ( map_na1928064127006292399ring_a @ F @ Xs ) ) ).
% map_upt_len_conv
thf(fact_979_map__upt__len__conv,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( map_nat_nat
@ ^ [I4: nat] : ( F @ ( nth_nat @ Xs @ I4 ) )
@ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Xs ) ) )
= ( map_nat_nat @ F @ Xs ) ) ).
% map_upt_len_conv
thf(fact_980_Ex__list__of__length__P,axiom,
! [N: nat,P4: finite_mod_ring_a > nat > $o] :
( ! [I2: nat] :
( ( ord_less_nat @ I2 @ N )
=> ? [X6: finite_mod_ring_a] : ( P4 @ X6 @ I2 ) )
=> ? [Xs3: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs3 )
= N )
& ! [I3: nat] :
( ( ord_less_nat @ I3 @ N )
=> ( P4 @ ( nth_Fi694352073394265932ring_a @ Xs3 @ I3 ) @ I3 ) ) ) ) ).
% Ex_list_of_length_P
thf(fact_981_Ex__list__of__length__P,axiom,
! [N: nat,P4: nat > nat > $o] :
( ! [I2: nat] :
( ( ord_less_nat @ I2 @ N )
=> ? [X6: nat] : ( P4 @ X6 @ I2 ) )
=> ? [Xs3: list_nat] :
( ( ( size_size_list_nat @ Xs3 )
= N )
& ! [I3: nat] :
( ( ord_less_nat @ I3 @ N )
=> ( P4 @ ( nth_nat @ Xs3 @ I3 ) @ I3 ) ) ) ) ).
% Ex_list_of_length_P
thf(fact_982_map__nth__eq__conv,axiom,
! [Xs: list_P3622523039039653997ring_a,Ys: list_F4626807571770296779ring_a,F: produc4299165986903738727ring_a > finite_mod_ring_a] :
( ( ( size_s681732177277979353ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( ( map_Pr8707103244924889698ring_a @ F @ Xs )
= Ys )
= ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
= ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_nth_eq_conv
thf(fact_983_map__nth__eq__conv,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_F4626807571770296779ring_a,F: finite_mod_ring_a > finite_mod_ring_a] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( ( map_Fi7082711781076630404ring_a @ F @ Xs )
= Ys )
= ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_nth_eq_conv
thf(fact_984_map__nth__eq__conv,axiom,
! [Xs: list_F4626807571770296779ring_a,Ys: list_nat,F: finite_mod_ring_a > nat] :
( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( map_Fi4188601705611449169_a_nat @ F @ Xs )
= Ys )
= ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_nth_eq_conv
thf(fact_985_map__nth__eq__conv,axiom,
! [Xs: list_nat,Ys: list_F4626807571770296779ring_a,F: nat > finite_mod_ring_a] :
( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= Ys )
= ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_nth_eq_conv
thf(fact_986_map__nth__eq__conv,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( map_nat_nat @ F @ Xs )
= Ys )
= ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_nth_eq_conv
thf(fact_987_map__nth__conv,axiom,
! [F: nat > nat,Ss: list_nat,G: nat > nat,Ts: list_nat] :
( ( ( map_nat_nat @ F @ Ss )
= ( map_nat_nat @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_size_list_nat @ Ss ) )
=> ( ( F @ ( nth_nat @ Ss @ I3 ) )
= ( G @ ( nth_nat @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_988_map__nth__conv,axiom,
! [F: finite_mod_ring_a > nat,Ss: list_F4626807571770296779ring_a,G: nat > nat,Ts: list_nat] :
( ( ( map_Fi4188601705611449169_a_nat @ F @ Ss )
= ( map_nat_nat @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_s7115545719440041015ring_a @ Ss ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Ss @ I3 ) )
= ( G @ ( nth_nat @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_989_map__nth__conv,axiom,
! [F: nat > finite_mod_ring_a,Ss: list_nat,G: nat > finite_mod_ring_a,Ts: list_nat] :
( ( ( map_na1928064127006292399ring_a @ F @ Ss )
= ( map_na1928064127006292399ring_a @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_size_list_nat @ Ss ) )
=> ( ( F @ ( nth_nat @ Ss @ I3 ) )
= ( G @ ( nth_nat @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_990_map__nth__conv,axiom,
! [F: nat > nat,Ss: list_nat,G: finite_mod_ring_a > nat,Ts: list_F4626807571770296779ring_a] :
( ( ( map_nat_nat @ F @ Ss )
= ( map_Fi4188601705611449169_a_nat @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_size_list_nat @ Ss ) )
=> ( ( F @ ( nth_nat @ Ss @ I3 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_991_map__nth__conv,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Ss: list_F4626807571770296779ring_a,G: nat > finite_mod_ring_a,Ts: list_nat] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Ss )
= ( map_na1928064127006292399ring_a @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_s7115545719440041015ring_a @ Ss ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Ss @ I3 ) )
= ( G @ ( nth_nat @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_992_map__nth__conv,axiom,
! [F: nat > finite_mod_ring_a,Ss: list_nat,G: finite_mod_ring_a > finite_mod_ring_a,Ts: list_F4626807571770296779ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Ss )
= ( map_Fi7082711781076630404ring_a @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_size_list_nat @ Ss ) )
=> ( ( F @ ( nth_nat @ Ss @ I3 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_993_map__nth__conv,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Ss: list_F4626807571770296779ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ts: list_F4626807571770296779ring_a] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Ss )
= ( map_Fi7082711781076630404ring_a @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_s7115545719440041015ring_a @ Ss ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Ss @ I3 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_994_map__nth__conv,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Ss: list_P3622523039039653997ring_a,G: nat > finite_mod_ring_a,Ts: list_nat] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Ss )
= ( map_na1928064127006292399ring_a @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_s681732177277979353ring_a @ Ss ) )
=> ( ( F @ ( nth_Pr6403360895060014830ring_a @ Ss @ I3 ) )
= ( G @ ( nth_nat @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_995_map__nth__conv,axiom,
! [F: nat > finite_mod_ring_a,Ss: list_nat,G: produc4299165986903738727ring_a > finite_mod_ring_a,Ts: list_P3622523039039653997ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Ss )
= ( map_Pr8707103244924889698ring_a @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_size_list_nat @ Ss ) )
=> ( ( F @ ( nth_nat @ Ss @ I3 ) )
= ( G @ ( nth_Pr6403360895060014830ring_a @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_996_map__nth__conv,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Ss: list_P3622523039039653997ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ts: list_F4626807571770296779ring_a] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Ss )
= ( map_Fi7082711781076630404ring_a @ G @ Ts ) )
=> ! [I3: nat] :
( ( ord_less_nat @ I3 @ ( size_s681732177277979353ring_a @ Ss ) )
=> ( ( F @ ( nth_Pr6403360895060014830ring_a @ Ss @ I3 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ts @ I3 ) ) ) ) ) ).
% map_nth_conv
thf(fact_997_map__eq__conv_H,axiom,
! [F: nat > nat,Xs: list_nat,G: nat > nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_998_map__eq__conv_H,axiom,
! [F: finite_mod_ring_a > nat,Xs: list_F4626807571770296779ring_a,G: nat > nat,Ys: list_nat] :
( ( ( map_Fi4188601705611449169_a_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
= ( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_999_map__eq__conv_H,axiom,
! [F: nat > nat,Xs: list_nat,G: finite_mod_ring_a > nat,Ys: list_F4626807571770296779ring_a] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_Fi4188601705611449169_a_nat @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1000_map__eq__conv_H,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1001_map__eq__conv_H,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
= ( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1002_map__eq__conv_H,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1003_map__eq__conv_H,axiom,
! [F: finite_mod_ring_a > finite_mod_ring_a,Xs: list_F4626807571770296779ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_Fi7082711781076630404ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
= ( ( ( size_s7115545719440041015ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s7115545719440041015ring_a @ Xs ) )
=> ( ( F @ ( nth_Fi694352073394265932ring_a @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1004_map__eq__conv_H,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,G: nat > finite_mod_ring_a,Ys: list_nat] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Xs )
= ( map_na1928064127006292399ring_a @ G @ Ys ) )
= ( ( ( size_s681732177277979353ring_a @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s681732177277979353ring_a @ Xs ) )
=> ( ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1005_map__eq__conv_H,axiom,
! [F: nat > finite_mod_ring_a,Xs: list_nat,G: produc4299165986903738727ring_a > finite_mod_ring_a,Ys: list_P3622523039039653997ring_a] :
( ( ( map_na1928064127006292399ring_a @ F @ Xs )
= ( map_Pr8707103244924889698ring_a @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_s681732177277979353ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_Pr6403360895060014830ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1006_map__eq__conv_H,axiom,
! [F: produc4299165986903738727ring_a > finite_mod_ring_a,Xs: list_P3622523039039653997ring_a,G: finite_mod_ring_a > finite_mod_ring_a,Ys: list_F4626807571770296779ring_a] :
( ( ( map_Pr8707103244924889698ring_a @ F @ Xs )
= ( map_Fi7082711781076630404ring_a @ G @ Ys ) )
= ( ( ( size_s681732177277979353ring_a @ Xs )
= ( size_s7115545719440041015ring_a @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s681732177277979353ring_a @ Xs ) )
=> ( ( F @ ( nth_Pr6403360895060014830ring_a @ Xs @ I4 ) )
= ( G @ ( nth_Fi694352073394265932ring_a @ Ys @ I4 ) ) ) ) ) ) ).
% map_eq_conv'
thf(fact_1007_mod__nat__int__pow__eq,axiom,
! [A: int,P: int,N: nat] :
( ( ord_less_eq_int @ zero_zero_int @ A )
=> ( ( ord_less_eq_int @ zero_zero_int @ P )
=> ( ( modulo_modulo_nat @ ( power_power_nat @ ( nat2 @ A ) @ N ) @ ( nat2 @ P ) )
= ( nat2 @ ( modulo_modulo_int @ ( power_power_int @ A @ N ) @ P ) ) ) ) ) ).
% mod_nat_int_pow_eq
thf(fact_1008_kyber__ntt_Oomega__properties_I3_J,axiom,
! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ omega @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ M2 ) ) ).
% kyber_ntt.omega_properties(3)
thf(fact_1009_negative__psi_H,axiom,
! [I: nat,J: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ psi_inv @ I ) @ ( power_6826135765519566523ring_a @ psi @ J ) )
= ( power_6826135765519566523ring_a @ psi @ ( minus_minus_nat @ J @ I ) ) ) ) ).
% negative_psi'
thf(fact_1010_negative__psi,axiom,
! [I: nat,J: nat] :
( ( ord_less_nat @ I @ J )
=> ( ( times_5121417576591743744ring_a @ ( power_6826135765519566523ring_a @ psi @ J ) @ ( power_6826135765519566523ring_a @ psi_inv @ I ) )
= ( power_6826135765519566523ring_a @ psi @ ( minus_minus_nat @ J @ I ) ) ) ) ).
% negative_psi
thf(fact_1011_omega__properties_I2_J,axiom,
omega != one_on2109788427901206336ring_a ).
% omega_properties(2)
thf(fact_1012_omega__properties_I1_J,axiom,
( ( power_6826135765519566523ring_a @ omega @ n )
= one_on2109788427901206336ring_a ) ).
% omega_properties(1)
thf(fact_1013_deg__Poly_H,axiom,
! [Xs: list_F4626807571770296779ring_a] :
( ( ( poly_F5739129160929385880ring_a @ Xs )
!= zero_z1830546546923837194ring_a )
=> ( ord_less_eq_nat @ ( degree4881254707062955960ring_a @ ( poly_F5739129160929385880ring_a @ Xs ) ) @ ( minus_minus_nat @ ( size_s7115545719440041015ring_a @ Xs ) @ one_one_nat ) ) ) ).
% deg_Poly'
thf(fact_1014_deg__Poly_H,axiom,
! [Xs: list_nat] :
( ( ( poly_nat2 @ Xs )
!= zero_zero_poly_nat )
=> ( ord_less_eq_nat @ ( degree_nat @ ( poly_nat2 @ Xs ) ) @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) ) ) ).
% deg_Poly'
thf(fact_1015_omega__properties_I3_J,axiom,
! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ omega @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ n @ M2 ) ) ).
% omega_properties(3)
thf(fact_1016_omega__prop_H,axiom,
! [M5: nat] :
( ( ( power_6826135765519566523ring_a @ omega @ M5 )
= one_on2109788427901206336ring_a )
=> ( ( M5 != zero_zero_nat )
=> ( ord_less_eq_nat @ n @ M5 ) ) ) ).
% omega_prop'
thf(fact_1017_kyber__ntt_Oomega__properties_I1_J,axiom,
( ( power_6826135765519566523ring_a @ omega @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
= one_on2109788427901206336ring_a ) ).
% kyber_ntt.omega_properties(1)
thf(fact_1018_diff__self,axiom,
! [A: finite_mod_ring_a] :
( ( minus_3609261664126569004ring_a @ A @ A )
= zero_z7902377541816115708ring_a ) ).
% diff_self
thf(fact_1019_diff__self,axiom,
! [A: int] :
( ( minus_minus_int @ A @ A )
= zero_zero_int ) ).
% diff_self
thf(fact_1020_diff__self,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( minus_5354101470050066234ring_a @ A @ A )
= zero_z1830546546923837194ring_a ) ).
% diff_self
thf(fact_1021_diff__0__right,axiom,
! [A: finite_mod_ring_a] :
( ( minus_3609261664126569004ring_a @ A @ zero_z7902377541816115708ring_a )
= A ) ).
% diff_0_right
thf(fact_1022_diff__0__right,axiom,
! [A: int] :
( ( minus_minus_int @ A @ zero_zero_int )
= A ) ).
% diff_0_right
thf(fact_1023_diff__0__right,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( minus_5354101470050066234ring_a @ A @ zero_z1830546546923837194ring_a )
= A ) ).
% diff_0_right
thf(fact_1024_zero__diff,axiom,
! [A: nat] :
( ( minus_minus_nat @ zero_zero_nat @ A )
= zero_zero_nat ) ).
% zero_diff
thf(fact_1025_diff__zero,axiom,
! [A: finite_mod_ring_a] :
( ( minus_3609261664126569004ring_a @ A @ zero_z7902377541816115708ring_a )
= A ) ).
% diff_zero
thf(fact_1026_diff__zero,axiom,
! [A: nat] :
( ( minus_minus_nat @ A @ zero_zero_nat )
= A ) ).
% diff_zero
thf(fact_1027_diff__zero,axiom,
! [A: int] :
( ( minus_minus_int @ A @ zero_zero_int )
= A ) ).
% diff_zero
thf(fact_1028_diff__zero,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( minus_5354101470050066234ring_a @ A @ zero_z1830546546923837194ring_a )
= A ) ).
% diff_zero
thf(fact_1029_cancel__comm__monoid__add__class_Odiff__cancel,axiom,
! [A: finite_mod_ring_a] :
( ( minus_3609261664126569004ring_a @ A @ A )
= zero_z7902377541816115708ring_a ) ).
% cancel_comm_monoid_add_class.diff_cancel
thf(fact_1030_cancel__comm__monoid__add__class_Odiff__cancel,axiom,
! [A: nat] :
( ( minus_minus_nat @ A @ A )
= zero_zero_nat ) ).
% cancel_comm_monoid_add_class.diff_cancel
thf(fact_1031_cancel__comm__monoid__add__class_Odiff__cancel,axiom,
! [A: int] :
( ( minus_minus_int @ A @ A )
= zero_zero_int ) ).
% cancel_comm_monoid_add_class.diff_cancel
thf(fact_1032_cancel__comm__monoid__add__class_Odiff__cancel,axiom,
! [A: poly_F3299452240248304339ring_a] :
( ( minus_5354101470050066234ring_a @ A @ A )
= zero_z1830546546923837194ring_a ) ).
% cancel_comm_monoid_add_class.diff_cancel
thf(fact_1033_minus__mod__self2,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ A @ B ) @ B )
= ( modulo2591651872109920577ring_a @ A @ B ) ) ).
% minus_mod_self2
thf(fact_1034_minus__mod__self2,axiom,
! [A: int,B: int] :
( ( modulo_modulo_int @ ( minus_minus_int @ A @ B ) @ B )
= ( modulo_modulo_int @ A @ B ) ) ).
% minus_mod_self2
thf(fact_1035_diff__0__eq__0,axiom,
! [N: nat] :
( ( minus_minus_nat @ zero_zero_nat @ N )
= zero_zero_nat ) ).
% diff_0_eq_0
thf(fact_1036_diff__self__eq__0,axiom,
! [M: nat] :
( ( minus_minus_nat @ M @ M )
= zero_zero_nat ) ).
% diff_self_eq_0
thf(fact_1037_coeff__diff,axiom,
! [P: poly_nat,Q: poly_nat,N: nat] :
( ( coeff_nat @ ( minus_minus_poly_nat @ P @ Q ) @ N )
= ( minus_minus_nat @ ( coeff_nat @ P @ N ) @ ( coeff_nat @ Q @ N ) ) ) ).
% coeff_diff
thf(fact_1038_coeff__diff,axiom,
! [P: poly_int,Q: poly_int,N: nat] :
( ( coeff_int @ ( minus_minus_poly_int @ P @ Q ) @ N )
= ( minus_minus_int @ ( coeff_int @ P @ N ) @ ( coeff_int @ Q @ N ) ) ) ).
% coeff_diff
thf(fact_1039_coeff__diff,axiom,
! [P: poly_p2573953413498894561ring_a,Q: poly_p2573953413498894561ring_a,N: nat] :
( ( coeff_7919988552178873973ring_a @ ( minus_8398332843867831112ring_a @ P @ Q ) @ N )
= ( minus_5354101470050066234ring_a @ ( coeff_7919988552178873973ring_a @ P @ N ) @ ( coeff_7919988552178873973ring_a @ Q @ N ) ) ) ).
% coeff_diff
thf(fact_1040_coeff__diff,axiom,
! [P: poly_F3299452240248304339ring_a,Q: poly_F3299452240248304339ring_a,N: nat] :
( ( coeff_1607515655354303335ring_a @ ( minus_5354101470050066234ring_a @ P @ Q ) @ N )
= ( minus_3609261664126569004ring_a @ ( coeff_1607515655354303335ring_a @ P @ N ) @ ( coeff_1607515655354303335ring_a @ Q @ N ) ) ) ).
% coeff_diff
thf(fact_1041_diff__diff__cancel,axiom,
! [I: nat,N: nat] :
( ( ord_less_eq_nat @ I @ N )
=> ( ( minus_minus_nat @ N @ ( minus_minus_nat @ N @ I ) )
= I ) ) ).
% diff_diff_cancel
thf(fact_1042_length__upt,axiom,
! [I: nat,J: nat] :
( ( size_size_list_nat @ ( upt @ I @ J ) )
= ( minus_minus_nat @ J @ I ) ) ).
% length_upt
thf(fact_1043_diff__ge__0__iff__ge,axiom,
! [A: int,B: int] :
( ( ord_less_eq_int @ zero_zero_int @ ( minus_minus_int @ A @ B ) )
= ( ord_less_eq_int @ B @ A ) ) ).
% diff_ge_0_iff_ge
thf(fact_1044_diff__gt__0__iff__gt,axiom,
! [A: int,B: int] :
( ( ord_less_int @ zero_zero_int @ ( minus_minus_int @ A @ B ) )
= ( ord_less_int @ B @ A ) ) ).
% diff_gt_0_iff_gt
thf(fact_1045_diff__numeral__special_I9_J,axiom,
( ( minus_minus_poly_int @ one_one_poly_int @ one_one_poly_int )
= zero_zero_poly_int ) ).
% diff_numeral_special(9)
thf(fact_1046_diff__numeral__special_I9_J,axiom,
( ( minus_3609261664126569004ring_a @ one_on2109788427901206336ring_a @ one_on2109788427901206336ring_a )
= zero_z7902377541816115708ring_a ) ).
% diff_numeral_special(9)
thf(fact_1047_diff__numeral__special_I9_J,axiom,
( ( minus_minus_int @ one_one_int @ one_one_int )
= zero_zero_int ) ).
% diff_numeral_special(9)
thf(fact_1048_diff__numeral__special_I9_J,axiom,
( ( minus_5354101470050066234ring_a @ one_on3394844594818161742ring_a @ one_on3394844594818161742ring_a )
= zero_z1830546546923837194ring_a ) ).
% diff_numeral_special(9)
thf(fact_1049_zero__less__diff,axiom,
! [N: nat,M: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( minus_minus_nat @ N @ M ) )
= ( ord_less_nat @ M @ N ) ) ).
% zero_less_diff
thf(fact_1050_diff__is__0__eq,axiom,
! [M: nat,N: nat] :
( ( ( minus_minus_nat @ M @ N )
= zero_zero_nat )
= ( ord_less_eq_nat @ M @ N ) ) ).
% diff_is_0_eq
thf(fact_1051_diff__is__0__eq_H,axiom,
! [M: nat,N: nat] :
( ( ord_less_eq_nat @ M @ N )
=> ( ( minus_minus_nat @ M @ N )
= zero_zero_nat ) ) ).
% diff_is_0_eq'
thf(fact_1052_degree__drop__n,axiom,
! [F: poly_F3299452240248304339ring_a] :
( ( degree4881254707062955960ring_a @ ( nTT_ky790528430515779601ring_a @ n @ F ) )
= ( minus_minus_nat @ ( degree4881254707062955960ring_a @ F ) @ n ) ) ).
% degree_drop_n
thf(fact_1053_kyber__ntt_Olength__NTT,axiom,
! [Numbers: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Numbers )
= ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
=> ( ( size_s7115545719440041015ring_a @ ( nTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ omega @ Numbers ) )
= ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ).
% kyber_ntt.length_NTT
thf(fact_1054_eq__iff__diff__eq__0,axiom,
( ( ^ [Y: finite_mod_ring_a,Z: finite_mod_ring_a] : ( Y = Z ) )
= ( ^ [A2: finite_mod_ring_a,B2: finite_mod_ring_a] :
( ( minus_3609261664126569004ring_a @ A2 @ B2 )
= zero_z7902377541816115708ring_a ) ) ) ).
% eq_iff_diff_eq_0
thf(fact_1055_eq__iff__diff__eq__0,axiom,
( ( ^ [Y: int,Z: int] : ( Y = Z ) )
= ( ^ [A2: int,B2: int] :
( ( minus_minus_int @ A2 @ B2 )
= zero_zero_int ) ) ) ).
% eq_iff_diff_eq_0
thf(fact_1056_eq__iff__diff__eq__0,axiom,
( ( ^ [Y: poly_F3299452240248304339ring_a,Z: poly_F3299452240248304339ring_a] : ( Y = Z ) )
= ( ^ [A2: poly_F3299452240248304339ring_a,B2: poly_F3299452240248304339ring_a] :
( ( minus_5354101470050066234ring_a @ A2 @ B2 )
= zero_z1830546546923837194ring_a ) ) ) ).
% eq_iff_diff_eq_0
thf(fact_1057_diff__strict__right__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_int @ A @ B )
=> ( ord_less_int @ ( minus_minus_int @ A @ C ) @ ( minus_minus_int @ B @ C ) ) ) ).
% diff_strict_right_mono
thf(fact_1058_diff__strict__left__mono,axiom,
! [B: int,A: int,C: int] :
( ( ord_less_int @ B @ A )
=> ( ord_less_int @ ( minus_minus_int @ C @ A ) @ ( minus_minus_int @ C @ B ) ) ) ).
% diff_strict_left_mono
thf(fact_1059_diff__eq__diff__less,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ( minus_minus_int @ A @ B )
= ( minus_minus_int @ C @ D ) )
=> ( ( ord_less_int @ A @ B )
= ( ord_less_int @ C @ D ) ) ) ).
% diff_eq_diff_less
thf(fact_1060_diff__strict__mono,axiom,
! [A: int,B: int,D: int,C: int] :
( ( ord_less_int @ A @ B )
=> ( ( ord_less_int @ D @ C )
=> ( ord_less_int @ ( minus_minus_int @ A @ C ) @ ( minus_minus_int @ B @ D ) ) ) ) ).
% diff_strict_mono
thf(fact_1061_left__diff__distrib,axiom,
! [A: kyber_qr_a,B: kyber_qr_a,C: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ ( minus_3375643675566563378r_qr_a @ A @ B ) @ C )
= ( minus_3375643675566563378r_qr_a @ ( times_2095635435063429214r_qr_a @ A @ C ) @ ( times_2095635435063429214r_qr_a @ B @ C ) ) ) ).
% left_diff_distrib
thf(fact_1062_left__diff__distrib,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ ( minus_3609261664126569004ring_a @ A @ B ) @ C )
= ( minus_3609261664126569004ring_a @ ( times_5121417576591743744ring_a @ A @ C ) @ ( times_5121417576591743744ring_a @ B @ C ) ) ) ).
% left_diff_distrib
thf(fact_1063_left__diff__distrib,axiom,
! [A: int,B: int,C: int] :
( ( times_times_int @ ( minus_minus_int @ A @ B ) @ C )
= ( minus_minus_int @ ( times_times_int @ A @ C ) @ ( times_times_int @ B @ C ) ) ) ).
% left_diff_distrib
thf(fact_1064_left__diff__distrib,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ ( minus_5354101470050066234ring_a @ A @ B ) @ C )
= ( minus_5354101470050066234ring_a @ ( times_3242606764180207630ring_a @ A @ C ) @ ( times_3242606764180207630ring_a @ B @ C ) ) ) ).
% left_diff_distrib
thf(fact_1065_right__diff__distrib,axiom,
! [A: kyber_qr_a,B: kyber_qr_a,C: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ A @ ( minus_3375643675566563378r_qr_a @ B @ C ) )
= ( minus_3375643675566563378r_qr_a @ ( times_2095635435063429214r_qr_a @ A @ B ) @ ( times_2095635435063429214r_qr_a @ A @ C ) ) ) ).
% right_diff_distrib
thf(fact_1066_right__diff__distrib,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ A @ ( minus_3609261664126569004ring_a @ B @ C ) )
= ( minus_3609261664126569004ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ ( times_5121417576591743744ring_a @ A @ C ) ) ) ).
% right_diff_distrib
thf(fact_1067_right__diff__distrib,axiom,
! [A: int,B: int,C: int] :
( ( times_times_int @ A @ ( minus_minus_int @ B @ C ) )
= ( minus_minus_int @ ( times_times_int @ A @ B ) @ ( times_times_int @ A @ C ) ) ) ).
% right_diff_distrib
thf(fact_1068_right__diff__distrib,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ A @ ( minus_5354101470050066234ring_a @ B @ C ) )
= ( minus_5354101470050066234ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ ( times_3242606764180207630ring_a @ A @ C ) ) ) ).
% right_diff_distrib
thf(fact_1069_left__diff__distrib_H,axiom,
! [B: kyber_qr_a,C: kyber_qr_a,A: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ ( minus_3375643675566563378r_qr_a @ B @ C ) @ A )
= ( minus_3375643675566563378r_qr_a @ ( times_2095635435063429214r_qr_a @ B @ A ) @ ( times_2095635435063429214r_qr_a @ C @ A ) ) ) ).
% left_diff_distrib'
thf(fact_1070_left__diff__distrib_H,axiom,
! [B: finite_mod_ring_a,C: finite_mod_ring_a,A: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ ( minus_3609261664126569004ring_a @ B @ C ) @ A )
= ( minus_3609261664126569004ring_a @ ( times_5121417576591743744ring_a @ B @ A ) @ ( times_5121417576591743744ring_a @ C @ A ) ) ) ).
% left_diff_distrib'
thf(fact_1071_left__diff__distrib_H,axiom,
! [B: nat,C: nat,A: nat] :
( ( times_times_nat @ ( minus_minus_nat @ B @ C ) @ A )
= ( minus_minus_nat @ ( times_times_nat @ B @ A ) @ ( times_times_nat @ C @ A ) ) ) ).
% left_diff_distrib'
thf(fact_1072_left__diff__distrib_H,axiom,
! [B: int,C: int,A: int] :
( ( times_times_int @ ( minus_minus_int @ B @ C ) @ A )
= ( minus_minus_int @ ( times_times_int @ B @ A ) @ ( times_times_int @ C @ A ) ) ) ).
% left_diff_distrib'
thf(fact_1073_left__diff__distrib_H,axiom,
! [B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,A: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ ( minus_5354101470050066234ring_a @ B @ C ) @ A )
= ( minus_5354101470050066234ring_a @ ( times_3242606764180207630ring_a @ B @ A ) @ ( times_3242606764180207630ring_a @ C @ A ) ) ) ).
% left_diff_distrib'
thf(fact_1074_right__diff__distrib_H,axiom,
! [A: kyber_qr_a,B: kyber_qr_a,C: kyber_qr_a] :
( ( times_2095635435063429214r_qr_a @ A @ ( minus_3375643675566563378r_qr_a @ B @ C ) )
= ( minus_3375643675566563378r_qr_a @ ( times_2095635435063429214r_qr_a @ A @ B ) @ ( times_2095635435063429214r_qr_a @ A @ C ) ) ) ).
% right_diff_distrib'
thf(fact_1075_right__diff__distrib_H,axiom,
! [A: finite_mod_ring_a,B: finite_mod_ring_a,C: finite_mod_ring_a] :
( ( times_5121417576591743744ring_a @ A @ ( minus_3609261664126569004ring_a @ B @ C ) )
= ( minus_3609261664126569004ring_a @ ( times_5121417576591743744ring_a @ A @ B ) @ ( times_5121417576591743744ring_a @ A @ C ) ) ) ).
% right_diff_distrib'
thf(fact_1076_right__diff__distrib_H,axiom,
! [A: nat,B: nat,C: nat] :
( ( times_times_nat @ A @ ( minus_minus_nat @ B @ C ) )
= ( minus_minus_nat @ ( times_times_nat @ A @ B ) @ ( times_times_nat @ A @ C ) ) ) ).
% right_diff_distrib'
thf(fact_1077_right__diff__distrib_H,axiom,
! [A: int,B: int,C: int] :
( ( times_times_int @ A @ ( minus_minus_int @ B @ C ) )
= ( minus_minus_int @ ( times_times_int @ A @ B ) @ ( times_times_int @ A @ C ) ) ) ).
% right_diff_distrib'
thf(fact_1078_right__diff__distrib_H,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( times_3242606764180207630ring_a @ A @ ( minus_5354101470050066234ring_a @ B @ C ) )
= ( minus_5354101470050066234ring_a @ ( times_3242606764180207630ring_a @ A @ B ) @ ( times_3242606764180207630ring_a @ A @ C ) ) ) ).
% right_diff_distrib'
thf(fact_1079_minus__nat_Odiff__0,axiom,
! [M: nat] :
( ( minus_minus_nat @ M @ zero_zero_nat )
= M ) ).
% minus_nat.diff_0
thf(fact_1080_diffs0__imp__equal,axiom,
! [M: nat,N: nat] :
( ( ( minus_minus_nat @ M @ N )
= zero_zero_nat )
=> ( ( ( minus_minus_nat @ N @ M )
= zero_zero_nat )
=> ( M = N ) ) ) ).
% diffs0_imp_equal
thf(fact_1081_cancel__ab__semigroup__add__class_Odiff__right__commute,axiom,
! [A: nat,C: nat,B: nat] :
( ( minus_minus_nat @ ( minus_minus_nat @ A @ C ) @ B )
= ( minus_minus_nat @ ( minus_minus_nat @ A @ B ) @ C ) ) ).
% cancel_ab_semigroup_add_class.diff_right_commute
thf(fact_1082_cancel__ab__semigroup__add__class_Odiff__right__commute,axiom,
! [A: int,C: int,B: int] :
( ( minus_minus_int @ ( minus_minus_int @ A @ C ) @ B )
= ( minus_minus_int @ ( minus_minus_int @ A @ B ) @ C ) ) ).
% cancel_ab_semigroup_add_class.diff_right_commute
thf(fact_1083_cancel__ab__semigroup__add__class_Odiff__right__commute,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( minus_5354101470050066234ring_a @ ( minus_5354101470050066234ring_a @ A @ C ) @ B )
= ( minus_5354101470050066234ring_a @ ( minus_5354101470050066234ring_a @ A @ B ) @ C ) ) ).
% cancel_ab_semigroup_add_class.diff_right_commute
thf(fact_1084_diff__eq__diff__eq,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ( minus_minus_int @ A @ B )
= ( minus_minus_int @ C @ D ) )
=> ( ( A = B )
= ( C = D ) ) ) ).
% diff_eq_diff_eq
thf(fact_1085_diff__eq__diff__eq,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,D: poly_F3299452240248304339ring_a] :
( ( ( minus_5354101470050066234ring_a @ A @ B )
= ( minus_5354101470050066234ring_a @ C @ D ) )
=> ( ( A = B )
= ( C = D ) ) ) ).
% diff_eq_diff_eq
thf(fact_1086_diff__commute,axiom,
! [I: nat,J: nat,K: nat] :
( ( minus_minus_nat @ ( minus_minus_nat @ I @ J ) @ K )
= ( minus_minus_nat @ ( minus_minus_nat @ I @ K ) @ J ) ) ).
% diff_commute
thf(fact_1087_minus__poly_Orep__eq,axiom,
! [X: poly_nat,Xa: poly_nat] :
( ( coeff_nat @ ( minus_minus_poly_nat @ X @ Xa ) )
= ( ^ [N2: nat] : ( minus_minus_nat @ ( coeff_nat @ X @ N2 ) @ ( coeff_nat @ Xa @ N2 ) ) ) ) ).
% minus_poly.rep_eq
thf(fact_1088_minus__poly_Orep__eq,axiom,
! [X: poly_int,Xa: poly_int] :
( ( coeff_int @ ( minus_minus_poly_int @ X @ Xa ) )
= ( ^ [N2: nat] : ( minus_minus_int @ ( coeff_int @ X @ N2 ) @ ( coeff_int @ Xa @ N2 ) ) ) ) ).
% minus_poly.rep_eq
thf(fact_1089_minus__poly_Orep__eq,axiom,
! [X: poly_p2573953413498894561ring_a,Xa: poly_p2573953413498894561ring_a] :
( ( coeff_7919988552178873973ring_a @ ( minus_8398332843867831112ring_a @ X @ Xa ) )
= ( ^ [N2: nat] : ( minus_5354101470050066234ring_a @ ( coeff_7919988552178873973ring_a @ X @ N2 ) @ ( coeff_7919988552178873973ring_a @ Xa @ N2 ) ) ) ) ).
% minus_poly.rep_eq
thf(fact_1090_minus__poly_Orep__eq,axiom,
! [X: poly_F3299452240248304339ring_a,Xa: poly_F3299452240248304339ring_a] :
( ( coeff_1607515655354303335ring_a @ ( minus_5354101470050066234ring_a @ X @ Xa ) )
= ( ^ [N2: nat] : ( minus_3609261664126569004ring_a @ ( coeff_1607515655354303335ring_a @ X @ N2 ) @ ( coeff_1607515655354303335ring_a @ Xa @ N2 ) ) ) ) ).
% minus_poly.rep_eq
thf(fact_1091_diff__mult__distrib2,axiom,
! [K: nat,M: nat,N: nat] :
( ( times_times_nat @ K @ ( minus_minus_nat @ M @ N ) )
= ( minus_minus_nat @ ( times_times_nat @ K @ M ) @ ( times_times_nat @ K @ N ) ) ) ).
% diff_mult_distrib2
thf(fact_1092_diff__mult__distrib,axiom,
! [M: nat,N: nat,K: nat] :
( ( times_times_nat @ ( minus_minus_nat @ M @ N ) @ K )
= ( minus_minus_nat @ ( times_times_nat @ M @ K ) @ ( times_times_nat @ N @ K ) ) ) ).
% diff_mult_distrib
thf(fact_1093_eq__diff__iff,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ K @ M )
=> ( ( ord_less_eq_nat @ K @ N )
=> ( ( ( minus_minus_nat @ M @ K )
= ( minus_minus_nat @ N @ K ) )
= ( M = N ) ) ) ) ).
% eq_diff_iff
thf(fact_1094_le__diff__iff,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ K @ M )
=> ( ( ord_less_eq_nat @ K @ N )
=> ( ( ord_less_eq_nat @ ( minus_minus_nat @ M @ K ) @ ( minus_minus_nat @ N @ K ) )
= ( ord_less_eq_nat @ M @ N ) ) ) ) ).
% le_diff_iff
thf(fact_1095_Nat_Odiff__diff__eq,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ K @ M )
=> ( ( ord_less_eq_nat @ K @ N )
=> ( ( minus_minus_nat @ ( minus_minus_nat @ M @ K ) @ ( minus_minus_nat @ N @ K ) )
= ( minus_minus_nat @ M @ N ) ) ) ) ).
% Nat.diff_diff_eq
thf(fact_1096_diff__le__mono,axiom,
! [M: nat,N: nat,L: nat] :
( ( ord_less_eq_nat @ M @ N )
=> ( ord_less_eq_nat @ ( minus_minus_nat @ M @ L ) @ ( minus_minus_nat @ N @ L ) ) ) ).
% diff_le_mono
thf(fact_1097_diff__le__self,axiom,
! [M: nat,N: nat] : ( ord_less_eq_nat @ ( minus_minus_nat @ M @ N ) @ M ) ).
% diff_le_self
thf(fact_1098_le__diff__iff_H,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_eq_nat @ A @ C )
=> ( ( ord_less_eq_nat @ B @ C )
=> ( ( ord_less_eq_nat @ ( minus_minus_nat @ C @ A ) @ ( minus_minus_nat @ C @ B ) )
= ( ord_less_eq_nat @ B @ A ) ) ) ) ).
% le_diff_iff'
thf(fact_1099_diff__le__mono2,axiom,
! [M: nat,N: nat,L: nat] :
( ( ord_less_eq_nat @ M @ N )
=> ( ord_less_eq_nat @ ( minus_minus_nat @ L @ N ) @ ( minus_minus_nat @ L @ M ) ) ) ).
% diff_le_mono2
thf(fact_1100_diff__less__mono2,axiom,
! [M: nat,N: nat,L: nat] :
( ( ord_less_nat @ M @ N )
=> ( ( ord_less_nat @ M @ L )
=> ( ord_less_nat @ ( minus_minus_nat @ L @ N ) @ ( minus_minus_nat @ L @ M ) ) ) ) ).
% diff_less_mono2
thf(fact_1101_less__imp__diff__less,axiom,
! [J: nat,K: nat,N: nat] :
( ( ord_less_nat @ J @ K )
=> ( ord_less_nat @ ( minus_minus_nat @ J @ N ) @ K ) ) ).
% less_imp_diff_less
thf(fact_1102_mod__diff__right__eq,axiom,
! [A: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ A @ ( modulo2591651872109920577ring_a @ B @ C ) ) @ C )
= ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ A @ B ) @ C ) ) ).
% mod_diff_right_eq
thf(fact_1103_mod__diff__right__eq,axiom,
! [A: int,B: int,C: int] :
( ( modulo_modulo_int @ ( minus_minus_int @ A @ ( modulo_modulo_int @ B @ C ) ) @ C )
= ( modulo_modulo_int @ ( minus_minus_int @ A @ B ) @ C ) ) ).
% mod_diff_right_eq
thf(fact_1104_mod__diff__left__eq,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ ( modulo2591651872109920577ring_a @ A @ C ) @ B ) @ C )
= ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ A @ B ) @ C ) ) ).
% mod_diff_left_eq
thf(fact_1105_mod__diff__left__eq,axiom,
! [A: int,C: int,B: int] :
( ( modulo_modulo_int @ ( minus_minus_int @ ( modulo_modulo_int @ A @ C ) @ B ) @ C )
= ( modulo_modulo_int @ ( minus_minus_int @ A @ B ) @ C ) ) ).
% mod_diff_left_eq
thf(fact_1106_mod__diff__cong,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,A3: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a,B3: poly_F3299452240248304339ring_a] :
( ( ( modulo2591651872109920577ring_a @ A @ C )
= ( modulo2591651872109920577ring_a @ A3 @ C ) )
=> ( ( ( modulo2591651872109920577ring_a @ B @ C )
= ( modulo2591651872109920577ring_a @ B3 @ C ) )
=> ( ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ A @ B ) @ C )
= ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ A3 @ B3 ) @ C ) ) ) ) ).
% mod_diff_cong
thf(fact_1107_mod__diff__cong,axiom,
! [A: int,C: int,A3: int,B: int,B3: int] :
( ( ( modulo_modulo_int @ A @ C )
= ( modulo_modulo_int @ A3 @ C ) )
=> ( ( ( modulo_modulo_int @ B @ C )
= ( modulo_modulo_int @ B3 @ C ) )
=> ( ( modulo_modulo_int @ ( minus_minus_int @ A @ B ) @ C )
= ( modulo_modulo_int @ ( minus_minus_int @ A3 @ B3 ) @ C ) ) ) ) ).
% mod_diff_cong
thf(fact_1108_mod__diff__eq,axiom,
! [A: poly_F3299452240248304339ring_a,C: poly_F3299452240248304339ring_a,B: poly_F3299452240248304339ring_a] :
( ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ ( modulo2591651872109920577ring_a @ A @ C ) @ ( modulo2591651872109920577ring_a @ B @ C ) ) @ C )
= ( modulo2591651872109920577ring_a @ ( minus_5354101470050066234ring_a @ A @ B ) @ C ) ) ).
% mod_diff_eq
thf(fact_1109_mod__diff__eq,axiom,
! [A: int,C: int,B: int] :
( ( modulo_modulo_int @ ( minus_minus_int @ ( modulo_modulo_int @ A @ C ) @ ( modulo_modulo_int @ B @ C ) ) @ C )
= ( modulo_modulo_int @ ( minus_minus_int @ A @ B ) @ C ) ) ).
% mod_diff_eq
thf(fact_1110_diff__eq__diff__less__eq,axiom,
! [A: int,B: int,C: int,D: int] :
( ( ( minus_minus_int @ A @ B )
= ( minus_minus_int @ C @ D ) )
=> ( ( ord_less_eq_int @ A @ B )
= ( ord_less_eq_int @ C @ D ) ) ) ).
% diff_eq_diff_less_eq
thf(fact_1111_diff__right__mono,axiom,
! [A: int,B: int,C: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ord_less_eq_int @ ( minus_minus_int @ A @ C ) @ ( minus_minus_int @ B @ C ) ) ) ).
% diff_right_mono
thf(fact_1112_diff__left__mono,axiom,
! [B: int,A: int,C: int] :
( ( ord_less_eq_int @ B @ A )
=> ( ord_less_eq_int @ ( minus_minus_int @ C @ A ) @ ( minus_minus_int @ C @ B ) ) ) ).
% diff_left_mono
thf(fact_1113_diff__mono,axiom,
! [A: int,B: int,D: int,C: int] :
( ( ord_less_eq_int @ A @ B )
=> ( ( ord_less_eq_int @ D @ C )
=> ( ord_less_eq_int @ ( minus_minus_int @ A @ C ) @ ( minus_minus_int @ B @ D ) ) ) ) ).
% diff_mono
thf(fact_1114_of__nat__diff,axiom,
! [N: nat,M: nat] :
( ( ord_less_eq_nat @ N @ M )
=> ( ( semiri8000969770135892146ring_a @ ( minus_minus_nat @ M @ N ) )
= ( minus_5354101470050066234ring_a @ ( semiri8000969770135892146ring_a @ M ) @ ( semiri8000969770135892146ring_a @ N ) ) ) ) ).
% of_nat_diff
thf(fact_1115_of__nat__diff,axiom,
! [N: nat,M: nat] :
( ( ord_less_eq_nat @ N @ M )
=> ( ( semiri1314217659103216013at_int @ ( minus_minus_nat @ M @ N ) )
= ( minus_minus_int @ ( semiri1314217659103216013at_int @ M ) @ ( semiri1314217659103216013at_int @ N ) ) ) ) ).
% of_nat_diff
thf(fact_1116_of__nat__diff,axiom,
! [N: nat,M: nat] :
( ( ord_less_eq_nat @ N @ M )
=> ( ( semiri9180929696517417892ring_a @ ( minus_minus_nat @ M @ N ) )
= ( minus_3609261664126569004ring_a @ ( semiri9180929696517417892ring_a @ M ) @ ( semiri9180929696517417892ring_a @ N ) ) ) ) ).
% of_nat_diff
thf(fact_1117_of__nat__diff,axiom,
! [N: nat,M: nat] :
( ( ord_less_eq_nat @ N @ M )
=> ( ( semiri1316708129612266289at_nat @ ( minus_minus_nat @ M @ N ) )
= ( minus_minus_nat @ ( semiri1316708129612266289at_nat @ M ) @ ( semiri1316708129612266289at_nat @ N ) ) ) ) ).
% of_nat_diff
thf(fact_1118_le__iff__diff__le__0,axiom,
( ord_less_eq_int
= ( ^ [A2: int,B2: int] : ( ord_less_eq_int @ ( minus_minus_int @ A2 @ B2 ) @ zero_zero_int ) ) ) ).
% le_iff_diff_le_0
thf(fact_1119_less__iff__diff__less__0,axiom,
( ord_less_int
= ( ^ [A2: int,B2: int] : ( ord_less_int @ ( minus_minus_int @ A2 @ B2 ) @ zero_zero_int ) ) ) ).
% less_iff_diff_less_0
thf(fact_1120_diff__less,axiom,
! [N: nat,M: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( ord_less_nat @ zero_zero_nat @ M )
=> ( ord_less_nat @ ( minus_minus_nat @ M @ N ) @ M ) ) ) ).
% diff_less
thf(fact_1121_less__diff__iff,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ K @ M )
=> ( ( ord_less_eq_nat @ K @ N )
=> ( ( ord_less_nat @ ( minus_minus_nat @ M @ K ) @ ( minus_minus_nat @ N @ K ) )
= ( ord_less_nat @ M @ N ) ) ) ) ).
% less_diff_iff
thf(fact_1122_diff__less__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_eq_nat @ C @ A )
=> ( ord_less_nat @ ( minus_minus_nat @ A @ C ) @ ( minus_minus_nat @ B @ C ) ) ) ) ).
% diff_less_mono
thf(fact_1123_mod__if,axiom,
( modulo_modulo_nat
= ( ^ [M4: nat,N2: nat] : ( if_nat @ ( ord_less_nat @ M4 @ N2 ) @ M4 @ ( modulo_modulo_nat @ ( minus_minus_nat @ M4 @ N2 ) @ N2 ) ) ) ) ).
% mod_if
thf(fact_1124_le__mod__geq,axiom,
! [N: nat,M: nat] :
( ( ord_less_eq_nat @ N @ M )
=> ( ( modulo_modulo_nat @ M @ N )
= ( modulo_modulo_nat @ ( minus_minus_nat @ M @ N ) @ N ) ) ) ).
% le_mod_geq
thf(fact_1125_power__eq__if,axiom,
( power_6500929916544582089ring_a
= ( ^ [P3: poly_F3299452240248304339ring_a,M4: nat] : ( if_pol8205948207082003865ring_a @ ( M4 = zero_zero_nat ) @ one_on3394844594818161742ring_a @ ( times_3242606764180207630ring_a @ P3 @ ( power_6500929916544582089ring_a @ P3 @ ( minus_minus_nat @ M4 @ one_one_nat ) ) ) ) ) ) ).
% power_eq_if
thf(fact_1126_kyber__ntt_ONTT__def,axiom,
! [Numbers: list_F4626807571770296779ring_a] :
( ( nTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ omega @ Numbers )
= ( map_na1928064127006292399ring_a @ ( ntt_a2 @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ omega @ Numbers ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) ).
% kyber_ntt.NTT_def
thf(fact_1127_mu__prop,axiom,
! [M2: nat] :
( ( ( ( power_6826135765519566523ring_a @ mu @ M2 )
= one_on2109788427901206336ring_a )
& ( M2 != zero_zero_nat ) )
=> ( ord_less_eq_nat @ n @ M2 ) ) ).
% mu_prop
thf(fact_1128_mu__prop_H,axiom,
! [M5: nat] :
( ( ( power_6826135765519566523ring_a @ mu @ M5 )
= one_on2109788427901206336ring_a )
=> ( ( M5 != zero_zero_nat )
=> ( ord_less_eq_nat @ n @ M5 ) ) ) ).
% mu_prop'
thf(fact_1129_kyber__ntt_Omu__def,axiom,
( ( preliminary_mu_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
= ( power_6826135765519566523ring_a @ ( preliminary_omega_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) @ ( minus_minus_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ one_one_nat ) ) ) ).
% kyber_ntt.mu_def
thf(fact_1130_kyber__ntt_Omu__properties_H,axiom,
mu != one_on2109788427901206336ring_a ).
% kyber_ntt.mu_properties'
thf(fact_1131_kyber__ntt_Omu__properties,axiom,
( ( times_5121417576591743744ring_a @ mu @ omega )
= one_on2109788427901206336ring_a ) ).
% kyber_ntt.mu_properties
thf(fact_1132_zle__diff1__eq,axiom,
! [W: int,Z2: int] :
( ( ord_less_eq_int @ W @ ( minus_minus_int @ Z2 @ one_one_int ) )
= ( ord_less_int @ W @ Z2 ) ) ).
% zle_diff1_eq
thf(fact_1133_kyber__ntt_Olength__INTT,axiom,
! [Numbers: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Numbers )
= ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
=> ( ( size_s7115545719440041015ring_a @ ( iNTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ mu @ Numbers ) )
= ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ).
% kyber_ntt.length_INTT
thf(fact_1134_int__distrib_I4_J,axiom,
! [W: int,Z1: int,Z22: int] :
( ( times_times_int @ W @ ( minus_minus_int @ Z1 @ Z22 ) )
= ( minus_minus_int @ ( times_times_int @ W @ Z1 ) @ ( times_times_int @ W @ Z22 ) ) ) ).
% int_distrib(4)
thf(fact_1135_int__distrib_I3_J,axiom,
! [Z1: int,Z22: int,W: int] :
( ( times_times_int @ ( minus_minus_int @ Z1 @ Z22 ) @ W )
= ( minus_minus_int @ ( times_times_int @ Z1 @ W ) @ ( times_times_int @ Z22 @ W ) ) ) ).
% int_distrib(3)
thf(fact_1136_int__diff__cases,axiom,
! [Z2: int] :
~ ! [M3: nat,N3: nat] :
( Z2
!= ( minus_minus_int @ ( semiri1314217659103216013at_int @ M3 ) @ ( semiri1314217659103216013at_int @ N3 ) ) ) ).
% int_diff_cases
thf(fact_1137_minus__int__code_I1_J,axiom,
! [K: int] :
( ( minus_minus_int @ K @ zero_zero_int )
= K ) ).
% minus_int_code(1)
thf(fact_1138_int__le__induct,axiom,
! [I: int,K: int,P4: int > $o] :
( ( ord_less_eq_int @ I @ K )
=> ( ( P4 @ K )
=> ( ! [I2: int] :
( ( ord_less_eq_int @ I2 @ K )
=> ( ( P4 @ I2 )
=> ( P4 @ ( minus_minus_int @ I2 @ one_one_int ) ) ) )
=> ( P4 @ I ) ) ) ) ).
% int_le_induct
thf(fact_1139_int__less__induct,axiom,
! [I: int,K: int,P4: int > $o] :
( ( ord_less_int @ I @ K )
=> ( ( P4 @ ( minus_minus_int @ K @ one_one_int ) )
=> ( ! [I2: int] :
( ( ord_less_int @ I2 @ K )
=> ( ( P4 @ I2 )
=> ( P4 @ ( minus_minus_int @ I2 @ one_one_int ) ) ) )
=> ( P4 @ I ) ) ) ) ).
% int_less_induct
thf(fact_1140_int__minus,axiom,
! [N: nat,M: nat] :
( ( semiri1314217659103216013at_int @ ( minus_minus_nat @ N @ M ) )
= ( semiri1314217659103216013at_int @ ( nat2 @ ( minus_minus_int @ ( semiri1314217659103216013at_int @ N ) @ ( semiri1314217659103216013at_int @ M ) ) ) ) ) ).
% int_minus
thf(fact_1141_nat__minus__as__int,axiom,
( minus_minus_nat
= ( ^ [A2: nat,B2: nat] : ( nat2 @ ( minus_minus_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ) ).
% nat_minus_as_int
thf(fact_1142_int__ops_I6_J,axiom,
! [A: nat,B: nat] :
( ( ( ord_less_int @ ( semiri1314217659103216013at_int @ A ) @ ( semiri1314217659103216013at_int @ B ) )
=> ( ( semiri1314217659103216013at_int @ ( minus_minus_nat @ A @ B ) )
= zero_zero_int ) )
& ( ~ ( ord_less_int @ ( semiri1314217659103216013at_int @ A ) @ ( semiri1314217659103216013at_int @ B ) )
=> ( ( semiri1314217659103216013at_int @ ( minus_minus_nat @ A @ B ) )
= ( minus_minus_int @ ( semiri1314217659103216013at_int @ A ) @ ( semiri1314217659103216013at_int @ B ) ) ) ) ) ).
% int_ops(6)
thf(fact_1143_nat__diff__distrib,axiom,
! [Z3: int,Z2: int] :
( ( ord_less_eq_int @ zero_zero_int @ Z3 )
=> ( ( ord_less_eq_int @ Z3 @ Z2 )
=> ( ( nat2 @ ( minus_minus_int @ Z2 @ Z3 ) )
= ( minus_minus_nat @ ( nat2 @ Z2 ) @ ( nat2 @ Z3 ) ) ) ) ) ).
% nat_diff_distrib
thf(fact_1144_nat__diff__distrib_H,axiom,
! [X: int,Y2: int] :
( ( ord_less_eq_int @ zero_zero_int @ X )
=> ( ( ord_less_eq_int @ zero_zero_int @ Y2 )
=> ( ( nat2 @ ( minus_minus_int @ X @ Y2 ) )
= ( minus_minus_nat @ ( nat2 @ X ) @ ( nat2 @ Y2 ) ) ) ) ) ).
% nat_diff_distrib'
thf(fact_1145_mod__pos__geq,axiom,
! [L: int,K: int] :
( ( ord_less_int @ zero_zero_int @ L )
=> ( ( ord_less_eq_int @ L @ K )
=> ( ( modulo_modulo_int @ K @ L )
= ( modulo_modulo_int @ ( minus_minus_int @ K @ L ) @ L ) ) ) ) ).
% mod_pos_geq
thf(fact_1146_diff__nat__eq__if,axiom,
! [Z3: int,Z2: int] :
( ( ( ord_less_int @ Z3 @ zero_zero_int )
=> ( ( minus_minus_nat @ ( nat2 @ Z2 ) @ ( nat2 @ Z3 ) )
= ( nat2 @ Z2 ) ) )
& ( ~ ( ord_less_int @ Z3 @ zero_zero_int )
=> ( ( minus_minus_nat @ ( nat2 @ Z2 ) @ ( nat2 @ Z3 ) )
= ( if_nat @ ( ord_less_int @ ( minus_minus_int @ Z2 @ Z3 ) @ zero_zero_int ) @ zero_zero_nat @ ( nat2 @ ( minus_minus_int @ Z2 @ Z3 ) ) ) ) ) ) ).
% diff_nat_eq_if
thf(fact_1147_kyber__ntt_OINTT__def,axiom,
! [Xs: list_F4626807571770296779ring_a] :
( ( iNTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ mu @ Xs )
= ( map_na1928064127006292399ring_a @ ( intt_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ mu @ Xs ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) ).
% kyber_ntt.INTT_def
thf(fact_1148_split__mod__qr__poly,axiom,
! [F: poly_F3299452240248304339ring_a] :
( ( ord_less_eq_nat @ n @ ( degree4881254707062955960ring_a @ F ) )
=> ( F
= ( plus_p7290290253215468682ring_a @ ( minus_5354101470050066234ring_a @ ( nTT_ky3493641264504450921ring_a @ n @ F ) @ ( nTT_ky790528430515779601ring_a @ n @ F ) ) @ ( times_3242606764180207630ring_a @ kyber_qr_poly_a @ ( nTT_ky790528430515779601ring_a @ n @ F ) ) ) ) ) ).
% split_mod_qr_poly
thf(fact_1149_zdiff__int__split,axiom,
! [P4: int > $o,X: nat,Y2: nat] :
( ( P4 @ ( semiri1314217659103216013at_int @ ( minus_minus_nat @ X @ Y2 ) ) )
= ( ( ( ord_less_eq_nat @ Y2 @ X )
=> ( P4 @ ( minus_minus_int @ ( semiri1314217659103216013at_int @ X ) @ ( semiri1314217659103216013at_int @ Y2 ) ) ) )
& ( ( ord_less_nat @ X @ Y2 )
=> ( P4 @ zero_zero_int ) ) ) ) ).
% zdiff_int_split
thf(fact_1150_imp__le__cong,axiom,
! [X: int,X7: int,P4: $o,P7: $o] :
( ( X = X7 )
=> ( ( ( ord_less_eq_int @ zero_zero_int @ X7 )
=> ( P4 = P7 ) )
=> ( ( ( ord_less_eq_int @ zero_zero_int @ X )
=> P4 )
= ( ( ord_less_eq_int @ zero_zero_int @ X7 )
=> P7 ) ) ) ) ).
% imp_le_cong
thf(fact_1151_conj__le__cong,axiom,
! [X: int,X7: int,P4: $o,P7: $o] :
( ( X = X7 )
=> ( ( ( ord_less_eq_int @ zero_zero_int @ X7 )
=> ( P4 = P7 ) )
=> ( ( ( ord_less_eq_int @ zero_zero_int @ X )
& P4 )
= ( ( ord_less_eq_int @ zero_zero_int @ X7 )
& P7 ) ) ) ) ).
% conj_le_cong
thf(fact_1152_minusinfinity,axiom,
! [D: int,P12: int > $o,P4: int > $o] :
( ( ord_less_int @ zero_zero_int @ D )
=> ( ! [X3: int,K2: int] :
( ( P12 @ X3 )
= ( P12 @ ( minus_minus_int @ X3 @ ( times_times_int @ K2 @ D ) ) ) )
=> ( ? [Z4: int] :
! [X3: int] :
( ( ord_less_int @ X3 @ Z4 )
=> ( ( P4 @ X3 )
= ( P12 @ X3 ) ) )
=> ( ? [X_1: int] : ( P12 @ X_1 )
=> ? [X_12: int] : ( P4 @ X_12 ) ) ) ) ) ).
% minusinfinity
thf(fact_1153_plusinfinity,axiom,
! [D: int,P7: int > $o,P4: int > $o] :
( ( ord_less_int @ zero_zero_int @ D )
=> ( ! [X3: int,K2: int] :
( ( P7 @ X3 )
= ( P7 @ ( minus_minus_int @ X3 @ ( times_times_int @ K2 @ D ) ) ) )
=> ( ? [Z4: int] :
! [X3: int] :
( ( ord_less_int @ Z4 @ X3 )
=> ( ( P4 @ X3 )
= ( P7 @ X3 ) ) )
=> ( ? [X_1: int] : ( P7 @ X_1 )
=> ? [X_12: int] : ( P4 @ X_12 ) ) ) ) ) ).
% plusinfinity
thf(fact_1154_decr__mult__lemma,axiom,
! [D: int,P4: int > $o,K: int] :
( ( ord_less_int @ zero_zero_int @ D )
=> ( ! [X3: int] :
( ( P4 @ X3 )
=> ( P4 @ ( minus_minus_int @ X3 @ D ) ) )
=> ( ( ord_less_eq_int @ zero_zero_int @ K )
=> ! [X6: int] :
( ( P4 @ X6 )
=> ( P4 @ ( minus_minus_int @ X6 @ ( times_times_int @ K @ D ) ) ) ) ) ) ) ).
% decr_mult_lemma
thf(fact_1155_kyber__ntt_Ontt__correct,axiom,
! [Numbers: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Numbers )
= ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
=> ( ( iNTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ mu @ ( nTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ omega @ Numbers ) )
= ( map_Fi7082711781076630404ring_a @ ( times_5121417576591743744ring_a @ ( finite8272632373135393572ring_a @ ( semiri1314217659103216013at_int @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) @ Numbers ) ) ) ).
% kyber_ntt.ntt_correct
thf(fact_1156_kyber__ntt_Oinv__ntt__correct,axiom,
! [Numbers: list_F4626807571770296779ring_a] :
( ( ( size_s7115545719440041015ring_a @ Numbers )
= ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) )
=> ( ( nTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ omega @ ( iNTT_a @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ mu @ Numbers ) )
= ( map_Fi7082711781076630404ring_a @ ( times_5121417576591743744ring_a @ ( finite8272632373135393572ring_a @ ( semiri1314217659103216013at_int @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) @ Numbers ) ) ) ).
% kyber_ntt.inv_ntt_correct
thf(fact_1157_take__deg__monom__drop__deg,axiom,
! [F: poly_F3299452240248304339ring_a] :
( ( ord_less_eq_nat @ n @ ( degree4881254707062955960ring_a @ F ) )
=> ( F
= ( plus_p7290290253215468682ring_a @ ( nTT_ky3493641264504450921ring_a @ n @ F ) @ ( times_3242606764180207630ring_a @ ( monom_8879022055327937434ring_a @ one_on2109788427901206336ring_a @ n ) @ ( nTT_ky790528430515779601ring_a @ n @ F ) ) ) ) ) ).
% take_deg_monom_drop_deg
thf(fact_1158_kyber__ntt_Ohomomorphism__add,axiom,
! [X: int,Y2: int] :
( ( plus_p6165643967897163644ring_a @ ( finite8272632373135393572ring_a @ X ) @ ( finite8272632373135393572ring_a @ Y2 ) )
= ( finite8272632373135393572ring_a @ ( plus_plus_int @ X @ Y2 ) ) ) ).
% kyber_ntt.homomorphism_add
thf(fact_1159_kyber__ntt_Ohomomorphism__mul__on__ring,axiom,
! [X: int,Y2: int] :
( ( times_5121417576591743744ring_a @ ( finite8272632373135393572ring_a @ X ) @ ( finite8272632373135393572ring_a @ Y2 ) )
= ( finite8272632373135393572ring_a @ ( times_times_int @ X @ Y2 ) ) ) ).
% kyber_ntt.homomorphism_mul_on_ring
thf(fact_1160_kyber__ntt_Oexp__homo,axiom,
! [X: int,I: nat] :
( ( finite8272632373135393572ring_a @ ( power_power_int @ X @ I ) )
= ( power_6826135765519566523ring_a @ ( finite8272632373135393572ring_a @ X ) @ I ) ) ).
% kyber_ntt.exp_homo
thf(fact_1161_coeff__drop__deg,axiom,
! [I: nat,F: poly_F3299452240248304339ring_a] :
( ( ord_less_nat @ I @ n )
=> ( ( coeff_1607515655354303335ring_a @ ( nTT_ky790528430515779601ring_a @ n @ F ) @ I )
= ( coeff_1607515655354303335ring_a @ F @ ( plus_plus_nat @ I @ n ) ) ) ) ).
% coeff_drop_deg
thf(fact_1162_add__is__0,axiom,
! [M: nat,N: nat] :
( ( ( plus_plus_nat @ M @ N )
= zero_zero_nat )
= ( ( M = zero_zero_nat )
& ( N = zero_zero_nat ) ) ) ).
% add_is_0
thf(fact_1163_Nat_Oadd__0__right,axiom,
! [M: nat] :
( ( plus_plus_nat @ M @ zero_zero_nat )
= M ) ).
% Nat.add_0_right
thf(fact_1164_nat__add__left__cancel__less,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ K @ M ) @ ( plus_plus_nat @ K @ N ) )
= ( ord_less_nat @ M @ N ) ) ).
% nat_add_left_cancel_less
thf(fact_1165_nat__add__left__cancel__le,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ K @ M ) @ ( plus_plus_nat @ K @ N ) )
= ( ord_less_eq_nat @ M @ N ) ) ).
% nat_add_left_cancel_le
thf(fact_1166_diff__diff__left,axiom,
! [I: nat,J: nat,K: nat] :
( ( minus_minus_nat @ ( minus_minus_nat @ I @ J ) @ K )
= ( minus_minus_nat @ I @ ( plus_plus_nat @ J @ K ) ) ) ).
% diff_diff_left
thf(fact_1167_add__gr__0,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ zero_zero_nat @ ( plus_plus_nat @ M @ N ) )
= ( ( ord_less_nat @ zero_zero_nat @ M )
| ( ord_less_nat @ zero_zero_nat @ N ) ) ) ).
% add_gr_0
thf(fact_1168_Nat_Odiff__diff__right,axiom,
! [K: nat,J: nat,I: nat] :
( ( ord_less_eq_nat @ K @ J )
=> ( ( minus_minus_nat @ I @ ( minus_minus_nat @ J @ K ) )
= ( minus_minus_nat @ ( plus_plus_nat @ I @ K ) @ J ) ) ) ).
% Nat.diff_diff_right
thf(fact_1169_Nat_Oadd__diff__assoc2,axiom,
! [K: nat,J: nat,I: nat] :
( ( ord_less_eq_nat @ K @ J )
=> ( ( plus_plus_nat @ ( minus_minus_nat @ J @ K ) @ I )
= ( minus_minus_nat @ ( plus_plus_nat @ J @ I ) @ K ) ) ) ).
% Nat.add_diff_assoc2
thf(fact_1170_Nat_Oadd__diff__assoc,axiom,
! [K: nat,J: nat,I: nat] :
( ( ord_less_eq_nat @ K @ J )
=> ( ( plus_plus_nat @ I @ ( minus_minus_nat @ J @ K ) )
= ( minus_minus_nat @ ( plus_plus_nat @ I @ J ) @ K ) ) ) ).
% Nat.add_diff_assoc
thf(fact_1171_zle__add1__eq__le,axiom,
! [W: int,Z2: int] :
( ( ord_less_int @ W @ ( plus_plus_int @ Z2 @ one_one_int ) )
= ( ord_less_eq_int @ W @ Z2 ) ) ).
% zle_add1_eq_le
thf(fact_1172_nth__upt,axiom,
! [I: nat,K: nat,J: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ J )
=> ( ( nth_nat @ ( upt @ I @ J ) @ K )
= ( plus_plus_nat @ I @ K ) ) ) ).
% nth_upt
thf(fact_1173_diff__add__inverse2,axiom,
! [M: nat,N: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ M @ N ) @ N )
= M ) ).
% diff_add_inverse2
thf(fact_1174_diff__add__inverse,axiom,
! [N: nat,M: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ N @ M ) @ N )
= M ) ).
% diff_add_inverse
thf(fact_1175_diff__cancel2,axiom,
! [M: nat,K: nat,N: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ M @ K ) @ ( plus_plus_nat @ N @ K ) )
= ( minus_minus_nat @ M @ N ) ) ).
% diff_cancel2
thf(fact_1176_Nat_Odiff__cancel,axiom,
! [K: nat,M: nat,N: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ K @ M ) @ ( plus_plus_nat @ K @ N ) )
= ( minus_minus_nat @ M @ N ) ) ).
% Nat.diff_cancel
thf(fact_1177_nat__int__add,axiom,
! [A: nat,B: nat] :
( ( nat2 @ ( plus_plus_int @ ( semiri1314217659103216013at_int @ A ) @ ( semiri1314217659103216013at_int @ B ) ) )
= ( plus_plus_nat @ A @ B ) ) ).
% nat_int_add
thf(fact_1178_zadd__int__left,axiom,
! [M: nat,N: nat,Z2: int] :
( ( plus_plus_int @ ( semiri1314217659103216013at_int @ M ) @ ( plus_plus_int @ ( semiri1314217659103216013at_int @ N ) @ Z2 ) )
= ( plus_plus_int @ ( semiri1314217659103216013at_int @ ( plus_plus_nat @ M @ N ) ) @ Z2 ) ) ).
% zadd_int_left
thf(fact_1179_int__plus,axiom,
! [N: nat,M: nat] :
( ( semiri1314217659103216013at_int @ ( plus_plus_nat @ N @ M ) )
= ( plus_plus_int @ ( semiri1314217659103216013at_int @ N ) @ ( semiri1314217659103216013at_int @ M ) ) ) ).
% int_plus
thf(fact_1180_int__ops_I5_J,axiom,
! [A: nat,B: nat] :
( ( semiri1314217659103216013at_int @ ( plus_plus_nat @ A @ B ) )
= ( plus_plus_int @ ( semiri1314217659103216013at_int @ A ) @ ( semiri1314217659103216013at_int @ B ) ) ) ).
% int_ops(5)
thf(fact_1181_int__distrib_I2_J,axiom,
! [W: int,Z1: int,Z22: int] :
( ( times_times_int @ W @ ( plus_plus_int @ Z1 @ Z22 ) )
= ( plus_plus_int @ ( times_times_int @ W @ Z1 ) @ ( times_times_int @ W @ Z22 ) ) ) ).
% int_distrib(2)
thf(fact_1182_int__distrib_I1_J,axiom,
! [Z1: int,Z22: int,W: int] :
( ( times_times_int @ ( plus_plus_int @ Z1 @ Z22 ) @ W )
= ( plus_plus_int @ ( times_times_int @ Z1 @ W ) @ ( times_times_int @ Z22 @ W ) ) ) ).
% int_distrib(1)
thf(fact_1183_add__mult__distrib2,axiom,
! [K: nat,M: nat,N: nat] :
( ( times_times_nat @ K @ ( plus_plus_nat @ M @ N ) )
= ( plus_plus_nat @ ( times_times_nat @ K @ M ) @ ( times_times_nat @ K @ N ) ) ) ).
% add_mult_distrib2
thf(fact_1184_add__mult__distrib,axiom,
! [M: nat,N: nat,K: nat] :
( ( times_times_nat @ ( plus_plus_nat @ M @ N ) @ K )
= ( plus_plus_nat @ ( times_times_nat @ M @ K ) @ ( times_times_nat @ N @ K ) ) ) ).
% add_mult_distrib
thf(fact_1185_left__add__mult__distrib,axiom,
! [I: nat,U: nat,J: nat,K: nat] :
( ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ K ) )
= ( plus_plus_nat @ ( times_times_nat @ ( plus_plus_nat @ I @ J ) @ U ) @ K ) ) ).
% left_add_mult_distrib
thf(fact_1186_nat__plus__as__int,axiom,
( plus_plus_nat
= ( ^ [A2: nat,B2: nat] : ( nat2 @ ( plus_plus_int @ ( semiri1314217659103216013at_int @ A2 ) @ ( semiri1314217659103216013at_int @ B2 ) ) ) ) ) ).
% nat_plus_as_int
thf(fact_1187_add__leE,axiom,
! [M: nat,K: nat,N: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ M @ K ) @ N )
=> ~ ( ( ord_less_eq_nat @ M @ N )
=> ~ ( ord_less_eq_nat @ K @ N ) ) ) ).
% add_leE
thf(fact_1188_le__add1,axiom,
! [N: nat,M: nat] : ( ord_less_eq_nat @ N @ ( plus_plus_nat @ N @ M ) ) ).
% le_add1
thf(fact_1189_le__add2,axiom,
! [N: nat,M: nat] : ( ord_less_eq_nat @ N @ ( plus_plus_nat @ M @ N ) ) ).
% le_add2
thf(fact_1190_add__leD1,axiom,
! [M: nat,K: nat,N: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ M @ K ) @ N )
=> ( ord_less_eq_nat @ M @ N ) ) ).
% add_leD1
thf(fact_1191_add__leD2,axiom,
! [M: nat,K: nat,N: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ M @ K ) @ N )
=> ( ord_less_eq_nat @ K @ N ) ) ).
% add_leD2
thf(fact_1192_le__Suc__ex,axiom,
! [K: nat,L: nat] :
( ( ord_less_eq_nat @ K @ L )
=> ? [N3: nat] :
( L
= ( plus_plus_nat @ K @ N3 ) ) ) ).
% le_Suc_ex
thf(fact_1193_add__le__mono,axiom,
! [I: nat,J: nat,K: nat,L: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( ord_less_eq_nat @ K @ L )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L ) ) ) ) ).
% add_le_mono
thf(fact_1194_add__le__mono1,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ K ) ) ) ).
% add_le_mono1
thf(fact_1195_trans__le__add1,axiom,
! [I: nat,J: nat,M: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_nat @ I @ ( plus_plus_nat @ J @ M ) ) ) ).
% trans_le_add1
thf(fact_1196_trans__le__add2,axiom,
! [I: nat,J: nat,M: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ord_less_eq_nat @ I @ ( plus_plus_nat @ M @ J ) ) ) ).
% trans_le_add2
thf(fact_1197_nat__le__iff__add,axiom,
( ord_less_eq_nat
= ( ^ [M4: nat,N2: nat] :
? [K3: nat] :
( N2
= ( plus_plus_nat @ M4 @ K3 ) ) ) ) ).
% nat_le_iff_add
thf(fact_1198_plus__int__code_I2_J,axiom,
! [L: int] :
( ( plus_plus_int @ zero_zero_int @ L )
= L ) ).
% plus_int_code(2)
thf(fact_1199_plus__int__code_I1_J,axiom,
! [K: int] :
( ( plus_plus_int @ K @ zero_zero_int )
= K ) ).
% plus_int_code(1)
thf(fact_1200_add__lessD1,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ I @ J ) @ K )
=> ( ord_less_nat @ I @ K ) ) ).
% add_lessD1
thf(fact_1201_add__less__mono,axiom,
! [I: nat,J: nat,K: nat,L: nat] :
( ( ord_less_nat @ I @ J )
=> ( ( ord_less_nat @ K @ L )
=> ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L ) ) ) ) ).
% add_less_mono
thf(fact_1202_not__add__less1,axiom,
! [I: nat,J: nat] :
~ ( ord_less_nat @ ( plus_plus_nat @ I @ J ) @ I ) ).
% not_add_less1
thf(fact_1203_not__add__less2,axiom,
! [J: nat,I: nat] :
~ ( ord_less_nat @ ( plus_plus_nat @ J @ I ) @ I ) ).
% not_add_less2
thf(fact_1204_add__less__mono1,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_nat @ I @ J )
=> ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ K ) ) ) ).
% add_less_mono1
thf(fact_1205_trans__less__add1,axiom,
! [I: nat,J: nat,M: nat] :
( ( ord_less_nat @ I @ J )
=> ( ord_less_nat @ I @ ( plus_plus_nat @ J @ M ) ) ) ).
% trans_less_add1
thf(fact_1206_trans__less__add2,axiom,
! [I: nat,J: nat,M: nat] :
( ( ord_less_nat @ I @ J )
=> ( ord_less_nat @ I @ ( plus_plus_nat @ M @ J ) ) ) ).
% trans_less_add2
thf(fact_1207_less__add__eq__less,axiom,
! [K: nat,L: nat,M: nat,N: nat] :
( ( ord_less_nat @ K @ L )
=> ( ( ( plus_plus_nat @ M @ L )
= ( plus_plus_nat @ K @ N ) )
=> ( ord_less_nat @ M @ N ) ) ) ).
% less_add_eq_less
thf(fact_1208_plus__nat_Oadd__0,axiom,
! [N: nat] :
( ( plus_plus_nat @ zero_zero_nat @ N )
= N ) ).
% plus_nat.add_0
thf(fact_1209_add__eq__self__zero,axiom,
! [M: nat,N: nat] :
( ( ( plus_plus_nat @ M @ N )
= M )
=> ( N = zero_zero_nat ) ) ).
% add_eq_self_zero
thf(fact_1210_Euclid__induct,axiom,
! [P4: nat > nat > $o,A: nat,B: nat] :
( ! [A4: nat,B4: nat] :
( ( P4 @ A4 @ B4 )
= ( P4 @ B4 @ A4 ) )
=> ( ! [A4: nat] : ( P4 @ A4 @ zero_zero_nat )
=> ( ! [A4: nat,B4: nat] :
( ( P4 @ A4 @ B4 )
=> ( P4 @ A4 @ ( plus_plus_nat @ A4 @ B4 ) ) )
=> ( P4 @ A @ B ) ) ) ) ).
% Euclid_induct
thf(fact_1211_nat__add__distrib,axiom,
! [Z2: int,Z3: int] :
( ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ( ord_less_eq_int @ zero_zero_int @ Z3 )
=> ( ( nat2 @ ( plus_plus_int @ Z2 @ Z3 ) )
= ( plus_plus_nat @ ( nat2 @ Z2 ) @ ( nat2 @ Z3 ) ) ) ) ) ).
% nat_add_distrib
thf(fact_1212_less__imp__add__positive,axiom,
! [I: nat,J: nat] :
( ( ord_less_nat @ I @ J )
=> ? [K2: nat] :
( ( ord_less_nat @ zero_zero_nat @ K2 )
& ( ( plus_plus_nat @ I @ K2 )
= J ) ) ) ).
% less_imp_add_positive
thf(fact_1213_mono__nat__linear__lb,axiom,
! [F: nat > nat,M: nat,K: nat] :
( ! [M3: nat,N3: nat] :
( ( ord_less_nat @ M3 @ N3 )
=> ( ord_less_nat @ ( F @ M3 ) @ ( F @ N3 ) ) )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ ( F @ M ) @ K ) @ ( F @ ( plus_plus_nat @ M @ K ) ) ) ) ).
% mono_nat_linear_lb
thf(fact_1214_diff__add__0,axiom,
! [N: nat,M: nat] :
( ( minus_minus_nat @ N @ ( plus_plus_nat @ N @ M ) )
= zero_zero_nat ) ).
% diff_add_0
thf(fact_1215_add__diff__inverse__nat,axiom,
! [M: nat,N: nat] :
( ~ ( ord_less_nat @ M @ N )
=> ( ( plus_plus_nat @ N @ ( minus_minus_nat @ M @ N ) )
= M ) ) ).
% add_diff_inverse_nat
thf(fact_1216_less__diff__conv,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_nat @ I @ ( minus_minus_nat @ J @ K ) )
= ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ J ) ) ).
% less_diff_conv
thf(fact_1217_odd__nonzero,axiom,
! [Z2: int] :
( ( plus_plus_int @ ( plus_plus_int @ one_one_int @ Z2 ) @ Z2 )
!= zero_zero_int ) ).
% odd_nonzero
thf(fact_1218_Nat_Ole__imp__diff__is__add,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( ( minus_minus_nat @ J @ I )
= K )
= ( J
= ( plus_plus_nat @ K @ I ) ) ) ) ).
% Nat.le_imp_diff_is_add
thf(fact_1219_Nat_Odiff__add__assoc2,axiom,
! [K: nat,J: nat,I: nat] :
( ( ord_less_eq_nat @ K @ J )
=> ( ( minus_minus_nat @ ( plus_plus_nat @ J @ I ) @ K )
= ( plus_plus_nat @ ( minus_minus_nat @ J @ K ) @ I ) ) ) ).
% Nat.diff_add_assoc2
thf(fact_1220_Nat_Odiff__add__assoc,axiom,
! [K: nat,J: nat,I: nat] :
( ( ord_less_eq_nat @ K @ J )
=> ( ( minus_minus_nat @ ( plus_plus_nat @ I @ J ) @ K )
= ( plus_plus_nat @ I @ ( minus_minus_nat @ J @ K ) ) ) ) ).
% Nat.diff_add_assoc
thf(fact_1221_Nat_Ole__diff__conv2,axiom,
! [K: nat,J: nat,I: nat] :
( ( ord_less_eq_nat @ K @ J )
=> ( ( ord_less_eq_nat @ I @ ( minus_minus_nat @ J @ K ) )
= ( ord_less_eq_nat @ ( plus_plus_nat @ I @ K ) @ J ) ) ) ).
% Nat.le_diff_conv2
thf(fact_1222_le__diff__conv,axiom,
! [J: nat,K: nat,I: nat] :
( ( ord_less_eq_nat @ ( minus_minus_nat @ J @ K ) @ I )
= ( ord_less_eq_nat @ J @ ( plus_plus_nat @ I @ K ) ) ) ).
% le_diff_conv
thf(fact_1223_zle__iff__zadd,axiom,
( ord_less_eq_int
= ( ^ [W2: int,Z5: int] :
? [N2: nat] :
( Z5
= ( plus_plus_int @ W2 @ ( semiri1314217659103216013at_int @ N2 ) ) ) ) ) ).
% zle_iff_zadd
thf(fact_1224_int__ge__induct,axiom,
! [K: int,I: int,P4: int > $o] :
( ( ord_less_eq_int @ K @ I )
=> ( ( P4 @ K )
=> ( ! [I2: int] :
( ( ord_less_eq_int @ K @ I2 )
=> ( ( P4 @ I2 )
=> ( P4 @ ( plus_plus_int @ I2 @ one_one_int ) ) ) )
=> ( P4 @ I ) ) ) ) ).
% int_ge_induct
thf(fact_1225_zless__add1__eq,axiom,
! [W: int,Z2: int] :
( ( ord_less_int @ W @ ( plus_plus_int @ Z2 @ one_one_int ) )
= ( ( ord_less_int @ W @ Z2 )
| ( W = Z2 ) ) ) ).
% zless_add1_eq
thf(fact_1226_int__gr__induct,axiom,
! [K: int,I: int,P4: int > $o] :
( ( ord_less_int @ K @ I )
=> ( ( P4 @ ( plus_plus_int @ K @ one_one_int ) )
=> ( ! [I2: int] :
( ( ord_less_int @ K @ I2 )
=> ( ( P4 @ I2 )
=> ( P4 @ ( plus_plus_int @ I2 @ one_one_int ) ) ) )
=> ( P4 @ I ) ) ) ) ).
% int_gr_induct
thf(fact_1227_nat__mod__eq__iff,axiom,
! [X: nat,N: nat,Y2: nat] :
( ( ( modulo_modulo_nat @ X @ N )
= ( modulo_modulo_nat @ Y2 @ N ) )
= ( ? [Q1: nat,Q22: nat] :
( ( plus_plus_nat @ X @ ( times_times_nat @ N @ Q1 ) )
= ( plus_plus_nat @ Y2 @ ( times_times_nat @ N @ Q22 ) ) ) ) ) ).
% nat_mod_eq_iff
thf(fact_1228_map__add__upt,axiom,
! [N: nat,M: nat] :
( ( map_nat_nat
@ ^ [I4: nat] : ( plus_plus_nat @ I4 @ N )
@ ( upt @ zero_zero_nat @ M ) )
= ( upt @ N @ ( plus_plus_nat @ M @ N ) ) ) ).
% map_add_upt
thf(fact_1229_nat__diff__split__asm,axiom,
! [P4: nat > $o,A: nat,B: nat] :
( ( P4 @ ( minus_minus_nat @ A @ B ) )
= ( ~ ( ( ( ord_less_nat @ A @ B )
& ~ ( P4 @ zero_zero_nat ) )
| ? [D3: nat] :
( ( A
= ( plus_plus_nat @ B @ D3 ) )
& ~ ( P4 @ D3 ) ) ) ) ) ).
% nat_diff_split_asm
thf(fact_1230_nat__diff__split,axiom,
! [P4: nat > $o,A: nat,B: nat] :
( ( P4 @ ( minus_minus_nat @ A @ B ) )
= ( ( ( ord_less_nat @ A @ B )
=> ( P4 @ zero_zero_nat ) )
& ! [D3: nat] :
( ( A
= ( plus_plus_nat @ B @ D3 ) )
=> ( P4 @ D3 ) ) ) ) ).
% nat_diff_split
thf(fact_1231_less__diff__conv2,axiom,
! [K: nat,J: nat,I: nat] :
( ( ord_less_eq_nat @ K @ J )
=> ( ( ord_less_nat @ ( minus_minus_nat @ J @ K ) @ I )
= ( ord_less_nat @ J @ ( plus_plus_nat @ I @ K ) ) ) ) ).
% less_diff_conv2
thf(fact_1232_odd__less__0__iff,axiom,
! [Z2: int] :
( ( ord_less_int @ ( plus_plus_int @ ( plus_plus_int @ one_one_int @ Z2 ) @ Z2 ) @ zero_zero_int )
= ( ord_less_int @ Z2 @ zero_zero_int ) ) ).
% odd_less_0_iff
thf(fact_1233_nat__eq__add__iff1,axiom,
! [J: nat,I: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ J @ I )
=> ( ( ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M )
= ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ I @ J ) @ U ) @ M )
= N ) ) ) ).
% nat_eq_add_iff1
thf(fact_1234_nat__eq__add__iff2,axiom,
! [I: nat,J: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M )
= ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( M
= ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ J @ I ) @ U ) @ N ) ) ) ) ).
% nat_eq_add_iff2
thf(fact_1235_nat__le__add__iff1,axiom,
! [J: nat,I: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ J @ I )
=> ( ( ord_less_eq_nat @ ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M ) @ ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( ord_less_eq_nat @ ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ I @ J ) @ U ) @ M ) @ N ) ) ) ).
% nat_le_add_iff1
thf(fact_1236_nat__le__add__iff2,axiom,
! [I: nat,J: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( ord_less_eq_nat @ ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M ) @ ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( ord_less_eq_nat @ M @ ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ J @ I ) @ U ) @ N ) ) ) ) ).
% nat_le_add_iff2
thf(fact_1237_nat__diff__add__eq1,axiom,
! [J: nat,I: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ J @ I )
=> ( ( minus_minus_nat @ ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M ) @ ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( minus_minus_nat @ ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ I @ J ) @ U ) @ M ) @ N ) ) ) ).
% nat_diff_add_eq1
thf(fact_1238_nat__diff__add__eq2,axiom,
! [I: nat,J: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( minus_minus_nat @ ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M ) @ ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( minus_minus_nat @ M @ ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ J @ I ) @ U ) @ N ) ) ) ) ).
% nat_diff_add_eq2
thf(fact_1239_add1__zle__eq,axiom,
! [W: int,Z2: int] :
( ( ord_less_eq_int @ ( plus_plus_int @ W @ one_one_int ) @ Z2 )
= ( ord_less_int @ W @ Z2 ) ) ).
% add1_zle_eq
thf(fact_1240_zless__imp__add1__zle,axiom,
! [W: int,Z2: int] :
( ( ord_less_int @ W @ Z2 )
=> ( ord_less_eq_int @ ( plus_plus_int @ W @ one_one_int ) @ Z2 ) ) ).
% zless_imp_add1_zle
thf(fact_1241_int__induct,axiom,
! [P4: int > $o,K: int,I: int] :
( ( P4 @ K )
=> ( ! [I2: int] :
( ( ord_less_eq_int @ K @ I2 )
=> ( ( P4 @ I2 )
=> ( P4 @ ( plus_plus_int @ I2 @ one_one_int ) ) ) )
=> ( ! [I2: int] :
( ( ord_less_eq_int @ I2 @ K )
=> ( ( P4 @ I2 )
=> ( P4 @ ( minus_minus_int @ I2 @ one_one_int ) ) ) )
=> ( P4 @ I ) ) ) ) ).
% int_induct
thf(fact_1242_mod__eq__nat1E,axiom,
! [M: nat,Q: nat,N: nat] :
( ( ( modulo_modulo_nat @ M @ Q )
= ( modulo_modulo_nat @ N @ Q ) )
=> ( ( ord_less_eq_nat @ N @ M )
=> ~ ! [S2: nat] :
( M
!= ( plus_plus_nat @ N @ ( times_times_nat @ Q @ S2 ) ) ) ) ) ).
% mod_eq_nat1E
thf(fact_1243_mod__eq__nat2E,axiom,
! [M: nat,Q: nat,N: nat] :
( ( ( modulo_modulo_nat @ M @ Q )
= ( modulo_modulo_nat @ N @ Q ) )
=> ( ( ord_less_eq_nat @ M @ N )
=> ~ ! [S2: nat] :
( N
!= ( plus_plus_nat @ M @ ( times_times_nat @ Q @ S2 ) ) ) ) ) ).
% mod_eq_nat2E
thf(fact_1244_nat__less__add__iff2,axiom,
! [I: nat,J: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( ord_less_nat @ ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M ) @ ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( ord_less_nat @ M @ ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ J @ I ) @ U ) @ N ) ) ) ) ).
% nat_less_add_iff2
thf(fact_1245_nat__less__add__iff1,axiom,
! [J: nat,I: nat,U: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ J @ I )
=> ( ( ord_less_nat @ ( plus_plus_nat @ ( times_times_nat @ I @ U ) @ M ) @ ( plus_plus_nat @ ( times_times_nat @ J @ U ) @ N ) )
= ( ord_less_nat @ ( plus_plus_nat @ ( times_times_nat @ ( minus_minus_nat @ I @ J ) @ U ) @ M ) @ N ) ) ) ).
% nat_less_add_iff1
thf(fact_1246_mult__eq__if,axiom,
( times_times_nat
= ( ^ [M4: nat,N2: nat] : ( if_nat @ ( M4 = zero_zero_nat ) @ zero_zero_nat @ ( plus_plus_nat @ N2 @ ( times_times_nat @ ( minus_minus_nat @ M4 @ one_one_nat ) @ N2 ) ) ) ) ) ).
% mult_eq_if
thf(fact_1247_le__imp__0__less,axiom,
! [Z2: int] :
( ( ord_less_eq_int @ zero_zero_int @ Z2 )
=> ( ord_less_int @ zero_zero_int @ ( plus_plus_int @ one_one_int @ Z2 ) ) ) ).
% le_imp_0_less
thf(fact_1248_incr__mult__lemma,axiom,
! [D: int,P4: int > $o,K: int] :
( ( ord_less_int @ zero_zero_int @ D )
=> ( ! [X3: int] :
( ( P4 @ X3 )
=> ( P4 @ ( plus_plus_int @ X3 @ D ) ) )
=> ( ( ord_less_eq_int @ zero_zero_int @ K )
=> ! [X6: int] :
( ( P4 @ X6 )
=> ( P4 @ ( plus_plus_int @ X6 @ ( times_times_int @ K @ D ) ) ) ) ) ) ) ).
% incr_mult_lemma
thf(fact_1249_split__mod,axiom,
! [Q4: nat > $o,M: nat,N: nat] :
( ( Q4 @ ( modulo_modulo_nat @ M @ N ) )
= ( ( ( N = zero_zero_nat )
=> ( Q4 @ M ) )
& ( ( N != zero_zero_nat )
=> ! [I4: nat,J3: nat] :
( ( ( ord_less_nat @ J3 @ N )
& ( M
= ( plus_plus_nat @ ( times_times_nat @ N @ I4 ) @ J3 ) ) )
=> ( Q4 @ J3 ) ) ) ) ) ).
% split_mod
thf(fact_1250_mod__pos__neg__trivial,axiom,
! [K: int,L: int] :
( ( ord_less_int @ zero_zero_int @ K )
=> ( ( ord_less_eq_int @ ( plus_plus_int @ K @ L ) @ zero_zero_int )
=> ( ( modulo_modulo_int @ K @ L )
= ( plus_plus_int @ K @ L ) ) ) ) ).
% mod_pos_neg_trivial
thf(fact_1251_split__zmod,axiom,
! [Q4: int > $o,N: int,K: int] :
( ( Q4 @ ( modulo_modulo_int @ N @ K ) )
= ( ( ( K = zero_zero_int )
=> ( Q4 @ N ) )
& ( ( ord_less_int @ zero_zero_int @ K )
=> ! [I4: int,J3: int] :
( ( ( ord_less_eq_int @ zero_zero_int @ J3 )
& ( ord_less_int @ J3 @ K )
& ( N
= ( plus_plus_int @ ( times_times_int @ K @ I4 ) @ J3 ) ) )
=> ( Q4 @ J3 ) ) )
& ( ( ord_less_int @ K @ zero_zero_int )
=> ! [I4: int,J3: int] :
( ( ( ord_less_int @ K @ J3 )
& ( ord_less_eq_int @ J3 @ zero_zero_int )
& ( N
= ( plus_plus_int @ ( times_times_int @ K @ I4 ) @ J3 ) ) )
=> ( Q4 @ J3 ) ) ) ) ) ).
% split_zmod
thf(fact_1252_int__mod__neg__eq,axiom,
! [A: int,B: int,Q: int,R: int] :
( ( A
= ( plus_plus_int @ ( times_times_int @ B @ Q ) @ R ) )
=> ( ( ord_less_eq_int @ R @ zero_zero_int )
=> ( ( ord_less_int @ B @ R )
=> ( ( modulo_modulo_int @ A @ B )
= R ) ) ) ) ).
% int_mod_neg_eq
thf(fact_1253_int__mod__pos__eq,axiom,
! [A: int,B: int,Q: int,R: int] :
( ( A
= ( plus_plus_int @ ( times_times_int @ B @ Q ) @ R ) )
=> ( ( ord_less_eq_int @ zero_zero_int @ R )
=> ( ( ord_less_int @ R @ B )
=> ( ( modulo_modulo_int @ A @ B )
= R ) ) ) ) ).
% int_mod_pos_eq
thf(fact_1254_n__ninv,axiom,
( ( times_5121417576591743744ring_a @ ( finite8272632373135393572ring_a @ ( semiri1314217659103216013at_int @ n ) ) @ ninv )
= one_on2109788427901206336ring_a ) ).
% n_ninv
thf(fact_1255_n__ninv_H,axiom,
( ( times_5121417576591743744ring_a @ ninv @ ( finite8272632373135393572ring_a @ ( semiri1314217659103216013at_int @ n ) ) )
= one_on2109788427901206336ring_a ) ).
% n_ninv'
thf(fact_1256_qr__poly_H__eq,axiom,
( ( kyber_3393738716004708939poly_a @ type_a )
= ( plus_plus_poly_int @ ( monom_int @ one_one_int @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) @ one_one_poly_int ) ) ).
% qr_poly'_eq
thf(fact_1257_inv__ntt__poly__def,axiom,
! [G: kyber_qr_a] :
( ( nTT_ky6043299476614432208poly_a @ n @ psi_inv @ ninv @ G )
= ( kyber_to_qr_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky1736412282533154370effs_a @ n @ psi_inv @ ninv @ G ) ) ) ) ).
% inv_ntt_poly_def
thf(fact_1258_inv__ntt__coeffs__def,axiom,
! [G2: kyber_qr_a] :
( ( nTT_ky1736412282533154370effs_a @ n @ psi_inv @ ninv @ G2 )
= ( map_na1928064127006292399ring_a @ ( nTT_ky2203666903544645369poly_a @ n @ psi_inv @ ninv @ G2 ) @ ( upt @ zero_zero_nat @ n ) ) ) ).
% inv_ntt_coeffs_def
thf(fact_1259_kyber__ntt__axioms,axiom,
nTT_kyber_ntt_k_a @ type_k @ n @ q @ k @ n2 @ omega @ mu @ psi @ psi_inv @ ninv @ mult_factor ).
% kyber_ntt_axioms
thf(fact_1260_q__nonzero,axiom,
q != zero_zero_int ).
% q_nonzero
thf(fact_1261_q__gt__zero,axiom,
ord_less_int @ zero_zero_int @ q ).
% q_gt_zero
thf(fact_1262_nat__q,axiom,
( ( semiri1314217659103216013at_int @ ( nat2 @ q ) )
= q ) ).
% nat_q
thf(fact_1263_kyber__ntt_Omod__homo,axiom,
( finite8272632373135393572ring_a
= ( ^ [X2: int] : ( finite8272632373135393572ring_a @ ( modulo_modulo_int @ X2 @ ( semiri1314217659103216013at_int @ ( nat2 @ q ) ) ) ) ) ) ).
% kyber_ntt.mod_homo
thf(fact_1264_of__int__mod__ring__eq__0,axiom,
! [X: int] :
( ( ( finite8272632373135393572ring_a @ X )
= zero_z7902377541816115708ring_a )
= ( ( modulo_modulo_int @ X @ q )
= zero_zero_int ) ) ).
% of_int_mod_ring_eq_0
thf(fact_1265_q__split,axiom,
( q
= ( plus_plus_int @ ( times_times_int @ mult_factor @ ( semiri1314217659103216013at_int @ n ) ) @ one_one_int ) ) ).
% q_split
thf(fact_1266_kyber__ntt_Op__fact,axiom,
( ( nat2 @ q )
= ( plus_plus_nat @ ( times_times_nat @ ( nat2 @ mult_factor ) @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) @ one_one_nat ) ) ).
% kyber_ntt.p_fact
thf(fact_1267_kyber__ntt_Ontt__axioms,axiom,
ntt_a @ ( nat2 @ q ) @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ ( nat2 @ mult_factor ) @ omega @ mu ).
% kyber_ntt.ntt_axioms
thf(fact_1268_kyber__ntt_Opreliminary__axioms,axiom,
prelim7757304714281691100nary_a @ type_a @ ( nat2 @ q ) @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) @ ( nat2 @ mult_factor ) ).
% kyber_ntt.preliminary_axioms
thf(fact_1269_kyber__spec__axioms,axiom,
kyber_kyber_spec_a_k @ type_a @ type_k @ ( semiri1314217659103216013at_int @ n ) @ q @ k @ n2 ).
% kyber_spec_axioms
% Helper facts (7)
thf(help_If_2_1_If_001t__Nat__Onat_T,axiom,
! [X: nat,Y2: nat] :
( ( if_nat @ $false @ X @ Y2 )
= Y2 ) ).
thf(help_If_1_1_If_001t__Nat__Onat_T,axiom,
! [X: nat,Y2: nat] :
( ( if_nat @ $true @ X @ Y2 )
= X ) ).
thf(help_If_2_1_If_001t__Finite____Field__Omod____ring_Itf__a_J_T,axiom,
! [X: finite_mod_ring_a,Y2: finite_mod_ring_a] :
( ( if_Finite_mod_ring_a @ $false @ X @ Y2 )
= Y2 ) ).
thf(help_If_1_1_If_001t__Finite____Field__Omod____ring_Itf__a_J_T,axiom,
! [X: finite_mod_ring_a,Y2: finite_mod_ring_a] :
( ( if_Finite_mod_ring_a @ $true @ X @ Y2 )
= X ) ).
thf(help_If_3_1_If_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J_T,axiom,
! [P4: $o] :
( ( P4 = $true )
| ( P4 = $false ) ) ).
thf(help_If_2_1_If_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J_T,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a] :
( ( if_pol8205948207082003865ring_a @ $false @ X @ Y2 )
= Y2 ) ).
thf(help_If_1_1_If_001t__Polynomial__Opoly_It__Finite____Field__Omod____ring_Itf__a_J_J_T,axiom,
! [X: poly_F3299452240248304339ring_a,Y2: poly_F3299452240248304339ring_a] :
( ( if_pol8205948207082003865ring_a @ $true @ X @ Y2 )
= X ) ).
% Conjectures (1)
thf(conj_0,conjecture,
( ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ ( times_2095635435063429214r_qr_a @ f @ g ) ) )
= ( poly_F5739129160929385880ring_a @ ( map_Pr8707103244924889698ring_a @ ( produc9073652980779707865ring_a @ times_5121417576591743744ring_a ) @ ( zip_Fi507625284836285431ring_a @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ f ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) @ ( map_na1928064127006292399ring_a @ ( coeff_1607515655354303335ring_a @ ( poly_F5739129160929385880ring_a @ ( nTT_ky9081197955043955481effs_a @ n @ psi @ g ) ) ) @ ( upt @ zero_zero_nat @ ( nat2 @ ( semiri1314217659103216013at_int @ n ) ) ) ) ) ) ) ) ).
%------------------------------------------------------------------------------