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 expanded first-order arithmetic statement
forall V L. ~(V=0) -> exists r s. (((~((V)=0)) /\ (forall dpi_index_dpi_exists_result dpi_row_dpi_exists_result dpi_column_dpi_exists_result. (exists pvs_gap_dpi_exists_resultwindow. pvs_gap_dpi_exists_resultwindow + S (dpi_index_dpi_exists_result) = (L)) -> (exists pvs_gap_dpi_exists_resultremainder. pvs_gap_dpi_exists_resultremainder + S (dpi_column_dpi_exists_result) = (V)) -> (dpi_index_dpi_exists_result)=(V)*(dpi_row_dpi_exists_result)+(dpi_column_dpi_exists_result) -> (((exists ff_h_pvs_dpi_exists_resultvalue. ff_h_pvs_dpi_exists_resultvalue + S ((dpi_row_dpi_exists_result)*(dpi_column_dpi_exists_result)) = S ((S (dpi_index_dpi_exists_result)) * s)) /\ exists ff_q_pvs_dpi_exists_resultvalue. r = ff_q_pvs_dpi_exists_resultvalue * S ((S (dpi_index_dpi_exists_result)) * s) + ((dpi_row_dpi_exists_result)*(dpi_column_dpi_exists_result)))))))Constructive proof overview
Generated structural guide
Finite HA induction constructs a native-beta pair-product map for every positive width and finite window, including the empty window.
The unchanged tactic script uses 2 declared prerequisites and contains 37 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
factor_permutation_below_zero_impossible Alpha theorem; checked-use authorized MX0014 divisor_pair_index_map_appendDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (1)
01Fix variables and assumptionsL1–2
02Induction on LL3–4
03Construct an explicit witnessL5–6
04Separate the logical casesL7–7
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L7
split
05Use earlier factsL8–8
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L8
exact hV
06Fix variables and assumptionsL9–14
07Separate the logical casesL15–15
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L15
exfalso
08Use earlier factsL16–18
09Fix variables and assumptionsL19–19
Work with arbitrary variables or the premises of the current implication.
- L19
intro hV
10Establish hpL20–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L20
have hp : ∃ r. ∃ s. DivisorPairIndexMap(V,L,r,s)Definitions: DivisorPairIndexMap - L21
apply IH - L22
exact hV
11Separate the logical casesL23–24
12Establish heL25–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor pair index map append.
- L25
have he : ∃ t. ∃ u. DivisorPairIndexMap(V,S L,t,u) ∧ (∀ y. ∀ z. Lt(y,L) → BetaAt(x,x1,y,z) → BetaAt(t,u,y,z))Definitions: DivisorPairIndexMapLtBetaAt - L26
specialize divisor_pair_index_map_append (V) - L27
specialize divisor_pair_index_map_append (L) - L28
specialize divisor_pair_index_map_append (x) - L29
specialize divisor_pair_index_map_append (x1) - L30
apply divisor_pair_index_map_append - L31
exact hp_witness_witness
13Separate the logical casesL32–34
14Construct an explicit witnessL35–36
15Use earlier factsL37–37
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
exact he_witness_witness_left
Original exact command ledger · 37 lines
- 0001
intro V - 0002
intro L - 0003
induction L - 0004
intro hV - 0005
exists 0 - 0006
exists 0 - 0007
split - 0008
exact hV - 0009
intro i - 0010
intro d - 0011
intro e - 0012
intro hi - 0013
intro he - 0014
intro heq - 0015
exfalso - 0016
specialize factor_permutation_below_zero_impossible (i) - 0017
apply factor_permutation_below_zero_impossible - 0018
exact hi - 0019
intro hV - 0020
have hp : exists r s. (((~((V)=0)) /\ (forall dpi_index_dpi_previous dpi_row_dpi_previous dpi_column_dpi_previous. (exists pvs_gap_dpi_previouswindow. pvs_gap_dpi_previouswindow + S (dpi_index_dpi_previous) = (L)) -> (exists pvs_gap_dpi_previousremainder. pvs_gap_dpi_previousremainder + S (dpi_column_dpi_previous) = (V)) -> (dpi_index_dpi_previous)=(V)*(dpi_row_dpi_previous)+(dpi_column_dpi_previous) -> (((exists ff_h_pvs_dpi_previousvalue. ff_h_pvs_dpi_previousvalue + S ((dpi_row_dpi_previous)*(dpi_column_dpi_previous)) = S ((S (dpi_index_dpi_previous)) * s)) /\ exists ff_q_pvs_dpi_previousvalue. r = ff_q_pvs_dpi_previousvalue * S ((S (dpi_index_dpi_previous)) * s) + ((dpi_row_dpi_previous)*(dpi_column_dpi_previous))))))) - 0021
apply IH - 0022
exact hV - 0023
cases hp - 0024
cases hp_witness - 0025
have he : exists t u. (((((~((V)=0)) /\ (forall dpi_index_dpi_next dpi_row_dpi_next dpi_column_dpi_next. (exists pvs_gap_dpi_nextwindow. pvs_gap_dpi_nextwindow + S (dpi_index_dpi_next) = (S L)) -> (exists pvs_gap_dpi_nextremainder. pvs_gap_dpi_nextremainder + S (dpi_column_dpi_next) = (V)) -> (dpi_index_dpi_next)=(V)*(dpi_row_dpi_next)+(dpi_column_dpi_next) -> (((exists ff_h_pvs_dpi_nextvalue. ff_h_pvs_dpi_nextvalue + S ((dpi_row_dpi_next)*(dpi_column_dpi_next)) = S ((S (dpi_index_dpi_next)) * u)) /\ exists ff_q_pvs_dpi_nextvalue. t = ff_q_pvs_dpi_nextvalue * S ((S (dpi_index_dpi_next)) * u) + ((dpi_row_dpi_next)*(dpi_column_dpi_next))))))) /\ (forall pfp_i_pvs_dpi_next_preserve pfp_a_pvs_dpi_next_preserve. (exists pfp_gap_pvs_dpi_next_preservebound. pfp_gap_pvs_dpi_next_preservebound + S (pfp_i_pvs_dpi_next_preserve) = (L)) -> (((exists ff_h_pfp_pvs_dpi_next_preserveold. ff_h_pfp_pvs_dpi_next_preserveold + S (pfp_a_pvs_dpi_next_preserve) = S ((S (pfp_i_pvs_dpi_next_preserve)) * x1)) /\ exists ff_q_pfp_pvs_dpi_next_preserveold. x = ff_q_pfp_pvs_dpi_next_preserveold * S ((S (pfp_i_pvs_dpi_next_preserve)) * x1) + (pfp_a_pvs_dpi_next_preserve))) -> (((exists ff_h_pfp_pvs_dpi_next_preservenew. ff_h_pfp_pvs_dpi_next_preservenew + S (pfp_a_pvs_dpi_next_preserve) = S ((S (pfp_i_pvs_dpi_next_preserve)) * u)) /\ exists ff_q_pfp_pvs_dpi_next_preservenew. t = ff_q_pfp_pvs_dpi_next_preservenew * S ((S (pfp_i_pvs_dpi_next_preserve)) * u) + (pfp_a_pvs_dpi_next_preserve)))))) - 0026
specialize divisor_pair_index_map_append (V) - 0027
specialize divisor_pair_index_map_append (L) - 0028
specialize divisor_pair_index_map_append (x) - 0029
specialize divisor_pair_index_map_append (x1) - 0030
apply divisor_pair_index_map_append - 0031
exact hp_witness_witness - 0032
cases he - 0033
cases he_witness - 0034
cases he_witness_witness - 0035
exists x2 - 0036
exists x3 - 0037
exact he_witness_witness_left