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 n l. ~(n=0) -> exists b c. (forall dvi_index_prefix_exists. (exists pvs_gap_prefix_existsdomain. pvs_gap_prefix_existsdomain + S (dvi_index_prefix_exists) = (l)) -> exists dvi_value_prefix_exists. ((((exists ff_h_pvs_prefix_existsentry. ff_h_pvs_prefix_existsentry + S (dvi_value_prefix_exists) = S ((S (dvi_index_prefix_exists)) * c)) /\ exists ff_q_pvs_prefix_existsentry. b = ff_q_pvs_prefix_existsentry * S ((S (dvi_index_prefix_exists)) * c) + (dvi_value_prefix_exists))) /\ ((((~((dvi_index_prefix_exists)=0)) /\ ((n)=(dvi_index_prefix_exists)*(dvi_value_prefix_exists)))) \/ ((((dvi_index_prefix_exists)=0 \/ ~(exists pvs_factor_prefix_existsgraphnondivisor. (n) = (dvi_index_prefix_exists) * pvs_factor_prefix_existsgraphnondivisor)) /\ ((dvi_value_prefix_exists)=(dvi_index_prefix_exists)))))))Constructive proof overview
Generated structural guide
Finite HA induction constructs a genuine beta prefix of quotient values, rather than assuming a finite-choice or coding oracle.
The unchanged tactic script uses 4 declared prerequisites and contains 68 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
factor_permutation_below_zero_impossible Alpha theorem; checked-use authorized DI0002 divisor_complement_exists beta_prefix_extend Stable theorem; checked-use authorized finite_lt_succ_eq_or_lt 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 (1)
01Fix variables and assumptionsL1–2
02Induction on lL3–4
03Construct an explicit witnessL5–6
04Fix variables and assumptionsL7–8
05Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
exfalso
06Use earlier factsL10–12
07Fix variables and assumptionsL13–13
Work with arbitrary variables or the premises of the current implication.
- L13
intro hn
08Establish hprevL14–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L14
have hprev : ∃ b. ∃ c. DivisorComplementPrefix(n,b,c,l)Definitions: DivisorComplementPrefix - L15
apply IH - L16
exact hn
09Separate the logical casesL17–18
10Establish hvL19–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor complement exists.
- L19
have hv : exists v. ((((~((l)=0)) /\ ((n)=(l)*(v)))) \/ ((((l)=0 \/ ~(exists pvs_factor_choice_valuenondivisor. (n) = (l) * pvs_factor_choice_valuenondivisor)) /\ ((v)=(l))))) - L20
specialize divisor_complement_exists (n) - L21
specialize divisor_complement_exists (l) - L22
apply divisor_complement_exists - L23
exact hn
11Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hv
12Establish hextL25–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
13Separate the logical casesL31–33
14Construct an explicit witnessL34–35
15Fix variables and assumptionsL36–37
16Establish hcL38–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
17Separate the logical casesL43–43
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L43
cases hc
18Calculate and transport equalitiesL44–50
19Construct an explicit witnessL51–51
Supply the displayed value, then prove that it has the required property.
- L51
exists x2
20Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
split
21Use earlier factsL53–54
22Establish holdL55–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprev witness witness.
- L55
have hold : exists v. (((((exists ff_h_pvs_choice_old_entry. ff_h_pvs_choice_old_entry + S (v) = S ((S (i)) * x1)) /\ exists ff_q_pvs_choice_old_entry. x = ff_q_pvs_choice_old_entry * S ((S (i)) * x1) + (v))) /\ ((((~((i)=0)) /\ ((n)=(i)*(v)))) \/ ((((i)=0 \/ ~(exists pvs_factor_choice_old_graphnondivisor. (n) = (i) * pvs_factor_choice_old_graphnondivisor)) /\ ((v)=(i))))))) - L56
specialize hprev_witness_witness (i) - L57
apply hprev_witness_witness - L58
exact hc_right
23Separate the logical casesL59–60
24Construct an explicit witnessL61–61
Supply the displayed value, then prove that it has the required property.
- L61
exists x5
25Separate the logical casesL62–62
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L62
split
26Use earlier factsL63–68
Original exact command ledger · 68 lines
- 0001
intro n - 0002
intro l - 0003
induction l - 0004
intro hn - 0005
exists 0 - 0006
exists 0 - 0007
intro i - 0008
intro hi - 0009
exfalso - 0010
specialize factor_permutation_below_zero_impossible (i) - 0011
apply factor_permutation_below_zero_impossible - 0012
exact hi - 0013
intro hn - 0014
have hprev : exists b c. (forall dvi_index_choice_previous. (exists pvs_gap_choice_previousdomain. pvs_gap_choice_previousdomain + S (dvi_index_choice_previous) = (l)) -> exists dvi_value_choice_previous. ((((exists ff_h_pvs_choice_previousentry. ff_h_pvs_choice_previousentry + S (dvi_value_choice_previous) = S ((S (dvi_index_choice_previous)) * c)) /\ exists ff_q_pvs_choice_previousentry. b = ff_q_pvs_choice_previousentry * S ((S (dvi_index_choice_previous)) * c) + (dvi_value_choice_previous))) /\ ((((~((dvi_index_choice_previous)=0)) /\ ((n)=(dvi_index_choice_previous)*(dvi_value_choice_previous)))) \/ ((((dvi_index_choice_previous)=0 \/ ~(exists pvs_factor_choice_previousgraphnondivisor. (n) = (dvi_index_choice_previous) * pvs_factor_choice_previousgraphnondivisor)) /\ ((dvi_value_choice_previous)=(dvi_index_choice_previous))))))) - 0015
apply IH - 0016
exact hn - 0017
cases hprev - 0018
cases hprev_witness - 0019
have hv : exists v. ((((~((l)=0)) /\ ((n)=(l)*(v)))) \/ ((((l)=0 \/ ~(exists pvs_factor_choice_valuenondivisor. (n) = (l) * pvs_factor_choice_valuenondivisor)) /\ ((v)=(l))))) - 0020
specialize divisor_complement_exists (n) - 0021
specialize divisor_complement_exists (l) - 0022
apply divisor_complement_exists - 0023
exact hn - 0024
cases hv - 0025
have hext : exists b c. (((((exists ff_h_pvs_choice_last. ff_h_pvs_choice_last + S (x2) = S ((S (l)) * c)) /\ exists ff_q_pvs_choice_last. b = ff_q_pvs_choice_last * S ((S (l)) * c) + (x2))) /\ (forall pfp_i_choice_preserve pfp_a_choice_preserve. (exists pfp_gap_choice_preservebound. pfp_gap_choice_preservebound + S (pfp_i_choice_preserve) = (l)) -> (((exists ff_h_pfp_choice_preserveold. ff_h_pfp_choice_preserveold + S (pfp_a_choice_preserve) = S ((S (pfp_i_choice_preserve)) * x1)) /\ exists ff_q_pfp_choice_preserveold. x = ff_q_pfp_choice_preserveold * S ((S (pfp_i_choice_preserve)) * x1) + (pfp_a_choice_preserve))) -> (((exists ff_h_pfp_choice_preservenew. ff_h_pfp_choice_preservenew + S (pfp_a_choice_preserve) = S ((S (pfp_i_choice_preserve)) * c)) /\ exists ff_q_pfp_choice_preservenew. b = ff_q_pfp_choice_preservenew * S ((S (pfp_i_choice_preserve)) * c) + (pfp_a_choice_preserve)))))) - 0026
specialize beta_prefix_extend (l) - 0027
specialize beta_prefix_extend (x) - 0028
specialize beta_prefix_extend (x1) - 0029
specialize beta_prefix_extend (x2) - 0030
apply beta_prefix_extend - 0031
cases hext - 0032
cases hext_witness - 0033
cases hext_witness_witness - 0034
exists x3 - 0035
exists x4 - 0036
intro i - 0037
intro hi - 0038
have hc : i=l \/ (exists pvs_gap_choice_cases. pvs_gap_choice_cases + S (i) = (l)) - 0039
specialize finite_lt_succ_eq_or_lt (l) - 0040
specialize finite_lt_succ_eq_or_lt (i) - 0041
apply finite_lt_succ_eq_or_lt - 0042
exact hi - 0043
cases hc - 0044
rewrite hc_left - 0045
rewrite hc_left - 0046
rewrite hc_left - 0047
rewrite hc_left - 0048
rewrite hc_left - 0049
rewrite hc_left - 0050
rewrite hc_left - 0051
exists x2 - 0052
split - 0053
exact hext_witness_witness_left - 0054
exact hv_witness - 0055
have hold : exists v. (((((exists ff_h_pvs_choice_old_entry. ff_h_pvs_choice_old_entry + S (v) = S ((S (i)) * x1)) /\ exists ff_q_pvs_choice_old_entry. x = ff_q_pvs_choice_old_entry * S ((S (i)) * x1) + (v))) /\ ((((~((i)=0)) /\ ((n)=(i)*(v)))) \/ ((((i)=0 \/ ~(exists pvs_factor_choice_old_graphnondivisor. (n) = (i) * pvs_factor_choice_old_graphnondivisor)) /\ ((v)=(i))))))) - 0056
specialize hprev_witness_witness (i) - 0057
apply hprev_witness_witness - 0058
exact hc_right - 0059
cases hold - 0060
cases hold_witness - 0061
exists x5 - 0062
split - 0063
specialize hext_witness_witness_right (i) - 0064
specialize hext_witness_witness_right (x5) - 0065
apply hext_witness_witness_right - 0066
exact hc_right - 0067
exact hold_witness_left - 0068
exact hold_witness_right