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. ~(n=0) -> (forall dvi_index_permutation_prefix. (exists pvs_gap_permutation_prefixdomain. pvs_gap_permutation_prefixdomain + S (dvi_index_permutation_prefix) = (S n)) -> exists dvi_value_permutation_prefix. ((((exists ff_h_pvs_permutation_prefixentry. ff_h_pvs_permutation_prefixentry + S (dvi_value_permutation_prefix) = S ((S (dvi_index_permutation_prefix)) * c)) /\ exists ff_q_pvs_permutation_prefixentry. b = ff_q_pvs_permutation_prefixentry * S ((S (dvi_index_permutation_prefix)) * c) + (dvi_value_permutation_prefix))) /\ ((((~((dvi_index_permutation_prefix)=0)) /\ ((n)=(dvi_index_permutation_prefix)*(dvi_value_permutation_prefix)))) \/ ((((dvi_index_permutation_prefix)=0 \/ ~(exists pvs_factor_permutation_prefixgraphnondivisor. (n) = (dvi_index_permutation_prefix) * pvs_factor_permutation_prefixgraphnondivisor)) /\ ((dvi_value_permutation_prefix)=(dvi_index_permutation_prefix))))))) -> (((forall pfp_i_permutation_resultbounded. (exists pfp_gap_permutation_resultboundedindex. pfp_gap_permutation_resultboundedindex + S (pfp_i_permutation_resultbounded) = (S n)) -> exists pfp_a_permutation_resultbounded. (((exists ff_h_pfp_permutation_resultboundedentry. ff_h_pfp_permutation_resultboundedentry + S (pfp_a_permutation_resultbounded) = S ((S (pfp_i_permutation_resultbounded)) * c)) /\ exists ff_q_pfp_permutation_resultboundedentry. b = ff_q_pfp_permutation_resultboundedentry * S ((S (pfp_i_permutation_resultbounded)) * c) + (pfp_a_permutation_resultbounded))) /\ (exists pfp_gap_permutation_resultboundedvalue. pfp_gap_permutation_resultboundedvalue + S (pfp_a_permutation_resultbounded) = (S n))) /\ (((forall pfp_i_permutation_resultinjective pfp_j_permutation_resultinjective pfp_a_permutation_resultinjective. (exists pfp_gap_permutation_resultinjectivefirst. pfp_gap_permutation_resultinjectivefirst + S (pfp_i_permutation_resultinjective) = (S n)) -> (exists pfp_gap_permutation_resultinjectivesecond. pfp_gap_permutation_resultinjectivesecond + S (pfp_j_permutation_resultinjective) = (S n)) -> (((exists ff_h_pfp_permutation_resultinjectiveleft. ff_h_pfp_permutation_resultinjectiveleft + S (pfp_a_permutation_resultinjective) = S ((S (pfp_i_permutation_resultinjective)) * c)) /\ exists ff_q_pfp_permutation_resultinjectiveleft. b = ff_q_pfp_permutation_resultinjectiveleft * S ((S (pfp_i_permutation_resultinjective)) * c) + (pfp_a_permutation_resultinjective))) -> (((exists ff_h_pfp_permutation_resultinjectiveright. ff_h_pfp_permutation_resultinjectiveright + S (pfp_a_permutation_resultinjective) = S ((S (pfp_j_permutation_resultinjective)) * c)) /\ exists ff_q_pfp_permutation_resultinjectiveright. b = ff_q_pfp_permutation_resultinjectiveright * S ((S (pfp_j_permutation_resultinjective)) * c) + (pfp_a_permutation_resultinjective))) -> pfp_i_permutation_resultinjective = pfp_j_permutation_resultinjective) /\ (forall pfp_a_permutation_resultsurjective. (exists pfp_gap_permutation_resultsurjectivevalue. pfp_gap_permutation_resultsurjectivevalue + S (pfp_a_permutation_resultsurjective) = (S n)) -> exists pfp_i_permutation_resultsurjective. (exists pfp_gap_permutation_resultsurjectiveindex. pfp_gap_permutation_resultsurjectiveindex + S (pfp_i_permutation_resultsurjective) = (S n)) /\ (((exists ff_h_pfp_permutation_resultsurjectiveentry. ff_h_pfp_permutation_resultsurjectiveentry + S (pfp_a_permutation_resultsurjective) = S ((S (pfp_i_permutation_resultsurjective)) * c)) /\ exists ff_q_pfp_permutation_resultsurjectiveentry. b = ff_q_pfp_permutation_resultsurjectiveentry * S ((S (pfp_i_permutation_resultsurjective)) * c) + (pfp_a_permutation_resultsurjective))))))))Constructive proof overview
Generated structural guide
The real S n-entry complement code is bounded and injective by its proved involution; constructive finite surjectivity yields a genuine permutation.
The unchanged tactic script uses 7 declared prerequisites and contains 83 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
succ_le_succ Stable theorem; checked-use authorized DI0006 divisor_complement_bounded le_of_succ_le_succ Stable theorem; checked-use authorized DI0003 divisor_complement_functional DI0005 divisor_complement_symmetric DI0008 divisor_complement_prefix_lookup finite_bounded_injective_surjective 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 (4)
01Fix variables and assumptionsL1–5
02Establish hbL6–8
Establish this local claim before using it. It is not an additional assumption.
- L6
have hb : BoundedPrefix(b,c,S n)Definitions: BoundedPrefix - L7
intro i - L8
intro hi
03Establish hvL9–12
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hp.
- L9
have hv : exists q. (((((exists ff_h_pvs_permutation_at. ff_h_pvs_permutation_at + S (q) = S ((S (i)) * c)) /\ exists ff_q_pvs_permutation_at. b = ff_q_pvs_permutation_at * S ((S (i)) * c) + (q))) /\ ((((~((i)=0)) /\ ((n)=(i)*(q)))) \/ ((((i)=0 \/ ~(exists pvs_factor_permutation_compnondivisor. (n) = (i) * pvs_factor_permutation_compnondivisor)) /\ ((q)=(i))))))) - L10
specialize hp (i) - L11
apply hp - L12
exact hi
04Separate the logical casesL13–14
05Construct an explicit witnessL15–15
Supply the displayed value, then prove that it has the required property.
- L15
exists x
06Separate the logical casesL16–16
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L16
split
07Use earlier factsL17–26
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L17
exact hv_witness_left - L18
specialize succ_le_succ (x) - L19
specialize succ_le_succ (n) - L20
apply succ_le_succ - L21
specialize divisor_complement_bounded (n) - L22
specialize divisor_complement_bounded (i) - L23
specialize divisor_complement_bounded (x) - L24
apply divisor_complement_bounded - L25
exact hn - L26
specialize le_of_succ_le_succ (i)
08Use earlier factsL27–30
09Establish hinjL31–40
Establish this local claim before using it. It is not an additional assumption.
10Use earlier factsL41–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L41
specialize divisor_complement_functional (i) - L42
specialize divisor_complement_functional (j) - L43
apply divisor_complement_functional - L44
specialize divisor_complement_symmetric (n) - L45
specialize divisor_complement_symmetric (i) - L46
specialize divisor_complement_symmetric (a) - L47
apply divisor_complement_symmetric - L48
exact hn - L49
specialize divisor_complement_prefix_lookup (n) - L50
specialize divisor_complement_prefix_lookup (b)
11Use earlier factsL51–60
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L51
specialize divisor_complement_prefix_lookup (c) - L52
specialize divisor_complement_prefix_lookup (S n) - L53
specialize divisor_complement_prefix_lookup (i) - L54
specialize divisor_complement_prefix_lookup (a) - L55
apply divisor_complement_prefix_lookup - L56
exact hp - L57
exact hi - L58
exact hia - L59
specialize divisor_complement_symmetric (n) - L60
specialize divisor_complement_symmetric (j)
12Use earlier factsL61–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L61
specialize divisor_complement_symmetric (a) - L62
apply divisor_complement_symmetric - L63
exact hn - L64
specialize divisor_complement_prefix_lookup (n) - L65
specialize divisor_complement_prefix_lookup (b) - L66
specialize divisor_complement_prefix_lookup (c) - L67
specialize divisor_complement_prefix_lookup (S n) - L68
specialize divisor_complement_prefix_lookup (j) - L69
specialize divisor_complement_prefix_lookup (a) - L70
apply divisor_complement_prefix_lookup
13Use earlier factsL71–73
14Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
split
15Use earlier factsL75–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
exact hb
16Separate the logical casesL76–76
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L76
split
17Use earlier factsL77–83
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 83 lines
- 0001
intro n - 0002
intro b - 0003
intro c - 0004
intro hn - 0005
intro hp - 0006
have hb : forall pfp_i_permutation_bounded. (exists pfp_gap_permutation_boundedindex. pfp_gap_permutation_boundedindex + S (pfp_i_permutation_bounded) = (S n)) -> exists pfp_a_permutation_bounded. (((exists ff_h_pfp_permutation_boundedentry. ff_h_pfp_permutation_boundedentry + S (pfp_a_permutation_bounded) = S ((S (pfp_i_permutation_bounded)) * c)) /\ exists ff_q_pfp_permutation_boundedentry. b = ff_q_pfp_permutation_boundedentry * S ((S (pfp_i_permutation_bounded)) * c) + (pfp_a_permutation_bounded))) /\ (exists pfp_gap_permutation_boundedvalue. pfp_gap_permutation_boundedvalue + S (pfp_a_permutation_bounded) = (S n)) - 0007
intro i - 0008
intro hi - 0009
have hv : exists q. (((((exists ff_h_pvs_permutation_at. ff_h_pvs_permutation_at + S (q) = S ((S (i)) * c)) /\ exists ff_q_pvs_permutation_at. b = ff_q_pvs_permutation_at * S ((S (i)) * c) + (q))) /\ ((((~((i)=0)) /\ ((n)=(i)*(q)))) \/ ((((i)=0 \/ ~(exists pvs_factor_permutation_compnondivisor. (n) = (i) * pvs_factor_permutation_compnondivisor)) /\ ((q)=(i))))))) - 0010
specialize hp (i) - 0011
apply hp - 0012
exact hi - 0013
cases hv - 0014
cases hv_witness - 0015
exists x - 0016
split - 0017
exact hv_witness_left - 0018
specialize succ_le_succ (x) - 0019
specialize succ_le_succ (n) - 0020
apply succ_le_succ - 0021
specialize divisor_complement_bounded (n) - 0022
specialize divisor_complement_bounded (i) - 0023
specialize divisor_complement_bounded (x) - 0024
apply divisor_complement_bounded - 0025
exact hn - 0026
specialize le_of_succ_le_succ (i) - 0027
specialize le_of_succ_le_succ (n) - 0028
apply le_of_succ_le_succ - 0029
exact hi - 0030
exact hv_witness_right - 0031
have hinj : forall pfp_i_permutation_injective pfp_j_permutation_injective pfp_a_permutation_injective. (exists pfp_gap_permutation_injectivefirst. pfp_gap_permutation_injectivefirst + S (pfp_i_permutation_injective) = (S n)) -> (exists pfp_gap_permutation_injectivesecond. pfp_gap_permutation_injectivesecond + S (pfp_j_permutation_injective) = (S n)) -> (((exists ff_h_pfp_permutation_injectiveleft. ff_h_pfp_permutation_injectiveleft + S (pfp_a_permutation_injective) = S ((S (pfp_i_permutation_injective)) * c)) /\ exists ff_q_pfp_permutation_injectiveleft. b = ff_q_pfp_permutation_injectiveleft * S ((S (pfp_i_permutation_injective)) * c) + (pfp_a_permutation_injective))) -> (((exists ff_h_pfp_permutation_injectiveright. ff_h_pfp_permutation_injectiveright + S (pfp_a_permutation_injective) = S ((S (pfp_j_permutation_injective)) * c)) /\ exists ff_q_pfp_permutation_injectiveright. b = ff_q_pfp_permutation_injectiveright * S ((S (pfp_j_permutation_injective)) * c) + (pfp_a_permutation_injective))) -> pfp_i_permutation_injective = pfp_j_permutation_injective - 0032
intro i - 0033
intro j - 0034
intro a - 0035
intro hi - 0036
intro hj - 0037
intro hia - 0038
intro hja - 0039
specialize divisor_complement_functional (n) - 0040
specialize divisor_complement_functional (a) - 0041
specialize divisor_complement_functional (i) - 0042
specialize divisor_complement_functional (j) - 0043
apply divisor_complement_functional - 0044
specialize divisor_complement_symmetric (n) - 0045
specialize divisor_complement_symmetric (i) - 0046
specialize divisor_complement_symmetric (a) - 0047
apply divisor_complement_symmetric - 0048
exact hn - 0049
specialize divisor_complement_prefix_lookup (n) - 0050
specialize divisor_complement_prefix_lookup (b) - 0051
specialize divisor_complement_prefix_lookup (c) - 0052
specialize divisor_complement_prefix_lookup (S n) - 0053
specialize divisor_complement_prefix_lookup (i) - 0054
specialize divisor_complement_prefix_lookup (a) - 0055
apply divisor_complement_prefix_lookup - 0056
exact hp - 0057
exact hi - 0058
exact hia - 0059
specialize divisor_complement_symmetric (n) - 0060
specialize divisor_complement_symmetric (j) - 0061
specialize divisor_complement_symmetric (a) - 0062
apply divisor_complement_symmetric - 0063
exact hn - 0064
specialize divisor_complement_prefix_lookup (n) - 0065
specialize divisor_complement_prefix_lookup (b) - 0066
specialize divisor_complement_prefix_lookup (c) - 0067
specialize divisor_complement_prefix_lookup (S n) - 0068
specialize divisor_complement_prefix_lookup (j) - 0069
specialize divisor_complement_prefix_lookup (a) - 0070
apply divisor_complement_prefix_lookup - 0071
exact hp - 0072
exact hj - 0073
exact hja - 0074
split - 0075
exact hb - 0076
split - 0077
exact hinj - 0078
specialize finite_bounded_injective_surjective (S n) - 0079
specialize finite_bounded_injective_surjective (b) - 0080
specialize finite_bounded_injective_surjective (c) - 0081
apply finite_bounded_injective_surjective - 0082
exact hb - 0083
exact hinj