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.
Statement with defined notation
∀ p. ∀ e. ∀ x. Prime(p) → Pow(p,e,x) → Le(e,x)Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
3 occurrences
In local proof propositions
6 occurrences
Exact expanded native-PA statement
forall p e x. ((~(p = 1) /\ forall frm_prime_left_bpvl_prime frm_prime_right_bpvl_prime. p = frm_prime_left_bpvl_prime * frm_prime_right_bpvl_prime -> frm_prime_left_bpvl_prime = 1 \/ frm_prime_right_bpvl_prime = 1)) -> (exists ff_b_bpvl_exponent_bound ff_c_bpvl_exponent_bound. ((forall ff_i_bpvl_exponent_bound_repeat. (exists ff_lt_bpvl_exponent_bound_repeat_bound. ff_lt_bpvl_exponent_bound_repeat_bound + S ff_i_bpvl_exponent_bound_repeat = e) -> (((exists ff_h_bpvl_exponent_bound_repeat_decoded. ff_h_bpvl_exponent_bound_repeat_decoded + S (p) = S ((S (ff_i_bpvl_exponent_bound_repeat)) * ff_c_bpvl_exponent_bound)) /\ exists ff_q_bpvl_exponent_bound_repeat_decoded. ff_b_bpvl_exponent_bound = ff_q_bpvl_exponent_bound_repeat_decoded * S ((S (ff_i_bpvl_exponent_bound_repeat)) * ff_c_bpvl_exponent_bound) + (p)))) /\ (exists ff_u_bpvl_exponent_bound_product ff_v_bpvl_exponent_bound_product. ((((exists ff_h_bpvl_exponent_bound_product_start. ff_h_bpvl_exponent_bound_product_start + S (1) = S ((S (0)) * ff_v_bpvl_exponent_bound_product)) /\ exists ff_q_bpvl_exponent_bound_product_start. ff_u_bpvl_exponent_bound_product = ff_q_bpvl_exponent_bound_product_start * S ((S (0)) * ff_v_bpvl_exponent_bound_product) + (1))) /\ ((((exists ff_h_bpvl_exponent_bound_product_terminal. ff_h_bpvl_exponent_bound_product_terminal + S (x) = S ((S (e)) * ff_v_bpvl_exponent_bound_product)) /\ exists ff_q_bpvl_exponent_bound_product_terminal. ff_u_bpvl_exponent_bound_product = ff_q_bpvl_exponent_bound_product_terminal * S ((S (e)) * ff_v_bpvl_exponent_bound_product) + (x))) /\ forall ff_i_bpvl_exponent_bound_product. (exists ff_lt_bpvl_exponent_bound_product_bound. ff_lt_bpvl_exponent_bound_product_bound + S ff_i_bpvl_exponent_bound_product = e) -> exists ff_p_bpvl_exponent_bound_product ff_r_bpvl_exponent_bound_product ff_s_bpvl_exponent_bound_product. ((((exists ff_h_bpvl_exponent_bound_product_factor. ff_h_bpvl_exponent_bound_product_factor + S (ff_p_bpvl_exponent_bound_product) = S ((S (ff_i_bpvl_exponent_bound_product)) * ff_c_bpvl_exponent_bound)) /\ exists ff_q_bpvl_exponent_bound_product_factor. ff_b_bpvl_exponent_bound = ff_q_bpvl_exponent_bound_product_factor * S ((S (ff_i_bpvl_exponent_bound_product)) * ff_c_bpvl_exponent_bound) + (ff_p_bpvl_exponent_bound_product))) /\ ((((exists ff_h_bpvl_exponent_bound_product_partial. ff_h_bpvl_exponent_bound_product_partial + S (ff_r_bpvl_exponent_bound_product) = S ((S (ff_i_bpvl_exponent_bound_product)) * ff_v_bpvl_exponent_bound_product)) /\ exists ff_q_bpvl_exponent_bound_product_partial. ff_u_bpvl_exponent_bound_product = ff_q_bpvl_exponent_bound_product_partial * S ((S (ff_i_bpvl_exponent_bound_product)) * ff_v_bpvl_exponent_bound_product) + (ff_r_bpvl_exponent_bound_product))) /\ ((((exists ff_h_bpvl_exponent_bound_product_successor. ff_h_bpvl_exponent_bound_product_successor + S (ff_s_bpvl_exponent_bound_product) = S ((S (S ff_i_bpvl_exponent_bound_product)) * ff_v_bpvl_exponent_bound_product)) /\ exists ff_q_bpvl_exponent_bound_product_successor. ff_u_bpvl_exponent_bound_product = ff_q_bpvl_exponent_bound_product_successor * S ((S (S ff_i_bpvl_exponent_bound_product)) * ff_v_bpvl_exponent_bound_product) + (ff_s_bpvl_exponent_bound_product))) /\ ff_s_bpvl_exponent_bound_product = ff_r_bpvl_exponent_bound_product * ff_p_bpvl_exponent_bound_product)))))))) -> (exists bpv_gap_power_exponent. bpv_gap_power_exponent + e = x)Proof neighborhood
Direct theorem prerequisites
BT0083 pow_successor_decompose BT000W zero_le BT003G prime_nonzero BT0010 one_le_of_ne_zero BT00Q1 pow_nonzero_of_one_le BT00QD prime_two_le BT0016 succ_le_succ BT00QE succ_le_mul_of_two_le_right BT000F le_transDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic script.
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 (9)
01Fix variables and assumptionsL1–2
02Induction on eL3–11
03Establish hstepL12–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor decompose.
- L12
have hstep : ∃ r. Pow(p,e,r) ∧ x = r · pDefinitions: Pow(p,e,r)Original native command in the exact edition - L13
specialize pow_successor_decompose p - L14
specialize pow_successor_decompose e - L15
specialize pow_successor_decompose (S e) - L16
specialize pow_successor_decompose x - L17
apply pow_successor_decompose - L18
refl - L19
exact hx
04Separate the logical casesL20–21
05Establish he_prefixL22–26
06Establish hp0L27–32
07Establish hp1L33–36
08Establish hprefix0L37–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow nonzero of one le.
09Establish hp2L46–49
10Establish hprefix_stepL50–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ le mul of two le right.
- L50
have hprefix_step : Lt(x1,x1 · p)Definitions: Lt(x1,x1 · p)Original native command in the exact edition - L51
specialize succ_le_mul_of_two_le_right x1 - L52
specialize succ_le_mul_of_two_le_right p - L53
apply succ_le_mul_of_two_le_right - L54
exact hprefix0 - L55
exact hp2
11Establish he_stepL56–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ le succ.
Original defined command ledger · 67 lines
- 0001
intro p - 0002
intro e - 0003
induction e - 0004
intro x - 0005
intro hp - 0006
intro hx - 0007
specialize zero_le x - 0008
exact zero_le - 0009
intro x - 0010
intro hp - 0011
intro hx - 0012
have hstep : ∃ r. Pow(p,e,r) ∧ x = r · pExact native replay line
have hstep : exists r. (exists ff_b_bpvl_prefix ff_c_bpvl_prefix. ((forall ff_i_bpvl_prefix_repeat. (exists ff_lt_bpvl_prefix_repeat_bound. ff_lt_bpvl_prefix_repeat_bound + S ff_i_bpvl_prefix_repeat = e) -> (((exists ff_h_bpvl_prefix_repeat_decoded. ff_h_bpvl_prefix_repeat_decoded + S (p) = S ((S (ff_i_bpvl_prefix_repeat)) * ff_c_bpvl_prefix)) /\ exists ff_q_bpvl_prefix_repeat_decoded. ff_b_bpvl_prefix = ff_q_bpvl_prefix_repeat_decoded * S ((S (ff_i_bpvl_prefix_repeat)) * ff_c_bpvl_prefix) + (p)))) /\ (exists ff_u_bpvl_prefix_product ff_v_bpvl_prefix_product. ((((exists ff_h_bpvl_prefix_product_start. ff_h_bpvl_prefix_product_start + S (1) = S ((S (0)) * ff_v_bpvl_prefix_product)) /\ exists ff_q_bpvl_prefix_product_start. ff_u_bpvl_prefix_product = ff_q_bpvl_prefix_product_start * S ((S (0)) * ff_v_bpvl_prefix_product) + (1))) /\ ((((exists ff_h_bpvl_prefix_product_terminal. ff_h_bpvl_prefix_product_terminal + S (r) = S ((S (e)) * ff_v_bpvl_prefix_product)) /\ exists ff_q_bpvl_prefix_product_terminal. ff_u_bpvl_prefix_product = ff_q_bpvl_prefix_product_terminal * S ((S (e)) * ff_v_bpvl_prefix_product) + (r))) /\ forall ff_i_bpvl_prefix_product. (exists ff_lt_bpvl_prefix_product_bound. ff_lt_bpvl_prefix_product_bound + S ff_i_bpvl_prefix_product = e) -> exists ff_p_bpvl_prefix_product ff_r_bpvl_prefix_product ff_s_bpvl_prefix_product. ((((exists ff_h_bpvl_prefix_product_factor. ff_h_bpvl_prefix_product_factor + S (ff_p_bpvl_prefix_product) = S ((S (ff_i_bpvl_prefix_product)) * ff_c_bpvl_prefix)) /\ exists ff_q_bpvl_prefix_product_factor. ff_b_bpvl_prefix = ff_q_bpvl_prefix_product_factor * S ((S (ff_i_bpvl_prefix_product)) * ff_c_bpvl_prefix) + (ff_p_bpvl_prefix_product))) /\ ((((exists ff_h_bpvl_prefix_product_partial. ff_h_bpvl_prefix_product_partial + S (ff_r_bpvl_prefix_product) = S ((S (ff_i_bpvl_prefix_product)) * ff_v_bpvl_prefix_product)) /\ exists ff_q_bpvl_prefix_product_partial. ff_u_bpvl_prefix_product = ff_q_bpvl_prefix_product_partial * S ((S (ff_i_bpvl_prefix_product)) * ff_v_bpvl_prefix_product) + (ff_r_bpvl_prefix_product))) /\ ((((exists ff_h_bpvl_prefix_product_successor. ff_h_bpvl_prefix_product_successor + S (ff_s_bpvl_prefix_product) = S ((S (S ff_i_bpvl_prefix_product)) * ff_v_bpvl_prefix_product)) /\ exists ff_q_bpvl_prefix_product_successor. ff_u_bpvl_prefix_product = ff_q_bpvl_prefix_product_successor * S ((S (S ff_i_bpvl_prefix_product)) * ff_v_bpvl_prefix_product) + (ff_s_bpvl_prefix_product))) /\ ff_s_bpvl_prefix_product = ff_r_bpvl_prefix_product * ff_p_bpvl_prefix_product)))))))) /\ x = r * p - 0013
specialize pow_successor_decompose p - 0014
specialize pow_successor_decompose e - 0015
specialize pow_successor_decompose (S e) - 0016
specialize pow_successor_decompose x - 0017
apply pow_successor_decompose - 0018
refl - 0019
exact hx - 0020
cases hstep - 0021
cases hstep_witness - 0022
have he_prefix : Le(e,x1)Exact native replay line
have he_prefix : exists k. k + e = x1 - 0023
specialize IH x1 - 0024
apply IH - 0025
exact hp - 0026
exact hstep_witness_left - 0027
have hp0 : ~(p = 0) - 0028
intro hpzero - 0029
specialize prime_nonzero p - 0030
apply prime_nonzero - 0031
exact hp - 0032
exact hpzero - 0033
have hp1 : Lt(0,p)Exact native replay line
have hp1 : exists k. k + 1 = p - 0034
specialize one_le_of_ne_zero p - 0035
apply one_le_of_ne_zero - 0036
exact hp0 - 0037
have hprefix0 : ~(x1 = 0) - 0038
intro hprefixzero - 0039
specialize pow_nonzero_of_one_le p - 0040
specialize pow_nonzero_of_one_le e - 0041
specialize pow_nonzero_of_one_le x1 - 0042
apply pow_nonzero_of_one_le - 0043
exact hp1 - 0044
exact hstep_witness_left - 0045
exact hprefixzero - 0046
have hp2 : Lt(1,p)Exact native replay line
have hp2 : exists k. k + 2 = p - 0047
specialize prime_two_le p - 0048
apply prime_two_le - 0049
exact hp - 0050
have hprefix_step : Lt(x1,x1 · p)Exact native replay line
have hprefix_step : exists k. k + S x1 = x1 * p - 0051
specialize succ_le_mul_of_two_le_right x1 - 0052
specialize succ_le_mul_of_two_le_right p - 0053
apply succ_le_mul_of_two_le_right - 0054
exact hprefix0 - 0055
exact hp2 - 0056
have he_step : Lt(e,S x1)Exact native replay line
have he_step : exists k. k + S e = S x1 - 0057
specialize succ_le_succ e - 0058
specialize succ_le_succ x1 - 0059
apply succ_le_succ - 0060
exact he_prefix - 0061
rewrite hstep_witness_right - 0062
specialize le_trans (S e) - 0063
specialize le_trans (S x1) - 0064
specialize le_trans (x1 * p) - 0065
apply le_trans - 0066
exact he_step - 0067
exact hprefix_step