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 PA statement
forall p n a b c. p = S n -> ((~(p = 1) /\ forall frm_prime_left_package_prime frm_prime_right_package_prime. p = frm_prime_left_package_prime * frm_prime_right_package_prime -> frm_prime_left_package_prime = 1 \/ frm_prime_right_package_prime = 1)) -> (~(exists frm_factor_package_multiplier. a = p * frm_factor_package_multiplier)) -> (forall ff_i_frp_range_package_range. (exists ff_lt_frp_range_package_range_bound. ff_lt_frp_range_package_range_bound + S ff_i_frp_range_package_range = n) -> (((exists ff_h_frp_range_package_range_decoded. ff_h_frp_range_package_range_decoded + S (1 + ff_i_frp_range_package_range) = S ((S (ff_i_frp_range_package_range)) * c)) /\ exists ff_q_frp_range_package_range_decoded. b = ff_q_frp_range_package_range_decoded * S ((S (ff_i_frp_range_package_range)) * c) + (1 + ff_i_frp_range_package_range)))) -> exists r s z d. (forall fp_i_package_result_bounded. (exists fp_gap_package_result_bounded_index. fp_gap_package_result_bounded_index + S fp_i_package_result_bounded = n) -> exists fp_value_package_result_bounded. ((((exists ff_h_package_result_bounded_entry. ff_h_package_result_bounded_entry + S (fp_value_package_result_bounded) = S ((S (fp_i_package_result_bounded)) * s)) /\ exists ff_q_package_result_bounded_entry. r = ff_q_package_result_bounded_entry * S ((S (fp_i_package_result_bounded)) * s) + (fp_value_package_result_bounded))) /\ (exists fp_gap_package_result_bounded_value. fp_gap_package_result_bounded_value + S fp_value_package_result_bounded = n))) /\ ((forall fp_i_package_result_injective fp_j_package_result_injective fp_value_package_result_injective. (exists fp_gap_package_result_injective_i. fp_gap_package_result_injective_i + S fp_i_package_result_injective = n) -> (exists fp_gap_package_result_injective_j. fp_gap_package_result_injective_j + S fp_j_package_result_injective = n) -> (((exists ff_h_package_result_injective_left. ff_h_package_result_injective_left + S (fp_value_package_result_injective) = S ((S (fp_i_package_result_injective)) * s)) /\ exists ff_q_package_result_injective_left. r = ff_q_package_result_injective_left * S ((S (fp_i_package_result_injective)) * s) + (fp_value_package_result_injective))) -> (((exists ff_h_package_result_injective_right. ff_h_package_result_injective_right + S (fp_value_package_result_injective) = S ((S (fp_j_package_result_injective)) * s)) /\ exists ff_q_package_result_injective_right. r = ff_q_package_result_injective_right * S ((S (fp_j_package_result_injective)) * s) + (fp_value_package_result_injective))) -> fp_i_package_result_injective = fp_j_package_result_injective) /\ ((forall fpr_i_package_result_aligned fpr_j_package_result_aligned fpr_x_package_result_aligned. (exists fpr_h_package_result_aligned. fpr_h_package_result_aligned + S fpr_i_package_result_aligned = n) -> (((exists ff_h_package_result_aligned_map. ff_h_package_result_aligned_map + S (fpr_j_package_result_aligned) = S ((S (fpr_i_package_result_aligned)) * s)) /\ exists ff_q_package_result_aligned_map. r = ff_q_package_result_aligned_map * S ((S (fpr_i_package_result_aligned)) * s) + (fpr_j_package_result_aligned))) -> (((exists ff_h_package_result_aligned_source. ff_h_package_result_aligned_source + S (fpr_x_package_result_aligned) = S ((S (fpr_j_package_result_aligned)) * c)) /\ exists ff_q_package_result_aligned_source. b = ff_q_package_result_aligned_source * S ((S (fpr_j_package_result_aligned)) * c) + (fpr_x_package_result_aligned))) -> (((exists ff_h_package_result_aligned_target. ff_h_package_result_aligned_target + S (fpr_x_package_result_aligned) = S ((S (fpr_i_package_result_aligned)) * d)) /\ exists ff_q_package_result_aligned_target. z = ff_q_package_result_aligned_target * S ((S (fpr_i_package_result_aligned)) * d) + (fpr_x_package_result_aligned)))) /\ (forall fsp_index_package_result_scale fsp_source_package_result_scale fsp_target_package_result_scale. (exists fsp_gap_package_result_scale. fsp_gap_package_result_scale + S fsp_index_package_result_scale = n) -> (((exists fsp_source_height_package_result_scale. fsp_source_height_package_result_scale + S (fsp_source_package_result_scale) = S ((S (fsp_index_package_result_scale)) * c)) /\ exists fsp_source_quotient_package_result_scale. b = fsp_source_quotient_package_result_scale * S ((S (fsp_index_package_result_scale)) * c) + (fsp_source_package_result_scale))) -> (((exists fsp_target_height_package_result_scale. fsp_target_height_package_result_scale + S (fsp_target_package_result_scale) = S ((S (fsp_index_package_result_scale)) * d)) /\ exists fsp_target_quotient_package_result_scale. z = fsp_target_quotient_package_result_scale * S ((S (fsp_index_package_result_scale)) * d) + (fsp_target_package_result_scale))) -> (exists fsp_mod_left_package_result_scale fsp_mod_right_package_result_scale. a * fsp_source_package_result_scale + p * fsp_mod_left_package_result_scale = fsp_target_package_result_scale + p * fsp_mod_right_package_result_scale))))Structural proof guide
Generated structural guide
A nonzero multiplier modulo a prime induces a beta-coded residue reindexing.
Use the direct prerequisites le_refl, prime_mul_index_map_exists_up_to, beta_successor_lift_exists, fermat_index_map_bounded, prime_mul_index_map_injective, beta_successor_range_reindex_aligned, beta_successor_range_scale_mod as previously established PA formulas.
The proof proceeds by case analysis (4), intermediate claims (6).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA001A le_refl PA008B prime_mul_index_map_exists_up_to PA008C beta_successor_lift_exists PA008D fermat_index_map_bounded PA008E prime_mul_index_map_injective PA008G beta_successor_range_reindex_aligned PA008H beta_successor_range_scale_modDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
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 (7)
01Fix variables and assumptionsL1–9
02Establish hmapsL10–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime mul index map exists up to.
03Use earlier factsL20–20
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L20
exact hnotdiv
04Separate the logical casesL21–22
05Establish hliftsL23–27
Establish this local claim before using it. It is not an additional assumption.
06Separate the logical casesL28–29
07Establish hboundedL30–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply fermat index map bounded.
- L30
have hbounded : forall fp_i_package_bounded. (exists fp_gap_package_bounded_index. fp_gap_package_bounded_index + S fp_i_package_bounded = n) -> exists fp_value_package_bounded. ((((exists ff_h_package_bounded_entry. ff_h_package_bounded_entry + S (fp_value_package_bounded) = S ((S (fp_i_package_bounded)) * x1)) /\ exists ff_q_package_bounded_entry. x = ff_q_package_bounded_entry * S ((S (fp_i_package_bounded)) * x1) + (fp_value_package_bounded))) /\ (exists fp_gap_package_bounded_value. fp_gap_package_bounded_value + S fp_value_package_bounded = n)) - L31
specialize fermat_index_map_bounded x - L32
specialize fermat_index_map_bounded x1 - L33
specialize fermat_index_map_bounded n - L34
specialize fermat_index_map_bounded p - L35
specialize fermat_index_map_bounded a - L36
apply fermat_index_map_bounded - L37
exact hmaps_witness_witness
08Establish hinjectiveL38–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime mul index map injective.
- L38
have hinjective : InjectivePrefix(x,x1,n)Definitions: InjectivePrefix - L39
specialize prime_mul_index_map_injective p - L40
specialize prime_mul_index_map_injective n - L41
specialize prime_mul_index_map_injective a - L42
specialize prime_mul_index_map_injective x - L43
specialize prime_mul_index_map_injective x1 - L44
apply prime_mul_index_map_injective - L45
exact hpn - L46
exact hp - L47
exact hnotdiv
09Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
exact hmaps_witness_witness
10Establish halignedL49–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta successor range reindex aligned.
- L49
have haligned : ∀ fpr_i_package_aligned. ∀ fpr_j_package_aligned. ∀ fpr_x_package_aligned. Lt(fpr_i_package_aligned,n) → BetaAt(x,x1,fpr_i_package_aligned,fpr_j_package_aligned) → BetaAt(b,c,fpr_j_package_aligned,fpr_x_package_aligned) → BetaAt(x2,x3,fpr_i_package_aligned,fpr_x_package_aligned)Definitions: LtBetaAt - L50
specialize beta_successor_range_reindex_aligned x - L51
specialize beta_successor_range_reindex_aligned x1 - L52
specialize beta_successor_range_reindex_aligned b - L53
specialize beta_successor_range_reindex_aligned c - L54
specialize beta_successor_range_reindex_aligned x2 - L55
specialize beta_successor_range_reindex_aligned x3 - L56
specialize beta_successor_range_reindex_aligned n - L57
apply beta_successor_range_reindex_aligned - L58
exact hbounded
11Use earlier factsL59–60
12Establish hscaleL61–70
Establish this local claim before using it. It is not an additional assumption.
- L61
have hscale : ∀ fsp_index_package_scale. ∀ fsp_source_package_scale. ∀ fsp_target_package_scale. Lt(fsp_index_package_scale,n) → BetaAt(b,c,fsp_index_package_scale,fsp_source_package_scale) → BetaAt(x2,x3,fsp_index_package_scale,fsp_target_package_scale) → ModEq(p,a · fsp_source_package_scale,fsp_target_package_scale)Definitions: LtModEqBetaAt - L62
specialize beta_successor_range_scale_mod p - L63
specialize beta_successor_range_scale_mod n - L64
specialize beta_successor_range_scale_mod a - L65
specialize beta_successor_range_scale_mod x - L66
specialize beta_successor_range_scale_mod x1 - L67
specialize beta_successor_range_scale_mod b - L68
specialize beta_successor_range_scale_mod c - L69
specialize beta_successor_range_scale_mod x2 - L70
specialize beta_successor_range_scale_mod x3
13Use earlier factsL71–74
14Construct an explicit witnessL75–78
15Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
split
16Use earlier factsL80–80
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
exact hbounded
17Separate the logical casesL81–81
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L81
split
18Use earlier factsL82–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L82
exact hinjective
19Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
split
Original exact command ledger · 85 lines
- 0001
intro p - 0002
intro n - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro hpn - 0007
intro hp - 0008
intro hnotdiv - 0009
intro hrange - 0010
have hmaps : exists r s. (forall frm_index_package_map. (exists frm_gap_package_map_index_bound. frm_gap_package_map_index_bound + S frm_index_package_map = n) -> (exists frm_residue_package_map_result. (exists frm_gap_package_map_result_residue_bound. frm_gap_package_map_result_residue_bound + S frm_residue_package_map_result = n) /\ ((((exists ff_h_frm_package_map_result_decoded. ff_h_frm_package_map_result_decoded + S (frm_residue_package_map_result) = S ((S (frm_index_package_map)) * s)) /\ exists ff_q_frm_package_map_result_decoded. r = ff_q_frm_package_map_result_decoded * S ((S (frm_index_package_map)) * s) + (frm_residue_package_map_result))) /\ (exists frm_mod_left_package_map_result_congruence frm_mod_right_package_map_result_congruence. a * S frm_index_package_map + p * frm_mod_left_package_map_result_congruence = S frm_residue_package_map_result + p * frm_mod_right_package_map_result_congruence)))) - 0011
specialize prime_mul_index_map_exists_up_to n - 0012
specialize prime_mul_index_map_exists_up_to n - 0013
specialize prime_mul_index_map_exists_up_to p - 0014
specialize prime_mul_index_map_exists_up_to a - 0015
apply prime_mul_index_map_exists_up_to - 0016
specialize le_refl n - 0017
exact le_refl - 0018
exact hpn - 0019
exact hp - 0020
exact hnotdiv - 0021
cases hmaps - 0022
cases hmaps_witness - 0023
have hlifts : exists z d. (forall frr_index_package_lift frr_value_package_lift. (exists frr_gap_package_lift. frr_gap_package_lift + S frr_index_package_lift = n) -> (((exists ff_h_frr_package_lift_source. ff_h_frr_package_lift_source + S (frr_value_package_lift) = S ((S (frr_index_package_lift)) * x1)) /\ exists ff_q_frr_package_lift_source. x = ff_q_frr_package_lift_source * S ((S (frr_index_package_lift)) * x1) + (frr_value_package_lift))) -> (((exists frm_height_frr_package_lift_target. frm_height_frr_package_lift_target + S (S frr_value_package_lift) = S ((S (frr_index_package_lift)) * d)) /\ exists frm_quotient_frr_package_lift_target. z = frm_quotient_frr_package_lift_target * S ((S (frr_index_package_lift)) * d) + (S frr_value_package_lift)))) - 0024
specialize beta_successor_lift_exists x - 0025
specialize beta_successor_lift_exists x1 - 0026
specialize beta_successor_lift_exists n - 0027
exact beta_successor_lift_exists - 0028
cases hlifts - 0029
cases hlifts_witness - 0030
have hbounded : forall fp_i_package_bounded. (exists fp_gap_package_bounded_index. fp_gap_package_bounded_index + S fp_i_package_bounded = n) -> exists fp_value_package_bounded. ((((exists ff_h_package_bounded_entry. ff_h_package_bounded_entry + S (fp_value_package_bounded) = S ((S (fp_i_package_bounded)) * x1)) /\ exists ff_q_package_bounded_entry. x = ff_q_package_bounded_entry * S ((S (fp_i_package_bounded)) * x1) + (fp_value_package_bounded))) /\ (exists fp_gap_package_bounded_value. fp_gap_package_bounded_value + S fp_value_package_bounded = n)) - 0031
specialize fermat_index_map_bounded x - 0032
specialize fermat_index_map_bounded x1 - 0033
specialize fermat_index_map_bounded n - 0034
specialize fermat_index_map_bounded p - 0035
specialize fermat_index_map_bounded a - 0036
apply fermat_index_map_bounded - 0037
exact hmaps_witness_witness - 0038
have hinjective : forall fp_i_package_injective fp_j_package_injective fp_value_package_injective. (exists fp_gap_package_injective_i. fp_gap_package_injective_i + S fp_i_package_injective = n) -> (exists fp_gap_package_injective_j. fp_gap_package_injective_j + S fp_j_package_injective = n) -> (((exists ff_h_package_injective_left. ff_h_package_injective_left + S (fp_value_package_injective) = S ((S (fp_i_package_injective)) * x1)) /\ exists ff_q_package_injective_left. x = ff_q_package_injective_left * S ((S (fp_i_package_injective)) * x1) + (fp_value_package_injective))) -> (((exists ff_h_package_injective_right. ff_h_package_injective_right + S (fp_value_package_injective) = S ((S (fp_j_package_injective)) * x1)) /\ exists ff_q_package_injective_right. x = ff_q_package_injective_right * S ((S (fp_j_package_injective)) * x1) + (fp_value_package_injective))) -> fp_i_package_injective = fp_j_package_injective - 0039
specialize prime_mul_index_map_injective p - 0040
specialize prime_mul_index_map_injective n - 0041
specialize prime_mul_index_map_injective a - 0042
specialize prime_mul_index_map_injective x - 0043
specialize prime_mul_index_map_injective x1 - 0044
apply prime_mul_index_map_injective - 0045
exact hpn - 0046
exact hp - 0047
exact hnotdiv - 0048
exact hmaps_witness_witness - 0049
have haligned : forall fpr_i_package_aligned fpr_j_package_aligned fpr_x_package_aligned. (exists fpr_h_package_aligned. fpr_h_package_aligned + S fpr_i_package_aligned = n) -> (((exists ff_h_package_aligned_map. ff_h_package_aligned_map + S (fpr_j_package_aligned) = S ((S (fpr_i_package_aligned)) * x1)) /\ exists ff_q_package_aligned_map. x = ff_q_package_aligned_map * S ((S (fpr_i_package_aligned)) * x1) + (fpr_j_package_aligned))) -> (((exists ff_h_package_aligned_source. ff_h_package_aligned_source + S (fpr_x_package_aligned) = S ((S (fpr_j_package_aligned)) * c)) /\ exists ff_q_package_aligned_source. b = ff_q_package_aligned_source * S ((S (fpr_j_package_aligned)) * c) + (fpr_x_package_aligned))) -> (((exists ff_h_package_aligned_target. ff_h_package_aligned_target + S (fpr_x_package_aligned) = S ((S (fpr_i_package_aligned)) * x3)) /\ exists ff_q_package_aligned_target. x2 = ff_q_package_aligned_target * S ((S (fpr_i_package_aligned)) * x3) + (fpr_x_package_aligned))) - 0050
specialize beta_successor_range_reindex_aligned x - 0051
specialize beta_successor_range_reindex_aligned x1 - 0052
specialize beta_successor_range_reindex_aligned b - 0053
specialize beta_successor_range_reindex_aligned c - 0054
specialize beta_successor_range_reindex_aligned x2 - 0055
specialize beta_successor_range_reindex_aligned x3 - 0056
specialize beta_successor_range_reindex_aligned n - 0057
apply beta_successor_range_reindex_aligned - 0058
exact hbounded - 0059
exact hrange - 0060
exact hlifts_witness_witness - 0061
have hscale : forall fsp_index_package_scale fsp_source_package_scale fsp_target_package_scale. (exists fsp_gap_package_scale. fsp_gap_package_scale + S fsp_index_package_scale = n) -> (((exists fsp_source_height_package_scale. fsp_source_height_package_scale + S (fsp_source_package_scale) = S ((S (fsp_index_package_scale)) * c)) /\ exists fsp_source_quotient_package_scale. b = fsp_source_quotient_package_scale * S ((S (fsp_index_package_scale)) * c) + (fsp_source_package_scale))) -> (((exists fsp_target_height_package_scale. fsp_target_height_package_scale + S (fsp_target_package_scale) = S ((S (fsp_index_package_scale)) * x3)) /\ exists fsp_target_quotient_package_scale. x2 = fsp_target_quotient_package_scale * S ((S (fsp_index_package_scale)) * x3) + (fsp_target_package_scale))) -> (exists fsp_mod_left_package_scale fsp_mod_right_package_scale. a * fsp_source_package_scale + p * fsp_mod_left_package_scale = fsp_target_package_scale + p * fsp_mod_right_package_scale) - 0062
specialize beta_successor_range_scale_mod p - 0063
specialize beta_successor_range_scale_mod n - 0064
specialize beta_successor_range_scale_mod a - 0065
specialize beta_successor_range_scale_mod x - 0066
specialize beta_successor_range_scale_mod x1 - 0067
specialize beta_successor_range_scale_mod b - 0068
specialize beta_successor_range_scale_mod c - 0069
specialize beta_successor_range_scale_mod x2 - 0070
specialize beta_successor_range_scale_mod x3 - 0071
apply beta_successor_range_scale_mod - 0072
exact hmaps_witness_witness - 0073
exact hrange - 0074
exact hlifts_witness_witness - 0075
exists x - 0076
exists x1 - 0077
exists x2 - 0078
exists x3 - 0079
split - 0080
exact hbounded - 0081
split - 0082
exact hinjective - 0083
split - 0084
exact haligned - 0085
exact hscale