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 N. forall p b c d e sb sc k l m. ((~(p = 1) /\ forall frp_prime_left_cd_induction_prime frp_prime_right_cd_induction_prime. p = frp_prime_left_cd_induction_prime * frp_prime_right_cd_induction_prime -> frp_prime_left_cd_induction_prime = 1 \/ frp_prime_right_cd_induction_prime = 1)) -> (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((k)) = S ((S ((p))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((p))) * ff_v_fms_count) + ((k)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (c))) /\ exists ff_q_fms_count_summand. (b) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (c)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (c))) /\ exists ff_q_fms_count_decoded. (b) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (c)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) -> (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((l)) = S ((S ((p))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((p))) * ff_v_fms_count) + ((l)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (e))) /\ exists ff_q_fms_count_summand. (d) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (e)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (e))) /\ exists ff_q_fms_count_decoded. (d) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (e)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) -> (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((m)) = S ((S ((p))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((p))) * ff_v_fms_count) + ((m)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (sc))) /\ exists ff_q_fms_count_summand. (sb) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (sc)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (sc))) /\ exists ff_q_fms_count_decoded. (sb) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (sc)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) -> ~(k=0) -> (((exists fms_gap_member. fms_gap_member + S (0) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (0)) * e)) /\ exists fs_q_fms_member. d = fs_q_fms_member * S ((S (0)) * e) + (1))))) -> (forall fms_i_cover fms_j_cover fms_s_cover. (exists fms_gap_cover_i. fms_gap_cover_i + S (fms_i_cover) = (p)) -> (exists fms_gap_cover_j. fms_gap_cover_j + S (fms_j_cover) = (p)) -> (exists fms_gap_cover_s. fms_gap_cover_s + S (fms_s_cover) = (p)) -> (((exists fs_h_fms_cover_left. fs_h_fms_cover_left + S (1) = S ((S (fms_i_cover)) * c)) /\ exists fs_q_fms_cover_left. b = fs_q_fms_cover_left * S ((S (fms_i_cover)) * c) + (1))) -> (((exists fs_h_fms_cover_right. fs_h_fms_cover_right + S (1) = S ((S (fms_j_cover)) * e)) /\ exists fs_q_fms_cover_right. d = fs_q_fms_cover_right * S ((S (fms_j_cover)) * e) + (1))) -> (exists fms_u_cover fms_v_cover. (fms_i_cover + fms_j_cover) + (p) * fms_u_cover = (fms_s_cover) + (p) * fms_v_cover) -> (((exists fs_h_fms_cover_result. fs_h_fms_cover_result + S (1) = S ((S (fms_s_cover)) * sc)) /\ exists fs_q_fms_cover_result. sb = fs_q_fms_cover_result * S ((S (fms_s_cover)) * sc) + (1)))) -> (exists fms_gap_cd_induction_bound. fms_gap_cd_induction_bound + S (l) = (N)) -> (((exists fms_gap_cd_bound_full. fms_gap_cd_bound_full + (p) = (m)) \/ (exists fms_gap_cd_bound_sum. fms_gap_cd_bound_sum + (k+l) = (S (m)))))Constructive proof overview
Generated structural guide
Ordinary bounded induction on the actual second-set cardinality proves the full normalized Cauchy--Davenport bound using genuine strict Dyson descent.
The unchanged tactic script uses 16 declared prerequisites and contains 258 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
add_eq_zero_right Stable theorem; checked-use authorized succ_ne_zero Stable theorem; checked-use authorized finite_lt_succ_eq_or_lt Stable theorem; checked-use authorized eq_decidable Stable theorem; checked-use authorized le_refl Stable theorem; checked-use authorized le_or_lt Stable theorem; checked-use authorized le_antisymm Stable theorem; checked-use authorized one_le_of_ne_zero Stable theorem; checked-use authorized CD000A finite_bit_member_count_nonzero CD0040 finite_modular_singleton_cover_bound CD0041 prime_modular_normalized_boundary_exists prime_nonzero Stable theorem; checked-use authorized CD0038 finite_modular_dyson_transform_exists CD003E finite_modular_dyson_strict_sizes CD003B finite_modular_dyson_lower_zero_member CD003D finite_modular_dyson_sum_coverDirect 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 (7)
01Induction on NL1–10
02Fix variables and assumptionsL11–19
03Separate the logical casesL20–21
04Establish hzL22–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
05Fix variables and assumptionsL32–41
06Fix variables and assumptionsL42–47
07Establish hcaseL48–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
08Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
cases hcase
09Use earlier factsL54–55
10Separate the logical casesL56–57
11Calculate and transport equalitiesL58–58
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L58
rewrite eq_decidable_left
12Use earlier factsL59–60
13Establish hsmallL61–64
14Separate the logical casesL65–65
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L65
cases hsmall
15Establish hloneL66–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le antisymm.
16Use earlier factsL76–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L76
specialize finite_bit_member_count_nonzero p - L77
specialize finite_bit_member_count_nonzero l - L78
specialize finite_bit_member_count_nonzero 0 - L79
apply finite_bit_member_count_nonzero - L80
exact hB - L81
exact hzero - L82
exact hz - L83
specialize finite_modular_singleton_cover_bound b - L84
specialize finite_modular_singleton_cover_bound c - L85
specialize finite_modular_singleton_cover_bound d
17Use earlier factsL86–95
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
specialize finite_modular_singleton_cover_bound e - L87
specialize finite_modular_singleton_cover_bound sb - L88
specialize finite_modular_singleton_cover_bound sc - L89
specialize finite_modular_singleton_cover_bound p - L90
specialize finite_modular_singleton_cover_bound k - L91
specialize finite_modular_singleton_cover_bound l - L92
specialize finite_modular_singleton_cover_bound m - L93
apply finite_modular_singleton_cover_bound - L94
exact hA - L95
exact hS
18Use earlier factsL96–98
19Establish hboundaryL99–108
Establish this local claim before using it. It is not an additional assumption.
- L99
have hboundary : ∃ h. ∃ t. ∃ r. ModularSetMember(d,e,p,h) ∧ ModularTranslationBoundary(b,c,p,h,t,r)Definitions: ModularSetMemberModularTranslationBoundary - L100
specialize prime_modular_normalized_boundary_exists b - L101
specialize prime_modular_normalized_boundary_exists c - L102
specialize prime_modular_normalized_boundary_exists d - L103
specialize prime_modular_normalized_boundary_exists e - L104
specialize prime_modular_normalized_boundary_exists sb - L105
specialize prime_modular_normalized_boundary_exists sc - L106
specialize prime_modular_normalized_boundary_exists p - L107
specialize prime_modular_normalized_boundary_exists k - L108
specialize prime_modular_normalized_boundary_exists l
20Use earlier factsL109–118
Instantiate or apply named facts and discharge the corresponding proof obligations.
21Use earlier factsL119–119
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L119
exact eq_decidable_right
22Separate the logical casesL120–123
23Establish hsourceL124–124
Establish this local claim before using it. It is not an additional assumption.
- L124
have hsource : ((exists fms_gap_member. fms_gap_member + S (x1) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (x1)) * c)) /\ exists fs_q_fms_member. b = fs_q_fms_member * S ((S (x1)) * c) + (1))))
24Separate the logical casesL125–125
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L125
cases hboundary_witness_witness_witness_right
25Use earlier factsL126–126
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L126
exact hboundary_witness_witness_witness_right_left
26Establish hpzeroL127–132
27Establish htransformL133–142
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular dyson transform exists.
- L133
have htransform : ∃ ub. ∃ uc. ∃ vb. ∃ vc. ∃ K. ∃ L. BitCount(ub,uc,p,K) ∧ (BitCount(vb,vc,p,L) ∧ (K + L = k + l ∧ ModularDysonTransform(b,c,d,e,ub,uc,vb,vc,p,x1)))Definitions: ModularDysonTransformBitCount - L134
specialize finite_modular_dyson_transform_exists b - L135
specialize finite_modular_dyson_transform_exists c - L136
specialize finite_modular_dyson_transform_exists d - L137
specialize finite_modular_dyson_transform_exists e - L138
specialize finite_modular_dyson_transform_exists p - L139
specialize finite_modular_dyson_transform_exists k - L140
specialize finite_modular_dyson_transform_exists l - L141
specialize finite_modular_dyson_transform_exists x1 - L142
apply finite_modular_dyson_transform_exists
28Use earlier factsL143–145
29Separate the logical casesL146–146
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L146
cases hsource
30Use earlier factsL147–147
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L147
exact hsource_left
31Separate the logical casesL148–156
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L148
cases htransform - L149
cases htransform_witness - L150
cases htransform_witness_witness - L151
cases htransform_witness_witness_witness - L152
cases htransform_witness_witness_witness_witness - L153
cases htransform_witness_witness_witness_witness_witness - L154
cases htransform_witness_witness_witness_witness_witness_witness - L155
cases htransform_witness_witness_witness_witness_witness_witness_right - L156
cases htransform_witness_witness_witness_witness_witness_witness_right_right
32Establish hstrictL157–166
Establish this local claim before using it. It is not an additional assumption.
- L157
have hstrict : ~(x7=0) /\ (~(x8=0) /\ (exists fms_gap_lt. fms_gap_lt + S (x8) = (l))) - L158
specialize finite_modular_dyson_strict_sizes b - L159
specialize finite_modular_dyson_strict_sizes c - L160
specialize finite_modular_dyson_strict_sizes d - L161
specialize finite_modular_dyson_strict_sizes e - L162
specialize finite_modular_dyson_strict_sizes x3 - L163
specialize finite_modular_dyson_strict_sizes x4 - L164
specialize finite_modular_dyson_strict_sizes x5 - L165
specialize finite_modular_dyson_strict_sizes x6 - L166
specialize finite_modular_dyson_strict_sizes p
33Use earlier factsL167–176
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L167
specialize finite_modular_dyson_strict_sizes x1 - L168
specialize finite_modular_dyson_strict_sizes x - L169
specialize finite_modular_dyson_strict_sizes x2 - L170
specialize finite_modular_dyson_strict_sizes x7 - L171
specialize finite_modular_dyson_strict_sizes x8 - L172
specialize finite_modular_dyson_strict_sizes l - L173
apply finite_modular_dyson_strict_sizes - L174
exact htransform_witness_witness_witness_witness_witness_witness_left - L175
exact htransform_witness_witness_witness_witness_witness_witness_right_left - L176
exact hB
34Use earlier factsL177–180
35Separate the logical casesL181–182
36Establish hzeroVL183–192
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular dyson lower zero member.
- L183
have hzeroV : ((exists fms_gap_member. fms_gap_member + S (0) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (0)) * x6)) /\ exists fs_q_fms_member. x5 = fs_q_fms_member * S ((S (0)) * x6) + (1)))) - L184
specialize finite_modular_dyson_lower_zero_member b - L185
specialize finite_modular_dyson_lower_zero_member c - L186
specialize finite_modular_dyson_lower_zero_member d - L187
specialize finite_modular_dyson_lower_zero_member e - L188
specialize finite_modular_dyson_lower_zero_member x5 - L189
specialize finite_modular_dyson_lower_zero_member x6 - L190
specialize finite_modular_dyson_lower_zero_member p - L191
specialize finite_modular_dyson_lower_zero_member x1 - L192
apply finite_modular_dyson_lower_zero_member
37Separate the logical casesL193–193
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L193
cases htransform_witness_witness_witness_witness_witness_witness_right_right_right
38Use earlier factsL194–196
39Establish hnewcoverL197–206
Establish this local claim before using it. It is not an additional assumption.
- L197
have hnewcover : ModularSetSumCover(x3,x4,x5,x6,sb,sc,p)Definitions: ModularSetSumCover - L198
specialize finite_modular_dyson_sum_cover b - L199
specialize finite_modular_dyson_sum_cover c - L200
specialize finite_modular_dyson_sum_cover d - L201
specialize finite_modular_dyson_sum_cover e - L202
specialize finite_modular_dyson_sum_cover x3 - L203
specialize finite_modular_dyson_sum_cover x4 - L204
specialize finite_modular_dyson_sum_cover x5 - L205
specialize finite_modular_dyson_sum_cover x6 - L206
specialize finite_modular_dyson_sum_cover sb
40Use earlier factsL207–212
Instantiate or apply named facts and discharge the corresponding proof obligations.
41Establish hresultL213–222
Establish this local claim before using it. It is not an additional assumption.
- L213
have hresult : ((exists fms_gap_cd_bound_full. fms_gap_cd_bound_full + (p) = (m)) \/ (exists fms_gap_cd_bound_sum. fms_gap_cd_bound_sum + (x7+x8) = (S (m)))) - L214
specialize IH p - L215
specialize IH x3 - L216
specialize IH x4 - L217
specialize IH x5 - L218
specialize IH x6 - L219
specialize IH sb - L220
specialize IH sc - L221
specialize IH x7 - L222
specialize IH x8
42Use earlier factsL223–231
Instantiate or apply named facts and discharge the corresponding proof obligations.
43Calculate and transport equalitiesL232–232
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L232
rewrite hcase_left at hstrict_right_right
44Use earlier factsL233–233
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L233
exact hstrict_right_right
45Separate the logical casesL234–235
46Use earlier factsL236–236
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L236
exact hresult_left
47Separate the logical casesL237–237
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L237
right
48Calculate and transport equalitiesL238–238
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L238
rewrite htransform_witness_witness_witness_witness_witness_witness_right_right_left at hresult_right
49Use earlier factsL239–248
Original exact command ledger · 258 lines
- 0001
induction N - 0002
intro p - 0003
intro b - 0004
intro c - 0005
intro d - 0006
intro e - 0007
intro sb - 0008
intro sc - 0009
intro k - 0010
intro l - 0011
intro m - 0012
intro hprime - 0013
intro hA - 0014
intro hB - 0015
intro hS - 0016
intro hk - 0017
intro hzero - 0018
intro hcover - 0019
intro hbound - 0020
exfalso - 0021
cases hbound - 0022
have hz : S l=0 - 0023
specialize add_eq_zero_right x - 0024
specialize add_eq_zero_right S l - 0025
apply add_eq_zero_right - 0026
exact hbound_witness - 0027
specialize succ_ne_zero l - 0028
apply succ_ne_zero - 0029
exact hz - 0030
intro p - 0031
intro b - 0032
intro c - 0033
intro d - 0034
intro e - 0035
intro sb - 0036
intro sc - 0037
intro k - 0038
intro l - 0039
intro m - 0040
intro hprime - 0041
intro hA - 0042
intro hB - 0043
intro hS - 0044
intro hk - 0045
intro hzero - 0046
intro hcover - 0047
intro hbound - 0048
have hcase : l=N \/ (exists fms_gap_lt. fms_gap_lt + S (l) = (N)) - 0049
specialize finite_lt_succ_eq_or_lt N - 0050
specialize finite_lt_succ_eq_or_lt l - 0051
apply finite_lt_succ_eq_or_lt - 0052
exact hbound - 0053
cases hcase - 0054
specialize eq_decidable m - 0055
specialize eq_decidable p - 0056
cases eq_decidable - 0057
left - 0058
rewrite eq_decidable_left - 0059
specialize le_refl p - 0060
apply le_refl - 0061
have hsmall : (exists fms_gap_le. fms_gap_le + (l) = (1)) \/ (exists fms_gap_lt. fms_gap_lt + S (1) = (l)) - 0062
specialize le_or_lt l - 0063
specialize le_or_lt 1 - 0064
apply le_or_lt - 0065
cases hsmall - 0066
have hlone : l=1 - 0067
specialize le_antisymm l - 0068
specialize le_antisymm 1 - 0069
apply le_antisymm - 0070
exact hsmall_left - 0071
specialize one_le_of_ne_zero l - 0072
apply one_le_of_ne_zero - 0073
intro hz - 0074
specialize finite_bit_member_count_nonzero d - 0075
specialize finite_bit_member_count_nonzero e - 0076
specialize finite_bit_member_count_nonzero p - 0077
specialize finite_bit_member_count_nonzero l - 0078
specialize finite_bit_member_count_nonzero 0 - 0079
apply finite_bit_member_count_nonzero - 0080
exact hB - 0081
exact hzero - 0082
exact hz - 0083
specialize finite_modular_singleton_cover_bound b - 0084
specialize finite_modular_singleton_cover_bound c - 0085
specialize finite_modular_singleton_cover_bound d - 0086
specialize finite_modular_singleton_cover_bound e - 0087
specialize finite_modular_singleton_cover_bound sb - 0088
specialize finite_modular_singleton_cover_bound sc - 0089
specialize finite_modular_singleton_cover_bound p - 0090
specialize finite_modular_singleton_cover_bound k - 0091
specialize finite_modular_singleton_cover_bound l - 0092
specialize finite_modular_singleton_cover_bound m - 0093
apply finite_modular_singleton_cover_bound - 0094
exact hA - 0095
exact hS - 0096
exact hcover - 0097
exact hzero - 0098
exact hlone - 0099
have hboundary : exists h t r. (((exists fms_gap_member. fms_gap_member + S (h) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (h)) * e)) /\ exists fs_q_fms_member. d = fs_q_fms_member * S ((S (h)) * e) + (1))))) /\ ((((exists fms_gap_cd_boundary_source. fms_gap_cd_boundary_source + S (t) = (p)) /\ (((exists fs_h_fms_cd_boundary_source. fs_h_fms_cd_boundary_source + S (1) = S ((S (t)) * c)) /\ exists fs_q_fms_cd_boundary_source. b = fs_q_fms_cd_boundary_source * S ((S (t)) * c) + (1))))) /\ ((exists fms_gap_cd_boundary_target. fms_gap_cd_boundary_target + S (r) = (p)) /\ ((exists fms_u_cd_boundary_shift fms_v_cd_boundary_shift. (t+h) + (p) * fms_u_cd_boundary_shift = (r) + (p) * fms_v_cd_boundary_shift) /\ ~(((exists fs_h_cd_boundary_outside. fs_h_cd_boundary_outside + S (1) = S ((S (r)) * c)) /\ exists fs_q_cd_boundary_outside. b = fs_q_cd_boundary_outside * S ((S (r)) * c) + (1)))))) - 0100
specialize prime_modular_normalized_boundary_exists b - 0101
specialize prime_modular_normalized_boundary_exists c - 0102
specialize prime_modular_normalized_boundary_exists d - 0103
specialize prime_modular_normalized_boundary_exists e - 0104
specialize prime_modular_normalized_boundary_exists sb - 0105
specialize prime_modular_normalized_boundary_exists sc - 0106
specialize prime_modular_normalized_boundary_exists p - 0107
specialize prime_modular_normalized_boundary_exists k - 0108
specialize prime_modular_normalized_boundary_exists l - 0109
specialize prime_modular_normalized_boundary_exists m - 0110
apply prime_modular_normalized_boundary_exists - 0111
exact hprime - 0112
exact hA - 0113
exact hB - 0114
exact hS - 0115
exact hk - 0116
exact hsmall_right - 0117
exact hzero - 0118
exact hcover - 0119
exact eq_decidable_right - 0120
cases hboundary - 0121
cases hboundary_witness - 0122
cases hboundary_witness_witness - 0123
cases hboundary_witness_witness_witness - 0124
have hsource : ((exists fms_gap_member. fms_gap_member + S (x1) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (x1)) * c)) /\ exists fs_q_fms_member. b = fs_q_fms_member * S ((S (x1)) * c) + (1)))) - 0125
cases hboundary_witness_witness_witness_right - 0126
exact hboundary_witness_witness_witness_right_left - 0127
have hpzero : ~(p=0) - 0128
intro he - 0129
specialize prime_nonzero p - 0130
apply prime_nonzero - 0131
exact hprime - 0132
exact he - 0133
have htransform : exists ub uc vb vc K L. (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((K)) = S ((S ((p))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((p))) * ff_v_fms_count) + ((K)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (uc))) /\ exists ff_q_fms_count_summand. (ub) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (uc)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (uc))) /\ exists ff_q_fms_count_decoded. (ub) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (uc)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) /\ ((((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((L)) = S ((S ((p))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((p))) * ff_v_fms_count) + ((L)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (vc))) /\ exists ff_q_fms_count_summand. (vb) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (vc)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (p)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (vc))) /\ exists ff_q_fms_count_decoded. (vb) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (vc)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) /\ (K+L=k+l /\ (((forall cd_output_dyson_upper. (exists fms_gap_cd_dyson_upper_bound. fms_gap_cd_dyson_upper_bound + S (cd_output_dyson_upper) = (p)) -> ((((((exists fs_h_cd_dyson_upper_result. fs_h_cd_dyson_upper_result + S (1) = S ((S (cd_output_dyson_upper)) * uc)) /\ exists fs_q_cd_dyson_upper_result. ub = fs_q_cd_dyson_upper_result * S ((S (cd_output_dyson_upper)) * uc) + (1))) -> ((((exists fs_h_cd_dyson_upper_old. fs_h_cd_dyson_upper_old + S (1) = S ((S (cd_output_dyson_upper)) * c)) /\ exists fs_q_cd_dyson_upper_old. b = fs_q_cd_dyson_upper_old * S ((S (cd_output_dyson_upper)) * c) + (1))) \/ (exists cd_source_dyson_upper. (((exists fms_gap_cd_dyson_upper_member. fms_gap_cd_dyson_upper_member + S (cd_source_dyson_upper) = (p)) /\ (((exists fs_h_fms_cd_dyson_upper_member. fs_h_fms_cd_dyson_upper_member + S (1) = S ((S (cd_source_dyson_upper)) * e)) /\ exists fs_q_fms_cd_dyson_upper_member. d = fs_q_fms_cd_dyson_upper_member * S ((S (cd_source_dyson_upper)) * e) + (1))))) /\ (exists fms_u_cd_dyson_upper_mod fms_v_cd_dyson_upper_mod. (cd_source_dyson_upper+x1) + (p) * fms_u_cd_dyson_upper_mod = (cd_output_dyson_upper) + (p) * fms_v_cd_dyson_upper_mod)))) /\ (((((exists fs_h_cd_dyson_upper_old. fs_h_cd_dyson_upper_old + S (1) = S ((S (cd_output_dyson_upper)) * c)) /\ exists fs_q_cd_dyson_upper_old. b = fs_q_cd_dyson_upper_old * S ((S (cd_output_dyson_upper)) * c) + (1))) \/ (exists cd_source_dyson_upper. (((exists fms_gap_cd_dyson_upper_member. fms_gap_cd_dyson_upper_member + S (cd_source_dyson_upper) = (p)) /\ (((exists fs_h_fms_cd_dyson_upper_member. fs_h_fms_cd_dyson_upper_member + S (1) = S ((S (cd_source_dyson_upper)) * e)) /\ exists fs_q_fms_cd_dyson_upper_member. d = fs_q_fms_cd_dyson_upper_member * S ((S (cd_source_dyson_upper)) * e) + (1))))) /\ (exists fms_u_cd_dyson_upper_mod fms_v_cd_dyson_upper_mod. (cd_source_dyson_upper+x1) + (p) * fms_u_cd_dyson_upper_mod = (cd_output_dyson_upper) + (p) * fms_v_cd_dyson_upper_mod))) -> (((exists fs_h_cd_dyson_upper_result. fs_h_cd_dyson_upper_result + S (1) = S ((S (cd_output_dyson_upper)) * uc)) /\ exists fs_q_cd_dyson_upper_result. ub = fs_q_cd_dyson_upper_result * S ((S (cd_output_dyson_upper)) * uc) + (1))))))) /\ (forall cd_output_dyson_lower. (exists fms_gap_cd_dyson_lower_bound. fms_gap_cd_dyson_lower_bound + S (cd_output_dyson_lower) = (p)) -> ((((((exists fs_h_cd_dyson_lower_result. fs_h_cd_dyson_lower_result + S (1) = S ((S (cd_output_dyson_lower)) * vc)) /\ exists fs_q_cd_dyson_lower_result. vb = fs_q_cd_dyson_lower_result * S ((S (cd_output_dyson_lower)) * vc) + (1))) -> ((((exists fs_h_cd_dyson_lower_old. fs_h_cd_dyson_lower_old + S (1) = S ((S (cd_output_dyson_lower)) * e)) /\ exists fs_q_cd_dyson_lower_old. d = fs_q_cd_dyson_lower_old * S ((S (cd_output_dyson_lower)) * e) + (1))) /\ (exists cd_source_dyson_lower. (((exists fms_gap_cd_dyson_lower_member. fms_gap_cd_dyson_lower_member + S (cd_source_dyson_lower) = (p)) /\ (((exists fs_h_fms_cd_dyson_lower_member. fs_h_fms_cd_dyson_lower_member + S (1) = S ((S (cd_source_dyson_lower)) * c)) /\ exists fs_q_fms_cd_dyson_lower_member. b = fs_q_fms_cd_dyson_lower_member * S ((S (cd_source_dyson_lower)) * c) + (1))))) /\ (exists fms_u_cd_dyson_lower_mod fms_v_cd_dyson_lower_mod. (cd_output_dyson_lower+x1) + (p) * fms_u_cd_dyson_lower_mod = (cd_source_dyson_lower) + (p) * fms_v_cd_dyson_lower_mod)))) /\ (((((exists fs_h_cd_dyson_lower_old. fs_h_cd_dyson_lower_old + S (1) = S ((S (cd_output_dyson_lower)) * e)) /\ exists fs_q_cd_dyson_lower_old. d = fs_q_cd_dyson_lower_old * S ((S (cd_output_dyson_lower)) * e) + (1))) /\ (exists cd_source_dyson_lower. (((exists fms_gap_cd_dyson_lower_member. fms_gap_cd_dyson_lower_member + S (cd_source_dyson_lower) = (p)) /\ (((exists fs_h_fms_cd_dyson_lower_member. fs_h_fms_cd_dyson_lower_member + S (1) = S ((S (cd_source_dyson_lower)) * c)) /\ exists fs_q_fms_cd_dyson_lower_member. b = fs_q_fms_cd_dyson_lower_member * S ((S (cd_source_dyson_lower)) * c) + (1))))) /\ (exists fms_u_cd_dyson_lower_mod fms_v_cd_dyson_lower_mod. (cd_output_dyson_lower+x1) + (p) * fms_u_cd_dyson_lower_mod = (cd_source_dyson_lower) + (p) * fms_v_cd_dyson_lower_mod))) -> (((exists fs_h_cd_dyson_lower_result. fs_h_cd_dyson_lower_result + S (1) = S ((S (cd_output_dyson_lower)) * vc)) /\ exists fs_q_cd_dyson_lower_result. vb = fs_q_cd_dyson_lower_result * S ((S (cd_output_dyson_lower)) * vc) + (1))))))))))) - 0134
specialize finite_modular_dyson_transform_exists b - 0135
specialize finite_modular_dyson_transform_exists c - 0136
specialize finite_modular_dyson_transform_exists d - 0137
specialize finite_modular_dyson_transform_exists e - 0138
specialize finite_modular_dyson_transform_exists p - 0139
specialize finite_modular_dyson_transform_exists k - 0140
specialize finite_modular_dyson_transform_exists l - 0141
specialize finite_modular_dyson_transform_exists x1 - 0142
apply finite_modular_dyson_transform_exists - 0143
exact hpzero - 0144
exact hA - 0145
exact hB - 0146
cases hsource - 0147
exact hsource_left - 0148
cases htransform - 0149
cases htransform_witness - 0150
cases htransform_witness_witness - 0151
cases htransform_witness_witness_witness - 0152
cases htransform_witness_witness_witness_witness - 0153
cases htransform_witness_witness_witness_witness_witness - 0154
cases htransform_witness_witness_witness_witness_witness_witness - 0155
cases htransform_witness_witness_witness_witness_witness_witness_right - 0156
cases htransform_witness_witness_witness_witness_witness_witness_right_right - 0157
have hstrict : ~(x7=0) /\ (~(x8=0) /\ (exists fms_gap_lt. fms_gap_lt + S (x8) = (l))) - 0158
specialize finite_modular_dyson_strict_sizes b - 0159
specialize finite_modular_dyson_strict_sizes c - 0160
specialize finite_modular_dyson_strict_sizes d - 0161
specialize finite_modular_dyson_strict_sizes e - 0162
specialize finite_modular_dyson_strict_sizes x3 - 0163
specialize finite_modular_dyson_strict_sizes x4 - 0164
specialize finite_modular_dyson_strict_sizes x5 - 0165
specialize finite_modular_dyson_strict_sizes x6 - 0166
specialize finite_modular_dyson_strict_sizes p - 0167
specialize finite_modular_dyson_strict_sizes x1 - 0168
specialize finite_modular_dyson_strict_sizes x - 0169
specialize finite_modular_dyson_strict_sizes x2 - 0170
specialize finite_modular_dyson_strict_sizes x7 - 0171
specialize finite_modular_dyson_strict_sizes x8 - 0172
specialize finite_modular_dyson_strict_sizes l - 0173
apply finite_modular_dyson_strict_sizes - 0174
exact htransform_witness_witness_witness_witness_witness_witness_left - 0175
exact htransform_witness_witness_witness_witness_witness_witness_right_left - 0176
exact hB - 0177
exact htransform_witness_witness_witness_witness_witness_witness_right_right_right - 0178
exact hzero - 0179
exact hboundary_witness_witness_witness_left - 0180
exact hboundary_witness_witness_witness_right - 0181
cases hstrict - 0182
cases hstrict_right - 0183
have hzeroV : ((exists fms_gap_member. fms_gap_member + S (0) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (0)) * x6)) /\ exists fs_q_fms_member. x5 = fs_q_fms_member * S ((S (0)) * x6) + (1)))) - 0184
specialize finite_modular_dyson_lower_zero_member b - 0185
specialize finite_modular_dyson_lower_zero_member c - 0186
specialize finite_modular_dyson_lower_zero_member d - 0187
specialize finite_modular_dyson_lower_zero_member e - 0188
specialize finite_modular_dyson_lower_zero_member x5 - 0189
specialize finite_modular_dyson_lower_zero_member x6 - 0190
specialize finite_modular_dyson_lower_zero_member p - 0191
specialize finite_modular_dyson_lower_zero_member x1 - 0192
apply finite_modular_dyson_lower_zero_member - 0193
cases htransform_witness_witness_witness_witness_witness_witness_right_right_right - 0194
exact htransform_witness_witness_witness_witness_witness_witness_right_right_right_right - 0195
exact hzero - 0196
exact hsource - 0197
have hnewcover : forall fms_i_cover fms_j_cover fms_s_cover. (exists fms_gap_cover_i. fms_gap_cover_i + S (fms_i_cover) = (p)) -> (exists fms_gap_cover_j. fms_gap_cover_j + S (fms_j_cover) = (p)) -> (exists fms_gap_cover_s. fms_gap_cover_s + S (fms_s_cover) = (p)) -> (((exists fs_h_fms_cover_left. fs_h_fms_cover_left + S (1) = S ((S (fms_i_cover)) * x4)) /\ exists fs_q_fms_cover_left. x3 = fs_q_fms_cover_left * S ((S (fms_i_cover)) * x4) + (1))) -> (((exists fs_h_fms_cover_right. fs_h_fms_cover_right + S (1) = S ((S (fms_j_cover)) * x6)) /\ exists fs_q_fms_cover_right. x5 = fs_q_fms_cover_right * S ((S (fms_j_cover)) * x6) + (1))) -> (exists fms_u_cover fms_v_cover. (fms_i_cover + fms_j_cover) + (p) * fms_u_cover = (fms_s_cover) + (p) * fms_v_cover) -> (((exists fs_h_fms_cover_result. fs_h_fms_cover_result + S (1) = S ((S (fms_s_cover)) * sc)) /\ exists fs_q_fms_cover_result. sb = fs_q_fms_cover_result * S ((S (fms_s_cover)) * sc) + (1))) - 0198
specialize finite_modular_dyson_sum_cover b - 0199
specialize finite_modular_dyson_sum_cover c - 0200
specialize finite_modular_dyson_sum_cover d - 0201
specialize finite_modular_dyson_sum_cover e - 0202
specialize finite_modular_dyson_sum_cover x3 - 0203
specialize finite_modular_dyson_sum_cover x4 - 0204
specialize finite_modular_dyson_sum_cover x5 - 0205
specialize finite_modular_dyson_sum_cover x6 - 0206
specialize finite_modular_dyson_sum_cover sb - 0207
specialize finite_modular_dyson_sum_cover sc - 0208
specialize finite_modular_dyson_sum_cover p - 0209
specialize finite_modular_dyson_sum_cover x1 - 0210
apply finite_modular_dyson_sum_cover - 0211
exact htransform_witness_witness_witness_witness_witness_witness_right_right_right - 0212
exact hcover - 0213
have hresult : ((exists fms_gap_cd_bound_full. fms_gap_cd_bound_full + (p) = (m)) \/ (exists fms_gap_cd_bound_sum. fms_gap_cd_bound_sum + (x7+x8) = (S (m)))) - 0214
specialize IH p - 0215
specialize IH x3 - 0216
specialize IH x4 - 0217
specialize IH x5 - 0218
specialize IH x6 - 0219
specialize IH sb - 0220
specialize IH sc - 0221
specialize IH x7 - 0222
specialize IH x8 - 0223
specialize IH m - 0224
apply IH - 0225
exact hprime - 0226
exact htransform_witness_witness_witness_witness_witness_witness_left - 0227
exact htransform_witness_witness_witness_witness_witness_witness_right_left - 0228
exact hS - 0229
exact hstrict_left - 0230
exact hzeroV - 0231
exact hnewcover - 0232
rewrite hcase_left at hstrict_right_right - 0233
exact hstrict_right_right - 0234
cases hresult - 0235
left - 0236
exact hresult_left - 0237
right - 0238
rewrite htransform_witness_witness_witness_witness_witness_witness_right_right_left at hresult_right - 0239
exact hresult_right - 0240
specialize IH p - 0241
specialize IH b - 0242
specialize IH c - 0243
specialize IH d - 0244
specialize IH e - 0245
specialize IH sb - 0246
specialize IH sc - 0247
specialize IH k - 0248
specialize IH l - 0249
specialize IH m - 0250
apply IH - 0251
exact hprime - 0252
exact hA - 0253
exact hB - 0254
exact hS - 0255
exact hk - 0256
exact hzero - 0257
exact hcover - 0258
exact hcase_right