Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
Exact expanded first-order arithmetic statement
forall p h a b c. p = 2 * h + 1 -> ((~(p = 1) /\ forall esi_prime_left_glb_prime esi_prime_right_glb_prime. p = esi_prime_left_glb_prime * esi_prime_right_glb_prime -> esi_prime_left_glb_prime = 1 \/ esi_prime_right_glb_prime = 1)) -> (exists wpo_gap_glb_a_positive. wpo_gap_glb_a_positive + S (0) = a) -> (exists wpo_gap_glb_a_lt_p. wpo_gap_glb_a_lt_p + S (a) = p) -> (forall gsp_range_index_glb_half_range. (exists gsp_lt_gap_glb_half_range_range_bound. gsp_lt_gap_glb_half_range_range_bound + S gsp_range_index_glb_half_range = h) -> (((exists gsp_beta_height_glb_half_range_range_entry. gsp_beta_height_glb_half_range_range_entry + S (1 + gsp_range_index_glb_half_range) = S ((S (gsp_range_index_glb_half_range)) * c)) /\ exists gsp_beta_quotient_glb_half_range_range_entry. b = gsp_beta_quotient_glb_half_range_range_entry * S ((S (gsp_range_index_glb_half_range)) * c) + (1 + gsp_range_index_glb_half_range)))) -> (exists e. ((exists mb mc sb sc. ((forall gsp_index_glb_signed_prefix. (exists gsp_lt_gap_glb_signed_prefix_index_bound. gsp_lt_gap_glb_signed_prefix_index_bound + S gsp_index_glb_signed_prefix = h) -> (exists gsp_value_glb_signed_prefix_entry gsp_magnitude_glb_signed_prefix_entry gsp_sign_glb_signed_prefix_entry. (((exists ff_h_gsp_glb_signed_prefix_entry_source. ff_h_gsp_glb_signed_prefix_entry_source + S (gsp_value_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * c)) /\ exists ff_q_gsp_glb_signed_prefix_entry_source. b = ff_q_gsp_glb_signed_prefix_entry_source * S ((S (gsp_index_glb_signed_prefix)) * c) + (gsp_value_glb_signed_prefix_entry))) /\ ((((exists ff_h_gsp_glb_signed_prefix_entry_magnitude. ff_h_gsp_glb_signed_prefix_entry_magnitude + S (gsp_magnitude_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * mc)) /\ exists ff_q_gsp_glb_signed_prefix_entry_magnitude. mb = ff_q_gsp_glb_signed_prefix_entry_magnitude * S ((S (gsp_index_glb_signed_prefix)) * mc) + (gsp_magnitude_glb_signed_prefix_entry))) /\ ((((exists ff_h_gsp_glb_signed_prefix_entry_sign. ff_h_gsp_glb_signed_prefix_entry_sign + S (gsp_sign_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * sc)) /\ exists ff_q_gsp_glb_signed_prefix_entry_sign. sb = ff_q_gsp_glb_signed_prefix_entry_sign * S ((S (gsp_index_glb_signed_prefix)) * sc) + (gsp_sign_glb_signed_prefix_entry))) /\ ((exists gsp_lt_gap_glb_signed_prefix_entry_positive. gsp_lt_gap_glb_signed_prefix_entry_positive + S 0 = gsp_magnitude_glb_signed_prefix_entry) /\ ((exists gsp_le_gap_glb_signed_prefix_entry_bounded. gsp_le_gap_glb_signed_prefix_entry_bounded + gsp_magnitude_glb_signed_prefix_entry = h) /\ ((gsp_sign_glb_signed_prefix_entry = 0 \/ gsp_sign_glb_signed_prefix_entry = 1) /\ (((gsp_sign_glb_signed_prefix_entry = 0 /\ (exists gsp_mod_left_glb_signed_prefix_entry_lower gsp_mod_right_glb_signed_prefix_entry_lower. (a * gsp_value_glb_signed_prefix_entry) + p * gsp_mod_left_glb_signed_prefix_entry_lower = (gsp_magnitude_glb_signed_prefix_entry) + p * gsp_mod_right_glb_signed_prefix_entry_lower)) \/ (gsp_sign_glb_signed_prefix_entry = 1 /\ (exists gsp_mod_left_glb_signed_prefix_entry_reflected gsp_mod_right_glb_signed_prefix_entry_reflected. (a * gsp_value_glb_signed_prefix_entry) + p * gsp_mod_left_glb_signed_prefix_entry_reflected = ((2 * h) * gsp_magnitude_glb_signed_prefix_entry) + p * gsp_mod_right_glb_signed_prefix_entry_reflected))))))))))) /\ (((exists ff_u_glb_count_sum ff_v_glb_count_sum. ((((exists ff_h_glb_count_sum_start. ff_h_glb_count_sum_start + S (0) = S ((S (0)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_start. ff_u_glb_count_sum = ff_q_glb_count_sum_start * S ((S (0)) * ff_v_glb_count_sum) + (0))) /\ ((((exists ff_h_glb_count_sum_terminal. ff_h_glb_count_sum_terminal + S (e) = S ((S (h)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_terminal. ff_u_glb_count_sum = ff_q_glb_count_sum_terminal * S ((S (h)) * ff_v_glb_count_sum) + (e))) /\ forall ff_i_glb_count_sum. (exists ff_lt_glb_count_sum_bound. ff_lt_glb_count_sum_bound + S ff_i_glb_count_sum = h) -> exists ff_a_glb_count_sum ff_r_glb_count_sum ff_s_glb_count_sum. ((((exists ff_h_glb_count_sum_summand. ff_h_glb_count_sum_summand + S (ff_a_glb_count_sum) = S ((S (ff_i_glb_count_sum)) * sc)) /\ exists ff_q_glb_count_sum_summand. sb = ff_q_glb_count_sum_summand * S ((S (ff_i_glb_count_sum)) * sc) + (ff_a_glb_count_sum))) /\ ((((exists ff_h_glb_count_sum_partial. ff_h_glb_count_sum_partial + S (ff_r_glb_count_sum) = S ((S (ff_i_glb_count_sum)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_partial. ff_u_glb_count_sum = ff_q_glb_count_sum_partial * S ((S (ff_i_glb_count_sum)) * ff_v_glb_count_sum) + (ff_r_glb_count_sum))) /\ ((((exists ff_h_glb_count_sum_successor. ff_h_glb_count_sum_successor + S (ff_s_glb_count_sum) = S ((S (S ff_i_glb_count_sum)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_successor. ff_u_glb_count_sum = ff_q_glb_count_sum_successor * S ((S (S ff_i_glb_count_sum)) * ff_v_glb_count_sum) + (ff_s_glb_count_sum))) /\ ff_s_glb_count_sum = ff_r_glb_count_sum + ff_a_glb_count_sum)))))) /\ (forall ff_i_glb_count_bits. (exists ff_lt_glb_count_bits_bound. ff_lt_glb_count_bits_bound + S ff_i_glb_count_bits = h) -> exists ff_bit_glb_count_bits. ((((exists ff_h_glb_count_bits_decoded. ff_h_glb_count_bits_decoded + S (ff_bit_glb_count_bits) = S ((S (ff_i_glb_count_bits)) * sc)) /\ exists ff_q_glb_count_bits_decoded. sb = ff_q_glb_count_bits_decoded * S ((S (ff_i_glb_count_bits)) * sc) + (ff_bit_glb_count_bits))) /\ (ff_bit_glb_count_bits = 0 \/ ff_bit_glb_count_bits = 1))))))) /\ (((((exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists gs_even_glb_even. e = 2 * gs_even_glb_even)) /\ ((exists gs_even_glb_even. e = 2 * gs_even_glb_even) -> (exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres)))) /\ (((~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists gs_odd_glb_odd. e = 2 * gs_odd_glb_odd + 1)) /\ ((exists gs_odd_glb_odd. e = 2 * gs_odd_glb_odd + 1) -> ~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres)))))))Constructive proof overview
Generated structural guide
A canonical Gauss reflection count is even exactly for residues and odd exactly for nonresidues.
The unchanged tactic script uses 11 declared prerequisites and contains 204 exact native proof lines.
dependency-curried kernel-checked theorem body; Alpha enrollment and checked-use authority follow separately sealed release evidence; Stable membership remains unchanged
Proof neighborhood
Direct dependencies
lt_irrefl_expanded Stable theorem; checked-use authorized bounded_nonzero_not_divides Alpha theorem; checked-use authorized gauss_lemma_power_congruence_exists Alpha theorem; checked-use authorized pow_predecessor_parity_mod Stable theorem; checked-use authorized SL0000 bounded_euler_criterion_complete parity_cases Stable theorem; checked-use authorized odd_prime_one_not_mod_predecessor Alpha theorem; checked-use authorized mod_eq_symm Stable theorem; checked-use authorized mod_eq_trans Stable theorem; checked-use authorized mul_comm Stable theorem; checked-use authorized zero_add Stable theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (1)
01Fix variables and assumptionsL1–10
02Establish hpsuccL11–14
03Establish hdoubleL15–20
04Establish ha0L21–26
05Establish hnotdivL27–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bounded nonzero not divides.
06Establish hgaussL35–44
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gauss lemma power congruence exists.
- L35
have hgauss : ∃ e. ∃ A. ∃ R. Pow(a,h,A) ∧ (Pow(2 · h,e,R) ∧ ((∃ x. ∃ y. ∃ z. ∃ n. (∀ m. Lt(m,h) → ∃ k. ∃ i. ∃ j. BetaAt(b,c,m,k) ∧ (BetaAt(x,y,m,i) ∧ (BetaAt(z,n,m,j) ∧ (Lt(0,i) ∧ (Le(i,h) ∧ ((j = 0 ∨ j = 1) ∧ (j = 0 ∧ ModEq(p,a · k,i) ∨ j = 1 ∧ ModEq(p,a · k,2 · h · i)))))))) ∧ BitCount(z,n,h,e)) ∧ ModEq(p,A,R)))Definitions: LeLtModEqBetaAtBitCountPow - L36
specialize gauss_lemma_power_congruence_exists p - L37
specialize gauss_lemma_power_congruence_exists h - L38
specialize gauss_lemma_power_congruence_exists a - L39
specialize gauss_lemma_power_congruence_exists b - L40
specialize gauss_lemma_power_congruence_exists c - L41
apply gauss_lemma_power_congruence_exists - L42
exact hpodd - L43
exact hprime - L44
exact hnotdiv
07Use earlier factsL45–45
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
exact hhalf
08Separate the logical casesL46–51
09Establish heulerL52–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bounded euler criterion complete.
- L52
- L53
specialize bounded_euler_criterion_complete p - L54
specialize bounded_euler_criterion_complete a - L55
specialize bounded_euler_criterion_complete (2 * h) - L56
specialize bounded_euler_criterion_complete h - L57
specialize bounded_euler_criterion_complete x1 - L58
apply bounded_euler_criterion_complete - L59
exact hpsucc - L60
exact hprime - L61
exact ha0
10Use earlier factsL62–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
exact halt
11Calculate and transport equalitiesL63–63
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L63
symm
12Use earlier factsL64–65
13Separate the logical casesL66–68
14Establish hbridgeL69–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow predecessor parity mod.
- L69
have hbridge : (((exists gs_even_glb_local_even. x = 2 * gs_even_glb_local_even) -> (exists wpp_mod_left_glb_local_r_mod_one wpp_mod_right_glb_local_r_mod_one. (x2) + p * wpp_mod_left_glb_local_r_mod_one = (1) + p * wpp_mod_right_glb_local_r_mod_one)) /\ ((exists gs_odd_glb_local_odd. x = 2 * gs_odd_glb_local_odd + 1) -> (exists wpp_mod_left_glb_local_r_mod_predecessor wpp_mod_right_glb_local_r_mod_predecessor. (x2) + p * wpp_mod_left_glb_local_r_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_r_mod_predecessor))) - L70
specialize pow_predecessor_parity_mod p - L71
specialize pow_predecessor_parity_mod (2 * h) - L72
specialize pow_predecessor_parity_mod x - L73
specialize pow_predecessor_parity_mod x2 - L74
apply pow_predecessor_parity_mod - L75
exact hpsucc - L76
exact hgauss_witness_witness_witness_right_left
15Separate the logical casesL77–77
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L77
cases hbridge
16Establish hseparationL78–87
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd prime one not mod predecessor.
- L78
have hseparation : ~(exists wpp_mod_left_glb_one_mod_predecessor wpp_mod_right_glb_one_mod_predecessor. (1) + p * wpp_mod_left_glb_one_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_one_mod_predecessor) - L79
intro hcollision - L80
specialize odd_prime_one_not_mod_predecessor p - L81
specialize odd_prime_one_not_mod_predecessor (2 * h) - L82
specialize odd_prime_one_not_mod_predecessor h - L83
apply odd_prime_one_not_mod_predecessor - L84
exact hpsucc - L85
exact hprime - L86
symm - L87
exact hdouble
17Use earlier factsL88–88
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L88
exact hcollision
18Establish hqres_evenL89–91
Establish this local claim before using it. It is not an additional assumption.
19Separate the logical casesL92–93
20Construct an explicit witnessL94–94
Supply the displayed value, then prove that it has the required property.
- L94
exists x3
21Use earlier factsL95–95
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L95
exact parity_cases_witness_left
22Separate the logical casesL96–96
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L96
exfalso
23Use earlier factsL97–97
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L97
apply hseparation
24Establish hAoneL98–100
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply heuler left left.
25Establish honeAL101–106
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
- L101
have honeA : exists wpp_mod_left_glb_local_one_mod_a wpp_mod_right_glb_local_one_mod_a. (1) + p * wpp_mod_left_glb_local_one_mod_a = (x1) + p * wpp_mod_right_glb_local_one_mod_a - L102
specialize mod_eq_symm p - L103
specialize mod_eq_symm x1 - L104
specialize mod_eq_symm 1 - L105
apply mod_eq_symm - L106
exact hAone
26Establish honeRL107–114
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L107
have honeR : exists wpp_mod_left_glb_local_one_mod_r wpp_mod_right_glb_local_one_mod_r. (1) + p * wpp_mod_left_glb_local_one_mod_r = (x2) + p * wpp_mod_right_glb_local_one_mod_r - L108
specialize mod_eq_trans p - L109
specialize mod_eq_trans 1 - L110
specialize mod_eq_trans x1 - L111
specialize mod_eq_trans x2 - L112
apply mod_eq_trans - L113
exact honeA - L114
exact hgauss_witness_witness_witness_right_right_right
27Establish hRpredL115–116
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hbridge right.
28Construct an explicit witnessL117–117
Supply the displayed value, then prove that it has the required property.
- L117
exists x3
29Use earlier factsL118–125
30Establish heven_qresL126–127
Establish this local claim before using it. It is not an additional assumption.
31Establish hRoneL128–130
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hbridge left.
32Establish hAoneL131–140
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L131
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - L132
specialize mod_eq_trans p - L133
specialize mod_eq_trans x1 - L134
specialize mod_eq_trans x2 - L135
specialize mod_eq_trans 1 - L136
apply mod_eq_trans - L137
exact hgauss_witness_witness_witness_right_right_right - L138
exact hRone - L139
apply heuler_left_right - L140
exact hAone
33Establish hnonres_oddL141–143
Establish this local claim before using it. It is not an additional assumption.
34Separate the logical casesL144–146
35Use earlier factsL147–147
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L147
apply hseparation
36Establish hRoneL148–149
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hbridge left.
37Construct an explicit witnessL150–150
Supply the displayed value, then prove that it has the required property.
- L150
exists x3
38Use earlier factsL151–151
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L151
exact parity_cases_witness_left
39Establish hAoneL152–159
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L152
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - L153
specialize mod_eq_trans p - L154
specialize mod_eq_trans x1 - L155
specialize mod_eq_trans x2 - L156
specialize mod_eq_trans 1 - L157
apply mod_eq_trans - L158
exact hgauss_witness_witness_witness_right_right_right - L159
exact hRone
40Establish honeAL160–165
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
- L160
have honeA : exists wpp_mod_left_glb_local_one_mod_a wpp_mod_right_glb_local_one_mod_a. (1) + p * wpp_mod_left_glb_local_one_mod_a = (x1) + p * wpp_mod_right_glb_local_one_mod_a - L161
specialize mod_eq_symm p - L162
specialize mod_eq_symm x1 - L163
specialize mod_eq_symm 1 - L164
apply mod_eq_symm - L165
exact hAone
41Establish hApredL166–175
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply heuler right left.
- L166
have hApred : exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor - L167
apply heuler_right_left - L168
exact hnonres - L169
specialize mod_eq_trans p - L170
specialize mod_eq_trans 1 - L171
specialize mod_eq_trans x1 - L172
specialize mod_eq_trans (2 * h) - L173
apply mod_eq_trans - L174
exact honeA - L175
exact hApred
42Construct an explicit witnessL176–176
Supply the displayed value, then prove that it has the required property.
- L176
exists x3
43Use earlier factsL177–177
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L177
exact parity_cases_witness_right
44Establish hodd_nonresL178–179
Establish this local claim before using it. It is not an additional assumption.
45Establish hRpredL180–182
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hbridge right.
46Establish hApredL183–192
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L183
have hApred : exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor - L184
specialize mod_eq_trans p - L185
specialize mod_eq_trans x1 - L186
specialize mod_eq_trans x2 - L187
specialize mod_eq_trans (2 * h) - L188
apply mod_eq_trans - L189
exact hgauss_witness_witness_witness_right_right_right - L190
exact hRpred - L191
intro hqres - L192
apply heuler_right_right
47Use earlier factsL193–194
48Construct an explicit witnessL195–195
Supply the displayed value, then prove that it has the required property.
- L195
exists x
49Separate the logical casesL196–196
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L196
split
50Use earlier factsL197–197
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L197
exact hgauss_witness_witness_witness_right_right_left
51Separate the logical casesL198–199
52Use earlier factsL200–201
53Separate the logical casesL202–202
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L202
split
Original exact command ledger · 204 lines
- 0001
intro p - 0002
intro h - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro hpodd - 0007
intro hprime - 0008
intro hpositive - 0009
intro halt - 0010
intro hhalf - 0011
have hpsucc : p = S (2 * h) - 0012
trans 2 * h + 1 - 0013
exact hpodd - 0014
simp - 0015
have hdouble : h + h = 2 * h - 0016
trans h * 2 - 0017
simp [zero_add] - 0018
specialize mul_comm h - 0019
specialize mul_comm 2 - 0020
apply mul_comm - 0021
have ha0 : ~(a = 0) - 0022
intro haeq - 0023
specialize lt_irrefl_expanded 0 - 0024
apply lt_irrefl_expanded - 0025
rewrite haeq at hpositive - 0026
exact hpositive - 0027
have hnotdiv : ~(exists frm_factor_glb_nondivisor. a = p * frm_factor_glb_nondivisor) - 0028
intro hdiv - 0029
specialize bounded_nonzero_not_divides p - 0030
specialize bounded_nonzero_not_divides a - 0031
apply bounded_nonzero_not_divides - 0032
exact ha0 - 0033
exact halt - 0034
exact hdiv - 0035
have hgauss : exists e A R. ((exists ff_b_glb_multiplier_power ff_c_glb_multiplier_power. ((forall ff_i_glb_multiplier_power_repeat. (exists ff_lt_glb_multiplier_power_repeat_bound. ff_lt_glb_multiplier_power_repeat_bound + S ff_i_glb_multiplier_power_repeat = h) -> (((exists ff_h_glb_multiplier_power_repeat_decoded. ff_h_glb_multiplier_power_repeat_decoded + S (a) = S ((S (ff_i_glb_multiplier_power_repeat)) * ff_c_glb_multiplier_power)) /\ exists ff_q_glb_multiplier_power_repeat_decoded. ff_b_glb_multiplier_power = ff_q_glb_multiplier_power_repeat_decoded * S ((S (ff_i_glb_multiplier_power_repeat)) * ff_c_glb_multiplier_power) + (a)))) /\ (exists ff_u_glb_multiplier_power_product ff_v_glb_multiplier_power_product. ((((exists ff_h_glb_multiplier_power_product_start. ff_h_glb_multiplier_power_product_start + S (1) = S ((S (0)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_start. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_start * S ((S (0)) * ff_v_glb_multiplier_power_product) + (1))) /\ ((((exists ff_h_glb_multiplier_power_product_terminal. ff_h_glb_multiplier_power_product_terminal + S (A) = S ((S (h)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_terminal. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_terminal * S ((S (h)) * ff_v_glb_multiplier_power_product) + (A))) /\ forall ff_i_glb_multiplier_power_product. (exists ff_lt_glb_multiplier_power_product_bound. ff_lt_glb_multiplier_power_product_bound + S ff_i_glb_multiplier_power_product = h) -> exists ff_p_glb_multiplier_power_product ff_r_glb_multiplier_power_product ff_s_glb_multiplier_power_product. ((((exists ff_h_glb_multiplier_power_product_factor. ff_h_glb_multiplier_power_product_factor + S (ff_p_glb_multiplier_power_product) = S ((S (ff_i_glb_multiplier_power_product)) * ff_c_glb_multiplier_power)) /\ exists ff_q_glb_multiplier_power_product_factor. ff_b_glb_multiplier_power = ff_q_glb_multiplier_power_product_factor * S ((S (ff_i_glb_multiplier_power_product)) * ff_c_glb_multiplier_power) + (ff_p_glb_multiplier_power_product))) /\ ((((exists ff_h_glb_multiplier_power_product_partial. ff_h_glb_multiplier_power_product_partial + S (ff_r_glb_multiplier_power_product) = S ((S (ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_partial. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_partial * S ((S (ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product) + (ff_r_glb_multiplier_power_product))) /\ ((((exists ff_h_glb_multiplier_power_product_successor. ff_h_glb_multiplier_power_product_successor + S (ff_s_glb_multiplier_power_product) = S ((S (S ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product)) /\ exists ff_q_glb_multiplier_power_product_successor. ff_u_glb_multiplier_power_product = ff_q_glb_multiplier_power_product_successor * S ((S (S ff_i_glb_multiplier_power_product)) * ff_v_glb_multiplier_power_product) + (ff_s_glb_multiplier_power_product))) /\ ff_s_glb_multiplier_power_product = ff_r_glb_multiplier_power_product * ff_p_glb_multiplier_power_product)))))))) /\ ((exists ff_b_glb_sign_power_expanded ff_c_glb_sign_power_expanded. ((forall ff_i_glb_sign_power_expanded_repeat. (exists ff_lt_glb_sign_power_expanded_repeat_bound. ff_lt_glb_sign_power_expanded_repeat_bound + S ff_i_glb_sign_power_expanded_repeat = e) -> (((exists ff_h_glb_sign_power_expanded_repeat_decoded. ff_h_glb_sign_power_expanded_repeat_decoded + S ((2 * h)) = S ((S (ff_i_glb_sign_power_expanded_repeat)) * ff_c_glb_sign_power_expanded)) /\ exists ff_q_glb_sign_power_expanded_repeat_decoded. ff_b_glb_sign_power_expanded = ff_q_glb_sign_power_expanded_repeat_decoded * S ((S (ff_i_glb_sign_power_expanded_repeat)) * ff_c_glb_sign_power_expanded) + ((2 * h))))) /\ (exists ff_u_glb_sign_power_expanded_product ff_v_glb_sign_power_expanded_product. ((((exists ff_h_glb_sign_power_expanded_product_start. ff_h_glb_sign_power_expanded_product_start + S (1) = S ((S (0)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_start. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_start * S ((S (0)) * ff_v_glb_sign_power_expanded_product) + (1))) /\ ((((exists ff_h_glb_sign_power_expanded_product_terminal. ff_h_glb_sign_power_expanded_product_terminal + S (R) = S ((S (e)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_terminal. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_terminal * S ((S (e)) * ff_v_glb_sign_power_expanded_product) + (R))) /\ forall ff_i_glb_sign_power_expanded_product. (exists ff_lt_glb_sign_power_expanded_product_bound. ff_lt_glb_sign_power_expanded_product_bound + S ff_i_glb_sign_power_expanded_product = e) -> exists ff_p_glb_sign_power_expanded_product ff_r_glb_sign_power_expanded_product ff_s_glb_sign_power_expanded_product. ((((exists ff_h_glb_sign_power_expanded_product_factor. ff_h_glb_sign_power_expanded_product_factor + S (ff_p_glb_sign_power_expanded_product) = S ((S (ff_i_glb_sign_power_expanded_product)) * ff_c_glb_sign_power_expanded)) /\ exists ff_q_glb_sign_power_expanded_product_factor. ff_b_glb_sign_power_expanded = ff_q_glb_sign_power_expanded_product_factor * S ((S (ff_i_glb_sign_power_expanded_product)) * ff_c_glb_sign_power_expanded) + (ff_p_glb_sign_power_expanded_product))) /\ ((((exists ff_h_glb_sign_power_expanded_product_partial. ff_h_glb_sign_power_expanded_product_partial + S (ff_r_glb_sign_power_expanded_product) = S ((S (ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_partial. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_partial * S ((S (ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product) + (ff_r_glb_sign_power_expanded_product))) /\ ((((exists ff_h_glb_sign_power_expanded_product_successor. ff_h_glb_sign_power_expanded_product_successor + S (ff_s_glb_sign_power_expanded_product) = S ((S (S ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product)) /\ exists ff_q_glb_sign_power_expanded_product_successor. ff_u_glb_sign_power_expanded_product = ff_q_glb_sign_power_expanded_product_successor * S ((S (S ff_i_glb_sign_power_expanded_product)) * ff_v_glb_sign_power_expanded_product) + (ff_s_glb_sign_power_expanded_product))) /\ ff_s_glb_sign_power_expanded_product = ff_r_glb_sign_power_expanded_product * ff_p_glb_sign_power_expanded_product)))))))) /\ ((exists mb mc sb sc. ((forall gsp_index_glb_signed_prefix. (exists gsp_lt_gap_glb_signed_prefix_index_bound. gsp_lt_gap_glb_signed_prefix_index_bound + S gsp_index_glb_signed_prefix = h) -> (exists gsp_value_glb_signed_prefix_entry gsp_magnitude_glb_signed_prefix_entry gsp_sign_glb_signed_prefix_entry. (((exists ff_h_gsp_glb_signed_prefix_entry_source. ff_h_gsp_glb_signed_prefix_entry_source + S (gsp_value_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * c)) /\ exists ff_q_gsp_glb_signed_prefix_entry_source. b = ff_q_gsp_glb_signed_prefix_entry_source * S ((S (gsp_index_glb_signed_prefix)) * c) + (gsp_value_glb_signed_prefix_entry))) /\ ((((exists ff_h_gsp_glb_signed_prefix_entry_magnitude. ff_h_gsp_glb_signed_prefix_entry_magnitude + S (gsp_magnitude_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * mc)) /\ exists ff_q_gsp_glb_signed_prefix_entry_magnitude. mb = ff_q_gsp_glb_signed_prefix_entry_magnitude * S ((S (gsp_index_glb_signed_prefix)) * mc) + (gsp_magnitude_glb_signed_prefix_entry))) /\ ((((exists ff_h_gsp_glb_signed_prefix_entry_sign. ff_h_gsp_glb_signed_prefix_entry_sign + S (gsp_sign_glb_signed_prefix_entry) = S ((S (gsp_index_glb_signed_prefix)) * sc)) /\ exists ff_q_gsp_glb_signed_prefix_entry_sign. sb = ff_q_gsp_glb_signed_prefix_entry_sign * S ((S (gsp_index_glb_signed_prefix)) * sc) + (gsp_sign_glb_signed_prefix_entry))) /\ ((exists gsp_lt_gap_glb_signed_prefix_entry_positive. gsp_lt_gap_glb_signed_prefix_entry_positive + S 0 = gsp_magnitude_glb_signed_prefix_entry) /\ ((exists gsp_le_gap_glb_signed_prefix_entry_bounded. gsp_le_gap_glb_signed_prefix_entry_bounded + gsp_magnitude_glb_signed_prefix_entry = h) /\ ((gsp_sign_glb_signed_prefix_entry = 0 \/ gsp_sign_glb_signed_prefix_entry = 1) /\ (((gsp_sign_glb_signed_prefix_entry = 0 /\ (exists gsp_mod_left_glb_signed_prefix_entry_lower gsp_mod_right_glb_signed_prefix_entry_lower. (a * gsp_value_glb_signed_prefix_entry) + p * gsp_mod_left_glb_signed_prefix_entry_lower = (gsp_magnitude_glb_signed_prefix_entry) + p * gsp_mod_right_glb_signed_prefix_entry_lower)) \/ (gsp_sign_glb_signed_prefix_entry = 1 /\ (exists gsp_mod_left_glb_signed_prefix_entry_reflected gsp_mod_right_glb_signed_prefix_entry_reflected. (a * gsp_value_glb_signed_prefix_entry) + p * gsp_mod_left_glb_signed_prefix_entry_reflected = ((2 * h) * gsp_magnitude_glb_signed_prefix_entry) + p * gsp_mod_right_glb_signed_prefix_entry_reflected))))))))))) /\ (((exists ff_u_glb_count_sum ff_v_glb_count_sum. ((((exists ff_h_glb_count_sum_start. ff_h_glb_count_sum_start + S (0) = S ((S (0)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_start. ff_u_glb_count_sum = ff_q_glb_count_sum_start * S ((S (0)) * ff_v_glb_count_sum) + (0))) /\ ((((exists ff_h_glb_count_sum_terminal. ff_h_glb_count_sum_terminal + S (e) = S ((S (h)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_terminal. ff_u_glb_count_sum = ff_q_glb_count_sum_terminal * S ((S (h)) * ff_v_glb_count_sum) + (e))) /\ forall ff_i_glb_count_sum. (exists ff_lt_glb_count_sum_bound. ff_lt_glb_count_sum_bound + S ff_i_glb_count_sum = h) -> exists ff_a_glb_count_sum ff_r_glb_count_sum ff_s_glb_count_sum. ((((exists ff_h_glb_count_sum_summand. ff_h_glb_count_sum_summand + S (ff_a_glb_count_sum) = S ((S (ff_i_glb_count_sum)) * sc)) /\ exists ff_q_glb_count_sum_summand. sb = ff_q_glb_count_sum_summand * S ((S (ff_i_glb_count_sum)) * sc) + (ff_a_glb_count_sum))) /\ ((((exists ff_h_glb_count_sum_partial. ff_h_glb_count_sum_partial + S (ff_r_glb_count_sum) = S ((S (ff_i_glb_count_sum)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_partial. ff_u_glb_count_sum = ff_q_glb_count_sum_partial * S ((S (ff_i_glb_count_sum)) * ff_v_glb_count_sum) + (ff_r_glb_count_sum))) /\ ((((exists ff_h_glb_count_sum_successor. ff_h_glb_count_sum_successor + S (ff_s_glb_count_sum) = S ((S (S ff_i_glb_count_sum)) * ff_v_glb_count_sum)) /\ exists ff_q_glb_count_sum_successor. ff_u_glb_count_sum = ff_q_glb_count_sum_successor * S ((S (S ff_i_glb_count_sum)) * ff_v_glb_count_sum) + (ff_s_glb_count_sum))) /\ ff_s_glb_count_sum = ff_r_glb_count_sum + ff_a_glb_count_sum)))))) /\ (forall ff_i_glb_count_bits. (exists ff_lt_glb_count_bits_bound. ff_lt_glb_count_bits_bound + S ff_i_glb_count_bits = h) -> exists ff_bit_glb_count_bits. ((((exists ff_h_glb_count_bits_decoded. ff_h_glb_count_bits_decoded + S (ff_bit_glb_count_bits) = S ((S (ff_i_glb_count_bits)) * sc)) /\ exists ff_q_glb_count_bits_decoded. sb = ff_q_glb_count_bits_decoded * S ((S (ff_i_glb_count_bits)) * sc) + (ff_bit_glb_count_bits))) /\ (ff_bit_glb_count_bits = 0 \/ ff_bit_glb_count_bits = 1))))))) /\ (exists wpp_mod_left_glb_a_mod_r wpp_mod_right_glb_a_mod_r. (A) + p * wpp_mod_left_glb_a_mod_r = (R) + p * wpp_mod_right_glb_a_mod_r)))) - 0036
specialize gauss_lemma_power_congruence_exists p - 0037
specialize gauss_lemma_power_congruence_exists h - 0038
specialize gauss_lemma_power_congruence_exists a - 0039
specialize gauss_lemma_power_congruence_exists b - 0040
specialize gauss_lemma_power_congruence_exists c - 0041
apply gauss_lemma_power_congruence_exists - 0042
exact hpodd - 0043
exact hprime - 0044
exact hnotdiv - 0045
exact hhalf - 0046
cases hgauss - 0047
cases hgauss_witness - 0048
cases hgauss_witness_witness - 0049
cases hgauss_witness_witness_witness - 0050
cases hgauss_witness_witness_witness_right - 0051
cases hgauss_witness_witness_witness_right_right - 0052
have heuler : (((((exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one)) /\ ((exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one) -> (exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres)))) /\ ((~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor)) /\ ((exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor) -> ~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres)))) - 0053
specialize bounded_euler_criterion_complete p - 0054
specialize bounded_euler_criterion_complete a - 0055
specialize bounded_euler_criterion_complete (2 * h) - 0056
specialize bounded_euler_criterion_complete h - 0057
specialize bounded_euler_criterion_complete x1 - 0058
apply bounded_euler_criterion_complete - 0059
exact hpsucc - 0060
exact hprime - 0061
exact ha0 - 0062
exact halt - 0063
symm - 0064
exact hdouble - 0065
exact hgauss_witness_witness_witness_left - 0066
cases heuler - 0067
cases heuler_left - 0068
cases heuler_right - 0069
have hbridge : (((exists gs_even_glb_local_even. x = 2 * gs_even_glb_local_even) -> (exists wpp_mod_left_glb_local_r_mod_one wpp_mod_right_glb_local_r_mod_one. (x2) + p * wpp_mod_left_glb_local_r_mod_one = (1) + p * wpp_mod_right_glb_local_r_mod_one)) /\ ((exists gs_odd_glb_local_odd. x = 2 * gs_odd_glb_local_odd + 1) -> (exists wpp_mod_left_glb_local_r_mod_predecessor wpp_mod_right_glb_local_r_mod_predecessor. (x2) + p * wpp_mod_left_glb_local_r_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_r_mod_predecessor))) - 0070
specialize pow_predecessor_parity_mod p - 0071
specialize pow_predecessor_parity_mod (2 * h) - 0072
specialize pow_predecessor_parity_mod x - 0073
specialize pow_predecessor_parity_mod x2 - 0074
apply pow_predecessor_parity_mod - 0075
exact hpsucc - 0076
exact hgauss_witness_witness_witness_right_left - 0077
cases hbridge - 0078
have hseparation : ~(exists wpp_mod_left_glb_one_mod_predecessor wpp_mod_right_glb_one_mod_predecessor. (1) + p * wpp_mod_left_glb_one_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_one_mod_predecessor) - 0079
intro hcollision - 0080
specialize odd_prime_one_not_mod_predecessor p - 0081
specialize odd_prime_one_not_mod_predecessor (2 * h) - 0082
specialize odd_prime_one_not_mod_predecessor h - 0083
apply odd_prime_one_not_mod_predecessor - 0084
exact hpsucc - 0085
exact hprime - 0086
symm - 0087
exact hdouble - 0088
exact hcollision - 0089
have hqres_even : (exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists gs_even_glb_local_even. x = 2 * gs_even_glb_local_even) - 0090
intro hqres - 0091
specialize parity_cases x - 0092
cases parity_cases - 0093
cases parity_cases_witness - 0094
exists x3 - 0095
exact parity_cases_witness_left - 0096
exfalso - 0097
apply hseparation - 0098
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - 0099
apply heuler_left_left - 0100
exact hqres - 0101
have honeA : exists wpp_mod_left_glb_local_one_mod_a wpp_mod_right_glb_local_one_mod_a. (1) + p * wpp_mod_left_glb_local_one_mod_a = (x1) + p * wpp_mod_right_glb_local_one_mod_a - 0102
specialize mod_eq_symm p - 0103
specialize mod_eq_symm x1 - 0104
specialize mod_eq_symm 1 - 0105
apply mod_eq_symm - 0106
exact hAone - 0107
have honeR : exists wpp_mod_left_glb_local_one_mod_r wpp_mod_right_glb_local_one_mod_r. (1) + p * wpp_mod_left_glb_local_one_mod_r = (x2) + p * wpp_mod_right_glb_local_one_mod_r - 0108
specialize mod_eq_trans p - 0109
specialize mod_eq_trans 1 - 0110
specialize mod_eq_trans x1 - 0111
specialize mod_eq_trans x2 - 0112
apply mod_eq_trans - 0113
exact honeA - 0114
exact hgauss_witness_witness_witness_right_right_right - 0115
have hRpred : exists wpp_mod_left_glb_local_r_mod_predecessor wpp_mod_right_glb_local_r_mod_predecessor. (x2) + p * wpp_mod_left_glb_local_r_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_r_mod_predecessor - 0116
apply hbridge_right - 0117
exists x3 - 0118
exact parity_cases_witness_right - 0119
specialize mod_eq_trans p - 0120
specialize mod_eq_trans 1 - 0121
specialize mod_eq_trans x2 - 0122
specialize mod_eq_trans (2 * h) - 0123
apply mod_eq_trans - 0124
exact honeR - 0125
exact hRpred - 0126
have heven_qres : (exists gs_even_glb_local_even. x = 2 * gs_even_glb_local_even) -> (exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) - 0127
intro heven - 0128
have hRone : exists wpp_mod_left_glb_local_r_mod_one wpp_mod_right_glb_local_r_mod_one. (x2) + p * wpp_mod_left_glb_local_r_mod_one = (1) + p * wpp_mod_right_glb_local_r_mod_one - 0129
apply hbridge_left - 0130
exact heven - 0131
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - 0132
specialize mod_eq_trans p - 0133
specialize mod_eq_trans x1 - 0134
specialize mod_eq_trans x2 - 0135
specialize mod_eq_trans 1 - 0136
apply mod_eq_trans - 0137
exact hgauss_witness_witness_witness_right_right_right - 0138
exact hRone - 0139
apply heuler_left_right - 0140
exact hAone - 0141
have hnonres_odd : ~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) -> (exists gs_odd_glb_local_odd. x = 2 * gs_odd_glb_local_odd + 1) - 0142
intro hnonres - 0143
specialize parity_cases x - 0144
cases parity_cases - 0145
cases parity_cases_witness - 0146
exfalso - 0147
apply hseparation - 0148
have hRone : exists wpp_mod_left_glb_local_r_mod_one wpp_mod_right_glb_local_r_mod_one. (x2) + p * wpp_mod_left_glb_local_r_mod_one = (1) + p * wpp_mod_right_glb_local_r_mod_one - 0149
apply hbridge_left - 0150
exists x3 - 0151
exact parity_cases_witness_left - 0152
have hAone : exists wpp_mod_left_glb_local_a_mod_one wpp_mod_right_glb_local_a_mod_one. (x1) + p * wpp_mod_left_glb_local_a_mod_one = (1) + p * wpp_mod_right_glb_local_a_mod_one - 0153
specialize mod_eq_trans p - 0154
specialize mod_eq_trans x1 - 0155
specialize mod_eq_trans x2 - 0156
specialize mod_eq_trans 1 - 0157
apply mod_eq_trans - 0158
exact hgauss_witness_witness_witness_right_right_right - 0159
exact hRone - 0160
have honeA : exists wpp_mod_left_glb_local_one_mod_a wpp_mod_right_glb_local_one_mod_a. (1) + p * wpp_mod_left_glb_local_one_mod_a = (x1) + p * wpp_mod_right_glb_local_one_mod_a - 0161
specialize mod_eq_symm p - 0162
specialize mod_eq_symm x1 - 0163
specialize mod_eq_symm 1 - 0164
apply mod_eq_symm - 0165
exact hAone - 0166
have hApred : exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor - 0167
apply heuler_right_left - 0168
exact hnonres - 0169
specialize mod_eq_trans p - 0170
specialize mod_eq_trans 1 - 0171
specialize mod_eq_trans x1 - 0172
specialize mod_eq_trans (2 * h) - 0173
apply mod_eq_trans - 0174
exact honeA - 0175
exact hApred - 0176
exists x3 - 0177
exact parity_cases_witness_right - 0178
have hodd_nonres : (exists gs_odd_glb_local_odd. x = 2 * gs_odd_glb_local_odd + 1) -> ~(exists qr_x_glb_qres. exists qr_u_glb_qres qr_v_glb_qres. qr_x_glb_qres * qr_x_glb_qres + p * qr_u_glb_qres = a + p * qr_v_glb_qres) - 0179
intro hodd - 0180
have hRpred : exists wpp_mod_left_glb_local_r_mod_predecessor wpp_mod_right_glb_local_r_mod_predecessor. (x2) + p * wpp_mod_left_glb_local_r_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_r_mod_predecessor - 0181
apply hbridge_right - 0182
exact hodd - 0183
have hApred : exists wpp_mod_left_glb_local_a_mod_predecessor wpp_mod_right_glb_local_a_mod_predecessor. (x1) + p * wpp_mod_left_glb_local_a_mod_predecessor = (2 * h) + p * wpp_mod_right_glb_local_a_mod_predecessor - 0184
specialize mod_eq_trans p - 0185
specialize mod_eq_trans x1 - 0186
specialize mod_eq_trans x2 - 0187
specialize mod_eq_trans (2 * h) - 0188
apply mod_eq_trans - 0189
exact hgauss_witness_witness_witness_right_right_right - 0190
exact hRpred - 0191
intro hqres - 0192
apply heuler_right_right - 0193
exact hApred - 0194
exact hqres - 0195
exists x - 0196
split - 0197
exact hgauss_witness_witness_witness_right_right_left - 0198
split - 0199
split - 0200
exact hqres_even - 0201
exact heven_qres - 0202
split - 0203
exact hnonres_odd - 0204
exact hodd_nonres