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 b c d e p n l. ~(p=0) -> (((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 ((n)) = 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) + ((n)))) /\ 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))))) -> (forall ff_i_fms_bits. (exists ff_lt_fms_bits_bound. ff_lt_fms_bits_bound + S ff_i_fms_bits = (p)) -> exists ff_bit_fms_bits. ((((exists ff_h_fms_bits_decoded. ff_h_fms_bits_decoded + S (ff_bit_fms_bits) = S ((S (ff_i_fms_bits)) * (e))) /\ exists ff_q_fms_bits_decoded. (d) = ff_q_fms_bits_decoded * S ((S (ff_i_fms_bits)) * (e)) + (ff_bit_fms_bits))) /\ (ff_bit_fms_bits = 0 \/ ff_bit_fms_bits = 1))) -> (exists fms_gap_le. fms_gap_le + (l) = (p)) -> exists u v m. (((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)) * (v))) /\ exists ff_q_fms_count_summand. (u) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (v)) + (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)) * (v))) /\ exists ff_q_fms_count_decoded. (u) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (v)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) /\ (forall fms_z_partial. (exists fms_gap_partial_bound. fms_gap_partial_bound + S (fms_z_partial) = (p)) -> ((((((exists fs_h_fms_partial_result. fs_h_fms_partial_result + S (1) = S ((S (fms_z_partial)) * v)) /\ exists fs_q_fms_partial_result. u = fs_q_fms_partial_result * S ((S (fms_z_partial)) * v) + (1))) -> (exists fms_first_partial fms_second_partial. (((exists fms_gap_partial_left. fms_gap_partial_left + S (fms_first_partial) = (p)) /\ (((exists fs_h_fms_partial_left. fs_h_fms_partial_left + S (1) = S ((S (fms_first_partial)) * c)) /\ exists fs_q_fms_partial_left. b = fs_q_fms_partial_left * S ((S (fms_first_partial)) * c) + (1))))) /\ ((((exists fms_gap_partial_right. fms_gap_partial_right + S (fms_second_partial) = (p)) /\ (((exists fs_h_fms_partial_right. fs_h_fms_partial_right + S (1) = S ((S (fms_second_partial)) * e)) /\ exists fs_q_fms_partial_right. d = fs_q_fms_partial_right * S ((S (fms_second_partial)) * e) + (1))))) /\ ((exists fms_gap_partial_cutoff. fms_gap_partial_cutoff + S (fms_second_partial) = (l)) /\ (exists fms_u_partial_congruence fms_v_partial_congruence. (fms_first_partial+fms_second_partial) + (p) * fms_u_partial_congruence = (fms_z_partial) + (p) * fms_v_partial_congruence))))) /\ ((exists fms_first_partial fms_second_partial. (((exists fms_gap_partial_left. fms_gap_partial_left + S (fms_first_partial) = (p)) /\ (((exists fs_h_fms_partial_left. fs_h_fms_partial_left + S (1) = S ((S (fms_first_partial)) * c)) /\ exists fs_q_fms_partial_left. b = fs_q_fms_partial_left * S ((S (fms_first_partial)) * c) + (1))))) /\ ((((exists fms_gap_partial_right. fms_gap_partial_right + S (fms_second_partial) = (p)) /\ (((exists fs_h_fms_partial_right. fs_h_fms_partial_right + S (1) = S ((S (fms_second_partial)) * e)) /\ exists fs_q_fms_partial_right. d = fs_q_fms_partial_right * S ((S (fms_second_partial)) * e) + (1))))) /\ ((exists fms_gap_partial_cutoff. fms_gap_partial_cutoff + S (fms_second_partial) = (l)) /\ (exists fms_u_partial_congruence fms_v_partial_congruence. (fms_first_partial+fms_second_partial) + (p) * fms_u_partial_congruence = (fms_z_partial) + (p) * fms_v_partial_congruence)))) -> (((exists fs_h_fms_partial_result. fs_h_fms_partial_result + S (1) = S ((S (fms_z_partial)) * v)) /\ exists fs_q_fms_partial_result. u = fs_q_fms_partial_result * S ((S (fms_z_partial)) * v) + (1)))))))Constructive proof overview
Generated structural guide
Genuine finite induction constructs every bounded prefix of the exact modular sumset, including all beta codes and cardinality traces.
The unchanged tactic script uses 10 declared prerequisites and contains 127 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
CD002B finite_bit_empty_count CD002C finite_partial_sumset_empty le_trans Stable theorem; checked-use authorized le_succ_self Stable theorem; checked-use authorized CD0002 finite_bit_membership_decidable CD0025 finite_modular_additive_complement CD0022 finite_modular_set_pullback_exists CD0016 finite_bit_union_exists CD002E finite_partial_sumset_succ_present CD002D finite_partial_sumset_succ_absentDirect 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 (8)
01Fix variables and assumptionsL1–6
02Induction on lL7–11
03Construct an explicit witnessL12–14
04Separate the logical casesL15–15
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L15
split
05Use earlier factsL16–23
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L16
specialize finite_bit_empty_count p - L17
apply finite_bit_empty_count - L18
specialize finite_partial_sumset_empty b - L19
specialize finite_partial_sumset_empty c - L20
specialize finite_partial_sumset_empty d - L21
specialize finite_partial_sumset_empty e - L22
specialize finite_partial_sumset_empty p - L23
apply finite_partial_sumset_empty
06Fix variables and assumptionsL24–27
07Establish hprefixL28–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L28
have hprefix : ∃ u. ∃ v. ∃ m. BitCount(u,v,p,m) ∧ (∀ x. Lt(x,p) → (BetaAt(u,v,x,1) → ∃ y. ∃ z. ModularSetMember(b,c,p,y) ∧ (ModularSetMember(d,e,p,z) ∧ (Lt(z,l) ∧ ModEq(p,y + z,x)))) ∧ ((∃ y. ∃ z. ModularSetMember(b,c,p,y) ∧ (ModularSetMember(d,e,p,z) ∧ (Lt(z,l) ∧ ModEq(p,y + z,x)))) → BetaAt(u,v,x,1)))Definitions: ModularSetMemberLtModEqBetaAtBitCount - L29
apply IH - L30
exact hp - L31
exact hA - L32
exact hbitsB - L33
specialize le_trans l - L34
specialize le_trans S l - L35
specialize le_trans p - L36
apply le_trans - L37
specialize le_succ_self l
08Use earlier factsL38–39
09Separate the logical casesL40–43
10Establish hdecL44–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite bit membership decidable.
- L44
have hdec : (((exists fs_h_fms_sumset_last. fs_h_fms_sumset_last + S (1) = S ((S (l)) * e)) /\ exists fs_q_fms_sumset_last. d = fs_q_fms_sumset_last * S ((S (l)) * e) + (1))) \/ ~(((exists fs_h_fms_sumset_last. fs_h_fms_sumset_last + S (1) = S ((S (l)) * e)) /\ exists fs_q_fms_sumset_last. d = fs_q_fms_sumset_last * S ((S (l)) * e) + (1))) - L45
specialize finite_bit_membership_decidable d - L46
specialize finite_bit_membership_decidable e - L47
specialize finite_bit_membership_decidable p - L48
specialize finite_bit_membership_decidable l - L49
apply finite_bit_membership_decidable - L50
exact hbitsB - L51
exact hbound
11Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
cases hdec
12Establish hdL53–57
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular additive complement.
13Separate the logical casesL58–58
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L58
cases hd
14Establish htranslateL59–67
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular set pullback exists.
- L59
have htranslate : ∃ u. ∃ v. BitCount(u,v,p,n) ∧ ModularSetPullback(b,c,u,v,p,x3)Definitions: ModularSetPullbackBitCount - L60
specialize finite_modular_set_pullback_exists b - L61
specialize finite_modular_set_pullback_exists c - L62
specialize finite_modular_set_pullback_exists p - L63
specialize finite_modular_set_pullback_exists n - L64
specialize finite_modular_set_pullback_exists x3 - L65
apply finite_modular_set_pullback_exists - L66
exact hp - L67
exact hA
15Separate the logical casesL68–70
16Establish hunionL71–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite bit union exists.
- L71
have hunion : ∃ u. ∃ v. ∃ m. BitCount(u,v,p,m) ∧ ModularSetUnion(x,x1,x4,x5,u,v,p)Definitions: ModularSetUnionBitCount - L72
specialize finite_bit_union_exists x - L73
specialize finite_bit_union_exists x1 - L74
specialize finite_bit_union_exists x4 - L75
specialize finite_bit_union_exists x5 - L76
specialize finite_bit_union_exists p - L77
specialize finite_bit_union_exists x2 - L78
specialize finite_bit_union_exists n - L79
apply finite_bit_union_exists - L80
exact hprefix_witness_witness_witness_left
17Use earlier factsL81–81
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L81
exact htranslate_witness_witness_left
18Separate the logical casesL82–85
19Construct an explicit witnessL86–88
20Separate the logical casesL89–89
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L89
split
21Use earlier factsL90–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L90
exact hunion_witness_witness_witness_left - L91
specialize finite_partial_sumset_succ_present b - L92
specialize finite_partial_sumset_succ_present c - L93
specialize finite_partial_sumset_succ_present d - L94
specialize finite_partial_sumset_succ_present e - L95
specialize finite_partial_sumset_succ_present x - L96
specialize finite_partial_sumset_succ_present x1 - L97
specialize finite_partial_sumset_succ_present x4 - L98
specialize finite_partial_sumset_succ_present x5 - L99
specialize finite_partial_sumset_succ_present x6
22Use earlier factsL100–109
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L100
specialize finite_partial_sumset_succ_present x7 - L101
specialize finite_partial_sumset_succ_present p - L102
specialize finite_partial_sumset_succ_present l - L103
specialize finite_partial_sumset_succ_present x3 - L104
apply finite_partial_sumset_succ_present - L105
exact hp - L106
exact hbound - L107
exact hd_witness - L108
exact hdec_left - L109
exact hprefix_witness_witness_witness_right
23Use earlier factsL110–111
24Construct an explicit witnessL112–114
25Separate the logical casesL115–115
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L115
split
26Use earlier factsL116–125
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L116
exact hprefix_witness_witness_witness_left - L117
specialize finite_partial_sumset_succ_absent b - L118
specialize finite_partial_sumset_succ_absent c - L119
specialize finite_partial_sumset_succ_absent d - L120
specialize finite_partial_sumset_succ_absent e - L121
specialize finite_partial_sumset_succ_absent x - L122
specialize finite_partial_sumset_succ_absent x1 - L123
specialize finite_partial_sumset_succ_absent p - L124
specialize finite_partial_sumset_succ_absent l - L125
apply finite_partial_sumset_succ_absent
Original exact command ledger · 127 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
intro p - 0006
intro n - 0007
induction l - 0008
intro hp - 0009
intro hA - 0010
intro hbitsB - 0011
intro hl - 0012
exists 0 - 0013
exists 0 - 0014
exists 0 - 0015
split - 0016
specialize finite_bit_empty_count p - 0017
apply finite_bit_empty_count - 0018
specialize finite_partial_sumset_empty b - 0019
specialize finite_partial_sumset_empty c - 0020
specialize finite_partial_sumset_empty d - 0021
specialize finite_partial_sumset_empty e - 0022
specialize finite_partial_sumset_empty p - 0023
apply finite_partial_sumset_empty - 0024
intro hp - 0025
intro hA - 0026
intro hbitsB - 0027
intro hbound - 0028
have hprefix : exists u v m. (((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)) * (v))) /\ exists ff_q_fms_count_summand. (u) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (v)) + (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)) * (v))) /\ exists ff_q_fms_count_decoded. (u) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (v)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) /\ (forall fms_z_partial. (exists fms_gap_partial_bound. fms_gap_partial_bound + S (fms_z_partial) = (p)) -> ((((((exists fs_h_fms_partial_result. fs_h_fms_partial_result + S (1) = S ((S (fms_z_partial)) * v)) /\ exists fs_q_fms_partial_result. u = fs_q_fms_partial_result * S ((S (fms_z_partial)) * v) + (1))) -> (exists fms_first_partial fms_second_partial. (((exists fms_gap_partial_left. fms_gap_partial_left + S (fms_first_partial) = (p)) /\ (((exists fs_h_fms_partial_left. fs_h_fms_partial_left + S (1) = S ((S (fms_first_partial)) * c)) /\ exists fs_q_fms_partial_left. b = fs_q_fms_partial_left * S ((S (fms_first_partial)) * c) + (1))))) /\ ((((exists fms_gap_partial_right. fms_gap_partial_right + S (fms_second_partial) = (p)) /\ (((exists fs_h_fms_partial_right. fs_h_fms_partial_right + S (1) = S ((S (fms_second_partial)) * e)) /\ exists fs_q_fms_partial_right. d = fs_q_fms_partial_right * S ((S (fms_second_partial)) * e) + (1))))) /\ ((exists fms_gap_partial_cutoff. fms_gap_partial_cutoff + S (fms_second_partial) = (l)) /\ (exists fms_u_partial_congruence fms_v_partial_congruence. (fms_first_partial+fms_second_partial) + (p) * fms_u_partial_congruence = (fms_z_partial) + (p) * fms_v_partial_congruence))))) /\ ((exists fms_first_partial fms_second_partial. (((exists fms_gap_partial_left. fms_gap_partial_left + S (fms_first_partial) = (p)) /\ (((exists fs_h_fms_partial_left. fs_h_fms_partial_left + S (1) = S ((S (fms_first_partial)) * c)) /\ exists fs_q_fms_partial_left. b = fs_q_fms_partial_left * S ((S (fms_first_partial)) * c) + (1))))) /\ ((((exists fms_gap_partial_right. fms_gap_partial_right + S (fms_second_partial) = (p)) /\ (((exists fs_h_fms_partial_right. fs_h_fms_partial_right + S (1) = S ((S (fms_second_partial)) * e)) /\ exists fs_q_fms_partial_right. d = fs_q_fms_partial_right * S ((S (fms_second_partial)) * e) + (1))))) /\ ((exists fms_gap_partial_cutoff. fms_gap_partial_cutoff + S (fms_second_partial) = (l)) /\ (exists fms_u_partial_congruence fms_v_partial_congruence. (fms_first_partial+fms_second_partial) + (p) * fms_u_partial_congruence = (fms_z_partial) + (p) * fms_v_partial_congruence)))) -> (((exists fs_h_fms_partial_result. fs_h_fms_partial_result + S (1) = S ((S (fms_z_partial)) * v)) /\ exists fs_q_fms_partial_result. u = fs_q_fms_partial_result * S ((S (fms_z_partial)) * v) + (1))))))) - 0029
apply IH - 0030
exact hp - 0031
exact hA - 0032
exact hbitsB - 0033
specialize le_trans l - 0034
specialize le_trans S l - 0035
specialize le_trans p - 0036
apply le_trans - 0037
specialize le_succ_self l - 0038
apply le_succ_self - 0039
exact hbound - 0040
cases hprefix - 0041
cases hprefix_witness - 0042
cases hprefix_witness_witness - 0043
cases hprefix_witness_witness_witness - 0044
have hdec : (((exists fs_h_fms_sumset_last. fs_h_fms_sumset_last + S (1) = S ((S (l)) * e)) /\ exists fs_q_fms_sumset_last. d = fs_q_fms_sumset_last * S ((S (l)) * e) + (1))) \/ ~(((exists fs_h_fms_sumset_last. fs_h_fms_sumset_last + S (1) = S ((S (l)) * e)) /\ exists fs_q_fms_sumset_last. d = fs_q_fms_sumset_last * S ((S (l)) * e) + (1))) - 0045
specialize finite_bit_membership_decidable d - 0046
specialize finite_bit_membership_decidable e - 0047
specialize finite_bit_membership_decidable p - 0048
specialize finite_bit_membership_decidable l - 0049
apply finite_bit_membership_decidable - 0050
exact hbitsB - 0051
exact hbound - 0052
cases hdec - 0053
have hd : exists v. l+v=p - 0054
specialize finite_modular_additive_complement p - 0055
specialize finite_modular_additive_complement l - 0056
apply finite_modular_additive_complement - 0057
exact hbound - 0058
cases hd - 0059
have htranslate : exists u v. (((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 ((n)) = 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) + ((n)))) /\ 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)) * (v))) /\ exists ff_q_fms_count_summand. (u) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (v)) + (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)) * (v))) /\ exists ff_q_fms_count_decoded. (u) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (v)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) /\ (forall fms_i_pullback fms_j_pullback. (exists fms_gap_pullback_i. fms_gap_pullback_i + S (fms_i_pullback) = (p)) -> (exists fms_gap_pullback_j. fms_gap_pullback_j + S (fms_j_pullback) = (p)) -> (exists fms_u_pullback fms_v_pullback. (fms_i_pullback + x3) + (p) * fms_u_pullback = (fms_j_pullback) + (p) * fms_v_pullback) -> ((((((exists fs_h_fms_pullback_target. fs_h_fms_pullback_target + S (1) = S ((S (fms_i_pullback)) * v)) /\ exists fs_q_fms_pullback_target. u = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * v) + (1))) -> (((exists fs_h_fms_pullback_source. fs_h_fms_pullback_source + S (1) = S ((S (fms_j_pullback)) * c)) /\ exists fs_q_fms_pullback_source. b = fs_q_fms_pullback_source * S ((S (fms_j_pullback)) * c) + (1)))) /\ ((((exists fs_h_fms_pullback_source. fs_h_fms_pullback_source + S (1) = S ((S (fms_j_pullback)) * c)) /\ exists fs_q_fms_pullback_source. b = fs_q_fms_pullback_source * S ((S (fms_j_pullback)) * c) + (1))) -> (((exists fs_h_fms_pullback_target. fs_h_fms_pullback_target + S (1) = S ((S (fms_i_pullback)) * v)) /\ exists fs_q_fms_pullback_target. u = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * v) + (1))))))) - 0060
specialize finite_modular_set_pullback_exists b - 0061
specialize finite_modular_set_pullback_exists c - 0062
specialize finite_modular_set_pullback_exists p - 0063
specialize finite_modular_set_pullback_exists n - 0064
specialize finite_modular_set_pullback_exists x3 - 0065
apply finite_modular_set_pullback_exists - 0066
exact hp - 0067
exact hA - 0068
cases htranslate - 0069
cases htranslate_witness - 0070
cases htranslate_witness_witness - 0071
have hunion : exists u v m. (((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)) * (v))) /\ exists ff_q_fms_count_summand. (u) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (v)) + (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)) * (v))) /\ exists ff_q_fms_count_decoded. (u) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (v)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) /\ (forall fms_i_binary. (exists fms_gap_binary. fms_gap_binary + S (fms_i_binary) = (p)) -> ((((((exists fs_h_fms_binary_result. fs_h_fms_binary_result + S (1) = S ((S (fms_i_binary)) * v)) /\ exists fs_q_fms_binary_result. u = fs_q_fms_binary_result * S ((S (fms_i_binary)) * v) + (1))) -> (((((exists fs_h_fms_binary_left. fs_h_fms_binary_left + S (1) = S ((S (fms_i_binary)) * x1)) /\ exists fs_q_fms_binary_left. x = fs_q_fms_binary_left * S ((S (fms_i_binary)) * x1) + (1))) \/ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * x5)) /\ exists fs_q_fms_binary_right. x4 = fs_q_fms_binary_right * S ((S (fms_i_binary)) * x5) + (1)))))) /\ ((((((exists fs_h_fms_binary_left. fs_h_fms_binary_left + S (1) = S ((S (fms_i_binary)) * x1)) /\ exists fs_q_fms_binary_left. x = fs_q_fms_binary_left * S ((S (fms_i_binary)) * x1) + (1))) \/ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * x5)) /\ exists fs_q_fms_binary_right. x4 = fs_q_fms_binary_right * S ((S (fms_i_binary)) * x5) + (1))))) -> (((exists fs_h_fms_binary_result. fs_h_fms_binary_result + S (1) = S ((S (fms_i_binary)) * v)) /\ exists fs_q_fms_binary_result. u = fs_q_fms_binary_result * S ((S (fms_i_binary)) * v) + (1))))))) - 0072
specialize finite_bit_union_exists x - 0073
specialize finite_bit_union_exists x1 - 0074
specialize finite_bit_union_exists x4 - 0075
specialize finite_bit_union_exists x5 - 0076
specialize finite_bit_union_exists p - 0077
specialize finite_bit_union_exists x2 - 0078
specialize finite_bit_union_exists n - 0079
apply finite_bit_union_exists - 0080
exact hprefix_witness_witness_witness_left - 0081
exact htranslate_witness_witness_left - 0082
cases hunion - 0083
cases hunion_witness - 0084
cases hunion_witness_witness - 0085
cases hunion_witness_witness_witness - 0086
exists x6 - 0087
exists x7 - 0088
exists x8 - 0089
split - 0090
exact hunion_witness_witness_witness_left - 0091
specialize finite_partial_sumset_succ_present b - 0092
specialize finite_partial_sumset_succ_present c - 0093
specialize finite_partial_sumset_succ_present d - 0094
specialize finite_partial_sumset_succ_present e - 0095
specialize finite_partial_sumset_succ_present x - 0096
specialize finite_partial_sumset_succ_present x1 - 0097
specialize finite_partial_sumset_succ_present x4 - 0098
specialize finite_partial_sumset_succ_present x5 - 0099
specialize finite_partial_sumset_succ_present x6 - 0100
specialize finite_partial_sumset_succ_present x7 - 0101
specialize finite_partial_sumset_succ_present p - 0102
specialize finite_partial_sumset_succ_present l - 0103
specialize finite_partial_sumset_succ_present x3 - 0104
apply finite_partial_sumset_succ_present - 0105
exact hp - 0106
exact hbound - 0107
exact hd_witness - 0108
exact hdec_left - 0109
exact hprefix_witness_witness_witness_right - 0110
exact htranslate_witness_witness_right - 0111
exact hunion_witness_witness_witness_right - 0112
exists x - 0113
exists x1 - 0114
exists x2 - 0115
split - 0116
exact hprefix_witness_witness_witness_left - 0117
specialize finite_partial_sumset_succ_absent b - 0118
specialize finite_partial_sumset_succ_absent c - 0119
specialize finite_partial_sumset_succ_absent d - 0120
specialize finite_partial_sumset_succ_absent e - 0121
specialize finite_partial_sumset_succ_absent x - 0122
specialize finite_partial_sumset_succ_absent x1 - 0123
specialize finite_partial_sumset_succ_absent p - 0124
specialize finite_partial_sumset_succ_absent l - 0125
apply finite_partial_sumset_succ_absent - 0126
exact hprefix_witness_witness_witness_right - 0127
exact hdec_right