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 p n t. ~(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))))) -> exists z d. (((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)) * (d))) /\ exists ff_q_fms_count_summand. (z) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (d)) + (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)) * (d))) /\ exists ff_q_fms_count_decoded. (z) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (d)) + (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 + t) + (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)) * d)) /\ exists fs_q_fms_pullback_target. z = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * d) + (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)) * d)) /\ exists fs_q_fms_pullback_target. z = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * d) + (1)))))))Constructive proof overview
Generated structural guide
Construct the genuine modular pullback set and prove its exact cardinality is unchanged by the finite permutation.
The unchanged tactic script uses 7 declared prerequisites and contains 88 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
CD001D finite_modular_translation_indices_exists CD001C finite_beta_composition_exists CD0020 finite_modular_composition_all_bits bit_count_exists Stable theorem; checked-use authorized CD001F finite_modular_translation_indices_permutation beta_sum_permutation_invariant Alpha theorem; checked-use authorized CD0021 finite_modular_composition_pullbackDirect 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 (5)
01Fix variables and assumptionsL1–7
02Establish hindicesL8–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular translation indices exists.
- L8
have hindices : exists r s. forall fms_i_indices. (exists fms_gap_indices. fms_gap_indices + S (fms_i_indices) = (p)) -> exists fms_j_indices. (((exists fs_h_fms_indices_entry. fs_h_fms_indices_entry + S (fms_j_indices) = S ((S (fms_i_indices)) * s)) /\ exists fs_q_fms_indices_entry. r = fs_q_fms_indices_entry * S ((S (fms_i_indices)) * s) + (fms_j_indices))) /\ ((exists fms_gap_indices_bound. fms_gap_indices_bound + S (fms_j_indices) = (p)) /\ (exists fms_u_indices fms_v_indices. (fms_i_indices+t) + (p) * fms_u_indices = (fms_j_indices) + (p) * fms_v_indices)) - L9
specialize finite_modular_translation_indices_exists p - L10
specialize finite_modular_translation_indices_exists t - L11
specialize finite_modular_translation_indices_exists p - L12
apply finite_modular_translation_indices_exists - L13
exact hp
03Separate the logical casesL14–15
04Establish hcomposeL16–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite beta composition exists.
05Separate the logical casesL23–24
06Establish hbitsL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular composition all bits.
- L25
have hbits : 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)) * (x3))) /\ exists ff_q_fms_bits_decoded. (x2) = ff_q_fms_bits_decoded * S ((S (ff_i_fms_bits)) * (x3)) + (ff_bit_fms_bits))) /\ (ff_bit_fms_bits = 0 \/ ff_bit_fms_bits = 1)) - L26
specialize finite_modular_composition_all_bits p - L27
specialize finite_modular_composition_all_bits t - L28
specialize finite_modular_composition_all_bits x - L29
specialize finite_modular_composition_all_bits x1 - L30
specialize finite_modular_composition_all_bits b - L31
specialize finite_modular_composition_all_bits c - L32
specialize finite_modular_composition_all_bits x2 - L33
specialize finite_modular_composition_all_bits x3 - L34
apply finite_modular_composition_all_bits
07Use earlier factsL35–36
08Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases hn
09Use earlier factsL38–38
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L38
exact hn_right
10Establish hmL39–44
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count exists.
11Separate the logical casesL45–45
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L45
cases hm
12Establish heL46–46
Establish this local claim before using it. It is not an additional assumption.
- L46
have he : n=x4
13Establish hpermutationL47–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular translation indices permutation.
- L47
- L48
specialize finite_modular_translation_indices_permutation p - L49
specialize finite_modular_translation_indices_permutation t - L50
specialize finite_modular_translation_indices_permutation x - L51
specialize finite_modular_translation_indices_permutation x1 - L52
apply finite_modular_translation_indices_permutation - L53
exact hindices_witness_witness
14Separate the logical casesL54–56
15Use earlier factsL57–66
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L57
specialize beta_sum_permutation_invariant p - L58
specialize beta_sum_permutation_invariant x - L59
specialize beta_sum_permutation_invariant x1 - L60
specialize beta_sum_permutation_invariant b - L61
specialize beta_sum_permutation_invariant c - L62
specialize beta_sum_permutation_invariant x2 - L63
specialize beta_sum_permutation_invariant x3 - L64
specialize beta_sum_permutation_invariant n - L65
specialize beta_sum_permutation_invariant x4 - L66
apply beta_sum_permutation_invariant
16Use earlier factsL67–71
17Construct an explicit witnessL72–73
18Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
split
19Calculate and transport equalitiesL75–76
20Use earlier factsL77–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L77
exact hm_witness - L78
specialize finite_modular_composition_pullback p - L79
specialize finite_modular_composition_pullback t - L80
specialize finite_modular_composition_pullback x - L81
specialize finite_modular_composition_pullback x1 - L82
specialize finite_modular_composition_pullback b - L83
specialize finite_modular_composition_pullback c - L84
specialize finite_modular_composition_pullback x2 - L85
specialize finite_modular_composition_pullback x3 - L86
apply finite_modular_composition_pullback
Original exact command ledger · 88 lines
- 0001
intro b - 0002
intro c - 0003
intro p - 0004
intro n - 0005
intro t - 0006
intro hp - 0007
intro hn - 0008
have hindices : exists r s. forall fms_i_indices. (exists fms_gap_indices. fms_gap_indices + S (fms_i_indices) = (p)) -> exists fms_j_indices. (((exists fs_h_fms_indices_entry. fs_h_fms_indices_entry + S (fms_j_indices) = S ((S (fms_i_indices)) * s)) /\ exists fs_q_fms_indices_entry. r = fs_q_fms_indices_entry * S ((S (fms_i_indices)) * s) + (fms_j_indices))) /\ ((exists fms_gap_indices_bound. fms_gap_indices_bound + S (fms_j_indices) = (p)) /\ (exists fms_u_indices fms_v_indices. (fms_i_indices+t) + (p) * fms_u_indices = (fms_j_indices) + (p) * fms_v_indices)) - 0009
specialize finite_modular_translation_indices_exists p - 0010
specialize finite_modular_translation_indices_exists t - 0011
specialize finite_modular_translation_indices_exists p - 0012
apply finite_modular_translation_indices_exists - 0013
exact hp - 0014
cases hindices - 0015
cases hindices_witness - 0016
have hcompose : exists z d. forall fms_i_compose fms_j_compose fms_v_compose. (exists fms_gap_compose. fms_gap_compose + S (fms_i_compose) = (p)) -> (((exists fs_h_fms_compose_index. fs_h_fms_compose_index + S (fms_j_compose) = S ((S (fms_i_compose)) * x1)) /\ exists fs_q_fms_compose_index. x = fs_q_fms_compose_index * S ((S (fms_i_compose)) * x1) + (fms_j_compose))) -> (((exists fs_h_fms_compose_source. fs_h_fms_compose_source + S (fms_v_compose) = S ((S (fms_j_compose)) * c)) /\ exists fs_q_fms_compose_source. b = fs_q_fms_compose_source * S ((S (fms_j_compose)) * c) + (fms_v_compose))) -> (((exists fs_h_fms_compose_target. fs_h_fms_compose_target + S (fms_v_compose) = S ((S (fms_i_compose)) * d)) /\ exists fs_q_fms_compose_target. z = fs_q_fms_compose_target * S ((S (fms_i_compose)) * d) + (fms_v_compose))) - 0017
specialize finite_beta_composition_exists x - 0018
specialize finite_beta_composition_exists x1 - 0019
specialize finite_beta_composition_exists b - 0020
specialize finite_beta_composition_exists c - 0021
specialize finite_beta_composition_exists p - 0022
apply finite_beta_composition_exists - 0023
cases hcompose - 0024
cases hcompose_witness - 0025
have hbits : 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)) * (x3))) /\ exists ff_q_fms_bits_decoded. (x2) = ff_q_fms_bits_decoded * S ((S (ff_i_fms_bits)) * (x3)) + (ff_bit_fms_bits))) /\ (ff_bit_fms_bits = 0 \/ ff_bit_fms_bits = 1)) - 0026
specialize finite_modular_composition_all_bits p - 0027
specialize finite_modular_composition_all_bits t - 0028
specialize finite_modular_composition_all_bits x - 0029
specialize finite_modular_composition_all_bits x1 - 0030
specialize finite_modular_composition_all_bits b - 0031
specialize finite_modular_composition_all_bits c - 0032
specialize finite_modular_composition_all_bits x2 - 0033
specialize finite_modular_composition_all_bits x3 - 0034
apply finite_modular_composition_all_bits - 0035
exact hindices_witness_witness - 0036
exact hcompose_witness_witness - 0037
cases hn - 0038
exact hn_right - 0039
have hm : exists 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)) * (x3))) /\ exists ff_q_fms_count_summand. (x2) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (x3)) + (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)) * (x3))) /\ exists ff_q_fms_count_decoded. (x2) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (x3)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1)))) - 0040
specialize bit_count_exists x2 - 0041
specialize bit_count_exists x3 - 0042
specialize bit_count_exists p - 0043
apply bit_count_exists - 0044
exact hbits - 0045
cases hm - 0046
have he : n=x4 - 0047
have hpermutation : (forall fp_i_fms_pull_bounded. (exists fp_gap_fms_pull_bounded_index. fp_gap_fms_pull_bounded_index + S fp_i_fms_pull_bounded = p) -> exists fp_value_fms_pull_bounded. ((((exists ff_h_fms_pull_bounded_entry. ff_h_fms_pull_bounded_entry + S (fp_value_fms_pull_bounded) = S ((S (fp_i_fms_pull_bounded)) * x1)) /\ exists ff_q_fms_pull_bounded_entry. x = ff_q_fms_pull_bounded_entry * S ((S (fp_i_fms_pull_bounded)) * x1) + (fp_value_fms_pull_bounded))) /\ (exists fp_gap_fms_pull_bounded_value. fp_gap_fms_pull_bounded_value + S fp_value_fms_pull_bounded = p))) /\ (forall fp_i_fms_pull_injective fp_j_fms_pull_injective fp_value_fms_pull_injective. (exists fp_gap_fms_pull_injective_i. fp_gap_fms_pull_injective_i + S fp_i_fms_pull_injective = p) -> (exists fp_gap_fms_pull_injective_j. fp_gap_fms_pull_injective_j + S fp_j_fms_pull_injective = p) -> (((exists ff_h_fms_pull_injective_left. ff_h_fms_pull_injective_left + S (fp_value_fms_pull_injective) = S ((S (fp_i_fms_pull_injective)) * x1)) /\ exists ff_q_fms_pull_injective_left. x = ff_q_fms_pull_injective_left * S ((S (fp_i_fms_pull_injective)) * x1) + (fp_value_fms_pull_injective))) -> (((exists ff_h_fms_pull_injective_right. ff_h_fms_pull_injective_right + S (fp_value_fms_pull_injective) = S ((S (fp_j_fms_pull_injective)) * x1)) /\ exists ff_q_fms_pull_injective_right. x = ff_q_fms_pull_injective_right * S ((S (fp_j_fms_pull_injective)) * x1) + (fp_value_fms_pull_injective))) -> fp_i_fms_pull_injective = fp_j_fms_pull_injective) - 0048
specialize finite_modular_translation_indices_permutation p - 0049
specialize finite_modular_translation_indices_permutation t - 0050
specialize finite_modular_translation_indices_permutation x - 0051
specialize finite_modular_translation_indices_permutation x1 - 0052
apply finite_modular_translation_indices_permutation - 0053
exact hindices_witness_witness - 0054
cases hpermutation - 0055
cases hn - 0056
cases hm_witness - 0057
specialize beta_sum_permutation_invariant p - 0058
specialize beta_sum_permutation_invariant x - 0059
specialize beta_sum_permutation_invariant x1 - 0060
specialize beta_sum_permutation_invariant b - 0061
specialize beta_sum_permutation_invariant c - 0062
specialize beta_sum_permutation_invariant x2 - 0063
specialize beta_sum_permutation_invariant x3 - 0064
specialize beta_sum_permutation_invariant n - 0065
specialize beta_sum_permutation_invariant x4 - 0066
apply beta_sum_permutation_invariant - 0067
exact hpermutation_left - 0068
exact hpermutation_right - 0069
exact hcompose_witness_witness - 0070
exact hn_left - 0071
exact hm_witness_left - 0072
exists x2 - 0073
exists x3 - 0074
split - 0075
rewrite he - 0076
rewrite he - 0077
exact hm_witness - 0078
specialize finite_modular_composition_pullback p - 0079
specialize finite_modular_composition_pullback t - 0080
specialize finite_modular_composition_pullback x - 0081
specialize finite_modular_composition_pullback x1 - 0082
specialize finite_modular_composition_pullback b - 0083
specialize finite_modular_composition_pullback c - 0084
specialize finite_modular_composition_pullback x2 - 0085
specialize finite_modular_composition_pullback x3 - 0086
apply finite_modular_composition_pullback - 0087
exact hindices_witness_witness - 0088
exact hcompose_witness_witness