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 b c i q. ~(n=0) -> (forall dvi_index_decoded_prefix. (exists pvs_gap_decoded_prefixdomain. pvs_gap_decoded_prefixdomain + S (dvi_index_decoded_prefix) = (S n)) -> exists dvi_value_decoded_prefix. ((((exists ff_h_pvs_decoded_prefixentry. ff_h_pvs_decoded_prefixentry + S (dvi_value_decoded_prefix) = S ((S (dvi_index_decoded_prefix)) * c)) /\ exists ff_q_pvs_decoded_prefixentry. b = ff_q_pvs_decoded_prefixentry * S ((S (dvi_index_decoded_prefix)) * c) + (dvi_value_decoded_prefix))) /\ ((((~((dvi_index_decoded_prefix)=0)) /\ ((n)=(dvi_index_decoded_prefix)*(dvi_value_decoded_prefix)))) \/ ((((dvi_index_decoded_prefix)=0 \/ ~(exists pvs_factor_decoded_prefixgraphnondivisor. (n) = (dvi_index_decoded_prefix) * pvs_factor_decoded_prefixgraphnondivisor)) /\ ((dvi_value_decoded_prefix)=(dvi_index_decoded_prefix))))))) -> (exists pvs_le_gap_decoded_input_bound. pvs_le_gap_decoded_input_bound + (i) = (n)) -> (((exists ff_h_pvs_decoded_first. ff_h_pvs_decoded_first + S (q) = S ((S (i)) * c)) /\ exists ff_q_pvs_decoded_first. b = ff_q_pvs_decoded_first * S ((S (i)) * c) + (q))) -> (((exists ff_h_pvs_decoded_second. ff_h_pvs_decoded_second + S (i) = S ((S (q)) * c)) /\ exists ff_q_pvs_decoded_second. b = ff_q_pvs_decoded_second * S ((S (q)) * c) + (i)))Constructive proof overview
Generated structural guide
Decoding the constructed finite map twice returns the original index, with the intermediate index proved to remain in bounds.
The unchanged tactic script uses 5 declared prerequisites and contains 56 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
DI0008 divisor_complement_prefix_lookup succ_le_succ Stable theorem; checked-use authorized DI0006 divisor_complement_bounded DI0003 divisor_complement_functional DI0005 divisor_complement_symmetricDirect 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 (4)
01Fix variables and assumptionsL1–9
02Establish hcompL10–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor complement prefix lookup.
- L10
have hcomp : (((~((i)=0)) /\ ((n)=(i)*(q)))) \/ ((((i)=0 \/ ~(exists pvs_factor_decoded_complementnondivisor. (n) = (i) * pvs_factor_decoded_complementnondivisor)) /\ ((q)=(i)))) - L11
specialize divisor_complement_prefix_lookup (n) - L12
specialize divisor_complement_prefix_lookup (b) - L13
specialize divisor_complement_prefix_lookup (c) - L14
specialize divisor_complement_prefix_lookup (S n) - L15
specialize divisor_complement_prefix_lookup (i) - L16
specialize divisor_complement_prefix_lookup (q) - L17
apply divisor_complement_prefix_lookup - L18
exact hp - L19
specialize succ_le_succ (i)
03Use earlier factsL20–23
04Establish hqL24–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor complement bounded.
05Establish hnextL32–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hp.
- L32
have hnext : exists r. (((((exists ff_h_pvs_decoded_next. ff_h_pvs_decoded_next + S (r) = S ((S (q)) * c)) /\ exists ff_q_pvs_decoded_next. b = ff_q_pvs_decoded_next * S ((S (q)) * c) + (r))) /\ ((((~((q)=0)) /\ ((n)=(q)*(r)))) \/ ((((q)=0 \/ ~(exists pvs_factor_decoded_next_graphnondivisor. (n) = (q) * pvs_factor_decoded_next_graphnondivisor)) /\ ((r)=(q))))))) - L33
specialize hp (q) - L34
apply hp - L35
specialize succ_le_succ (q) - L36
specialize succ_le_succ (n) - L37
apply succ_le_succ - L38
exact hq
06Separate the logical casesL39–40
07Establish heqL41–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor complement functional.
- L41
have heq : x=i - L42
specialize divisor_complement_functional (n) - L43
specialize divisor_complement_functional (q) - L44
specialize divisor_complement_functional (x) - L45
specialize divisor_complement_functional (i) - L46
apply divisor_complement_functional - L47
exact hnext_witness_right - L48
specialize divisor_complement_symmetric (n) - L49
specialize divisor_complement_symmetric (i) - L50
specialize divisor_complement_symmetric (q)
08Use earlier factsL51–53
09Calculate and transport equalitiesL54–55
10Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
exact hnext_witness_left
Original exact command ledger · 56 lines
- 0001
intro n - 0002
intro b - 0003
intro c - 0004
intro i - 0005
intro q - 0006
intro hn - 0007
intro hp - 0008
intro hi - 0009
intro hat - 0010
have hcomp : (((~((i)=0)) /\ ((n)=(i)*(q)))) \/ ((((i)=0 \/ ~(exists pvs_factor_decoded_complementnondivisor. (n) = (i) * pvs_factor_decoded_complementnondivisor)) /\ ((q)=(i)))) - 0011
specialize divisor_complement_prefix_lookup (n) - 0012
specialize divisor_complement_prefix_lookup (b) - 0013
specialize divisor_complement_prefix_lookup (c) - 0014
specialize divisor_complement_prefix_lookup (S n) - 0015
specialize divisor_complement_prefix_lookup (i) - 0016
specialize divisor_complement_prefix_lookup (q) - 0017
apply divisor_complement_prefix_lookup - 0018
exact hp - 0019
specialize succ_le_succ (i) - 0020
specialize succ_le_succ (n) - 0021
apply succ_le_succ - 0022
exact hi - 0023
exact hat - 0024
have hq : exists pvs_le_gap_decoded_bound. pvs_le_gap_decoded_bound + (q) = (n) - 0025
specialize divisor_complement_bounded (n) - 0026
specialize divisor_complement_bounded (i) - 0027
specialize divisor_complement_bounded (q) - 0028
apply divisor_complement_bounded - 0029
exact hn - 0030
exact hi - 0031
exact hcomp - 0032
have hnext : exists r. (((((exists ff_h_pvs_decoded_next. ff_h_pvs_decoded_next + S (r) = S ((S (q)) * c)) /\ exists ff_q_pvs_decoded_next. b = ff_q_pvs_decoded_next * S ((S (q)) * c) + (r))) /\ ((((~((q)=0)) /\ ((n)=(q)*(r)))) \/ ((((q)=0 \/ ~(exists pvs_factor_decoded_next_graphnondivisor. (n) = (q) * pvs_factor_decoded_next_graphnondivisor)) /\ ((r)=(q))))))) - 0033
specialize hp (q) - 0034
apply hp - 0035
specialize succ_le_succ (q) - 0036
specialize succ_le_succ (n) - 0037
apply succ_le_succ - 0038
exact hq - 0039
cases hnext - 0040
cases hnext_witness - 0041
have heq : x=i - 0042
specialize divisor_complement_functional (n) - 0043
specialize divisor_complement_functional (q) - 0044
specialize divisor_complement_functional (x) - 0045
specialize divisor_complement_functional (i) - 0046
apply divisor_complement_functional - 0047
exact hnext_witness_right - 0048
specialize divisor_complement_symmetric (n) - 0049
specialize divisor_complement_symmetric (i) - 0050
specialize divisor_complement_symmetric (q) - 0051
apply divisor_complement_symmetric - 0052
exact hn - 0053
exact hcomp - 0054
rewrite heq at hnext_witness_left - 0055
rewrite heq at hnext_witness_left - 0056
exact hnext_witness_left