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 l x. (forall gcrt_positive_index_product_nonzero_source gcrt_positive_value_product_nonzero_source. (exists ff_lt_gcrt_product_nonzero_source_bound. ff_lt_gcrt_product_nonzero_source_bound + S gcrt_positive_index_product_nonzero_source = l) -> (((exists ff_h_gcrt_product_nonzero_source_entry. ff_h_gcrt_product_nonzero_source_entry + S (gcrt_positive_value_product_nonzero_source) = S ((S (gcrt_positive_index_product_nonzero_source)) * c)) /\ exists ff_q_gcrt_product_nonzero_source_entry. b = ff_q_gcrt_product_nonzero_source_entry * S ((S (gcrt_positive_index_product_nonzero_source)) * c) + (gcrt_positive_value_product_nonzero_source))) -> ~(gcrt_positive_value_product_nonzero_source = 0)) -> (exists ff_u_gcrt_product_nonzero ff_v_gcrt_product_nonzero. ((((exists ff_h_gcrt_product_nonzero_start. ff_h_gcrt_product_nonzero_start + S (1) = S ((S (0)) * ff_v_gcrt_product_nonzero)) /\ exists ff_q_gcrt_product_nonzero_start. ff_u_gcrt_product_nonzero = ff_q_gcrt_product_nonzero_start * S ((S (0)) * ff_v_gcrt_product_nonzero) + (1))) /\ ((((exists ff_h_gcrt_product_nonzero_terminal. ff_h_gcrt_product_nonzero_terminal + S (x) = S ((S (l)) * ff_v_gcrt_product_nonzero)) /\ exists ff_q_gcrt_product_nonzero_terminal. ff_u_gcrt_product_nonzero = ff_q_gcrt_product_nonzero_terminal * S ((S (l)) * ff_v_gcrt_product_nonzero) + (x))) /\ forall ff_i_gcrt_product_nonzero. (exists ff_lt_gcrt_product_nonzero_bound. ff_lt_gcrt_product_nonzero_bound + S ff_i_gcrt_product_nonzero = l) -> exists ff_p_gcrt_product_nonzero ff_r_gcrt_product_nonzero ff_s_gcrt_product_nonzero. ((((exists ff_h_gcrt_product_nonzero_factor. ff_h_gcrt_product_nonzero_factor + S (ff_p_gcrt_product_nonzero) = S ((S (ff_i_gcrt_product_nonzero)) * c)) /\ exists ff_q_gcrt_product_nonzero_factor. b = ff_q_gcrt_product_nonzero_factor * S ((S (ff_i_gcrt_product_nonzero)) * c) + (ff_p_gcrt_product_nonzero))) /\ ((((exists ff_h_gcrt_product_nonzero_partial. ff_h_gcrt_product_nonzero_partial + S (ff_r_gcrt_product_nonzero) = S ((S (ff_i_gcrt_product_nonzero)) * ff_v_gcrt_product_nonzero)) /\ exists ff_q_gcrt_product_nonzero_partial. ff_u_gcrt_product_nonzero = ff_q_gcrt_product_nonzero_partial * S ((S (ff_i_gcrt_product_nonzero)) * ff_v_gcrt_product_nonzero) + (ff_r_gcrt_product_nonzero))) /\ ((((exists ff_h_gcrt_product_nonzero_successor. ff_h_gcrt_product_nonzero_successor + S (ff_s_gcrt_product_nonzero) = S ((S (S ff_i_gcrt_product_nonzero)) * ff_v_gcrt_product_nonzero)) /\ exists ff_q_gcrt_product_nonzero_successor. ff_u_gcrt_product_nonzero = ff_q_gcrt_product_nonzero_successor * S ((S (S ff_i_gcrt_product_nonzero)) * ff_v_gcrt_product_nonzero) + (ff_s_gcrt_product_nonzero))) /\ ff_s_gcrt_product_nonzero = ff_r_gcrt_product_nonzero * ff_p_gcrt_product_nonzero)))))) -> ~(x = 0)Constructive proof overview
Generated structural guide
A genuine beta-coded product of an arbitrary positive finite modulus list is nonzero.
The unchanged tactic script uses 6 declared prerequisites and contains 62 exact native proof lines.
Alpha v34 checked-use · first admitted v24 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_product_zero Stable theorem; checked-use authorized succ_ne_zero Stable theorem; checked-use authorized beta_product_succ_decompose Stable theorem; checked-use authorized CR0002 crt_positive_moduli_prefix_drop_last CR0003 crt_positive_moduli_prefix_last_nonzero mul_ne_zero 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 (2)
01Fix variables and assumptionsL1–2
02Induction on lL3–7
03Establish hunitL8–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product zero.
04Fix variables and assumptionsL18–21
05Establish hdecompositionL22–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
06Separate the logical casesL29–32
07Establish hrestrictedL33–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt positive moduli prefix drop last.
- L33
have hrestricted : CRTPositiveModuliPrefix(b,c,l)Definitions: CRTPositiveModuliPrefix - L34
specialize crt_positive_moduli_prefix_drop_last b - L35
specialize crt_positive_moduli_prefix_drop_last c - L36
specialize crt_positive_moduli_prefix_drop_last l - L37
apply crt_positive_moduli_prefix_drop_last - L38
exact hpositive
08Establish hprefix_nonzeroL39–45
09Establish hlast_nonzeroL46–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt positive moduli prefix last nonzero.
- L46
have hlast_nonzero : ~(x1 = 0) - L47
specialize crt_positive_moduli_prefix_last_nonzero b - L48
specialize crt_positive_moduli_prefix_last_nonzero c - L49
specialize crt_positive_moduli_prefix_last_nonzero l - L50
specialize crt_positive_moduli_prefix_last_nonzero x1 - L51
intro hlast_zero - L52
apply crt_positive_moduli_prefix_last_nonzero - L53
exact hpositive - L54
exact hdecomposition_witness_witness_left - L55
exact hlast_zero
10Calculate and transport equalitiesL56–56
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L56
rewrite hdecomposition_witness_witness_right_right at hzero
Original exact command ledger · 62 lines
- 0001
intro b - 0002
intro c - 0003
induction l - 0004
intro x - 0005
intro hpositive - 0006
intro hproduct - 0007
intro hzero - 0008
have hunit : x = 1 - 0009
specialize beta_product_zero b - 0010
specialize beta_product_zero c - 0011
specialize beta_product_zero x - 0012
apply beta_product_zero - 0013
exact hproduct - 0014
rewrite hunit at hzero - 0015
specialize succ_ne_zero 0 - 0016
apply succ_ne_zero - 0017
exact hzero - 0018
intro x - 0019
intro hpositive - 0020
intro hproduct - 0021
intro hzero - 0022
have hdecomposition : exists p q. ((((exists ff_h_gcrt_nonzero_decompose_last. ff_h_gcrt_nonzero_decompose_last + S (p) = S ((S (l)) * c)) /\ exists ff_q_gcrt_nonzero_decompose_last. b = ff_q_gcrt_nonzero_decompose_last * S ((S (l)) * c) + (p))) /\ ((exists ff_u_gcrt_nonzero_decompose_prefix ff_v_gcrt_nonzero_decompose_prefix. ((((exists ff_h_gcrt_nonzero_decompose_prefix_start. ff_h_gcrt_nonzero_decompose_prefix_start + S (1) = S ((S (0)) * ff_v_gcrt_nonzero_decompose_prefix)) /\ exists ff_q_gcrt_nonzero_decompose_prefix_start. ff_u_gcrt_nonzero_decompose_prefix = ff_q_gcrt_nonzero_decompose_prefix_start * S ((S (0)) * ff_v_gcrt_nonzero_decompose_prefix) + (1))) /\ ((((exists ff_h_gcrt_nonzero_decompose_prefix_terminal. ff_h_gcrt_nonzero_decompose_prefix_terminal + S (q) = S ((S (l)) * ff_v_gcrt_nonzero_decompose_prefix)) /\ exists ff_q_gcrt_nonzero_decompose_prefix_terminal. ff_u_gcrt_nonzero_decompose_prefix = ff_q_gcrt_nonzero_decompose_prefix_terminal * S ((S (l)) * ff_v_gcrt_nonzero_decompose_prefix) + (q))) /\ forall ff_i_gcrt_nonzero_decompose_prefix. (exists ff_lt_gcrt_nonzero_decompose_prefix_bound. ff_lt_gcrt_nonzero_decompose_prefix_bound + S ff_i_gcrt_nonzero_decompose_prefix = l) -> exists ff_p_gcrt_nonzero_decompose_prefix ff_r_gcrt_nonzero_decompose_prefix ff_s_gcrt_nonzero_decompose_prefix. ((((exists ff_h_gcrt_nonzero_decompose_prefix_factor. ff_h_gcrt_nonzero_decompose_prefix_factor + S (ff_p_gcrt_nonzero_decompose_prefix) = S ((S (ff_i_gcrt_nonzero_decompose_prefix)) * c)) /\ exists ff_q_gcrt_nonzero_decompose_prefix_factor. b = ff_q_gcrt_nonzero_decompose_prefix_factor * S ((S (ff_i_gcrt_nonzero_decompose_prefix)) * c) + (ff_p_gcrt_nonzero_decompose_prefix))) /\ ((((exists ff_h_gcrt_nonzero_decompose_prefix_partial. ff_h_gcrt_nonzero_decompose_prefix_partial + S (ff_r_gcrt_nonzero_decompose_prefix) = S ((S (ff_i_gcrt_nonzero_decompose_prefix)) * ff_v_gcrt_nonzero_decompose_prefix)) /\ exists ff_q_gcrt_nonzero_decompose_prefix_partial. ff_u_gcrt_nonzero_decompose_prefix = ff_q_gcrt_nonzero_decompose_prefix_partial * S ((S (ff_i_gcrt_nonzero_decompose_prefix)) * ff_v_gcrt_nonzero_decompose_prefix) + (ff_r_gcrt_nonzero_decompose_prefix))) /\ ((((exists ff_h_gcrt_nonzero_decompose_prefix_successor. ff_h_gcrt_nonzero_decompose_prefix_successor + S (ff_s_gcrt_nonzero_decompose_prefix) = S ((S (S ff_i_gcrt_nonzero_decompose_prefix)) * ff_v_gcrt_nonzero_decompose_prefix)) /\ exists ff_q_gcrt_nonzero_decompose_prefix_successor. ff_u_gcrt_nonzero_decompose_prefix = ff_q_gcrt_nonzero_decompose_prefix_successor * S ((S (S ff_i_gcrt_nonzero_decompose_prefix)) * ff_v_gcrt_nonzero_decompose_prefix) + (ff_s_gcrt_nonzero_decompose_prefix))) /\ ff_s_gcrt_nonzero_decompose_prefix = ff_r_gcrt_nonzero_decompose_prefix * ff_p_gcrt_nonzero_decompose_prefix)))))) /\ x = q * p)) - 0023
specialize beta_product_succ_decompose b - 0024
specialize beta_product_succ_decompose c - 0025
specialize beta_product_succ_decompose l - 0026
specialize beta_product_succ_decompose x - 0027
apply beta_product_succ_decompose - 0028
exact hproduct - 0029
cases hdecomposition - 0030
cases hdecomposition_witness - 0031
cases hdecomposition_witness_witness - 0032
cases hdecomposition_witness_witness_right - 0033
have hrestricted : forall gcrt_positive_index_product_nonzero_restricted gcrt_positive_value_product_nonzero_restricted. (exists ff_lt_gcrt_product_nonzero_restricted_bound. ff_lt_gcrt_product_nonzero_restricted_bound + S gcrt_positive_index_product_nonzero_restricted = l) -> (((exists ff_h_gcrt_product_nonzero_restricted_entry. ff_h_gcrt_product_nonzero_restricted_entry + S (gcrt_positive_value_product_nonzero_restricted) = S ((S (gcrt_positive_index_product_nonzero_restricted)) * c)) /\ exists ff_q_gcrt_product_nonzero_restricted_entry. b = ff_q_gcrt_product_nonzero_restricted_entry * S ((S (gcrt_positive_index_product_nonzero_restricted)) * c) + (gcrt_positive_value_product_nonzero_restricted))) -> ~(gcrt_positive_value_product_nonzero_restricted = 0) - 0034
specialize crt_positive_moduli_prefix_drop_last b - 0035
specialize crt_positive_moduli_prefix_drop_last c - 0036
specialize crt_positive_moduli_prefix_drop_last l - 0037
apply crt_positive_moduli_prefix_drop_last - 0038
exact hpositive - 0039
have hprefix_nonzero : ~(x2 = 0) - 0040
specialize IH x2 - 0041
intro hprefix_zero - 0042
apply IH - 0043
exact hrestricted - 0044
exact hdecomposition_witness_witness_right_left - 0045
exact hprefix_zero - 0046
have hlast_nonzero : ~(x1 = 0) - 0047
specialize crt_positive_moduli_prefix_last_nonzero b - 0048
specialize crt_positive_moduli_prefix_last_nonzero c - 0049
specialize crt_positive_moduli_prefix_last_nonzero l - 0050
specialize crt_positive_moduli_prefix_last_nonzero x1 - 0051
intro hlast_zero - 0052
apply crt_positive_moduli_prefix_last_nonzero - 0053
exact hpositive - 0054
exact hdecomposition_witness_witness_left - 0055
exact hlast_zero - 0056
rewrite hdecomposition_witness_witness_right_right at hzero - 0057
specialize mul_ne_zero x2 - 0058
specialize mul_ne_zero x1 - 0059
apply mul_ne_zero - 0060
exact hprefix_nonzero - 0061
exact hlast_nonzero - 0062
exact hzero
Separate complete second-wave branches: Full G011 proof · Alpha v27.