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
∀ a. ∀ e. ∀ se. ∀ n. se = S e → Pow(a,se,n) → ∃ x. Pow(a,e,x) ∧ n = x · aEvery 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
2 occurrences
In local proof propositions
2 occurrences
Exact expanded native-PA statement
forall a e se n. se = S e -> (exists ff_b_s ff_c_s. ((forall ff_i_s_repeat. (exists ff_lt_s_repeat_bound. ff_lt_s_repeat_bound + S ff_i_s_repeat = se) -> (((exists ff_h_s_repeat_decoded. ff_h_s_repeat_decoded + S (a) = S ((S (ff_i_s_repeat)) * ff_c_s)) /\ exists ff_q_s_repeat_decoded. ff_b_s = ff_q_s_repeat_decoded * S ((S (ff_i_s_repeat)) * ff_c_s) + (a)))) /\ (exists ff_u_s_product ff_v_s_product. ((((exists ff_h_s_product_start. ff_h_s_product_start + S (1) = S ((S (0)) * ff_v_s_product)) /\ exists ff_q_s_product_start. ff_u_s_product = ff_q_s_product_start * S ((S (0)) * ff_v_s_product) + (1))) /\ ((((exists ff_h_s_product_terminal. ff_h_s_product_terminal + S (n) = S ((S (se)) * ff_v_s_product)) /\ exists ff_q_s_product_terminal. ff_u_s_product = ff_q_s_product_terminal * S ((S (se)) * ff_v_s_product) + (n))) /\ forall ff_i_s_product. (exists ff_lt_s_product_bound. ff_lt_s_product_bound + S ff_i_s_product = se) -> exists ff_p_s_product ff_r_s_product ff_s_s_product. ((((exists ff_h_s_product_factor. ff_h_s_product_factor + S (ff_p_s_product) = S ((S (ff_i_s_product)) * ff_c_s)) /\ exists ff_q_s_product_factor. ff_b_s = ff_q_s_product_factor * S ((S (ff_i_s_product)) * ff_c_s) + (ff_p_s_product))) /\ ((((exists ff_h_s_product_partial. ff_h_s_product_partial + S (ff_r_s_product) = S ((S (ff_i_s_product)) * ff_v_s_product)) /\ exists ff_q_s_product_partial. ff_u_s_product = ff_q_s_product_partial * S ((S (ff_i_s_product)) * ff_v_s_product) + (ff_r_s_product))) /\ ((((exists ff_h_s_product_successor. ff_h_s_product_successor + S (ff_s_s_product) = S ((S (S ff_i_s_product)) * ff_v_s_product)) /\ exists ff_q_s_product_successor. ff_u_s_product = ff_q_s_product_successor * S ((S (S ff_i_s_product)) * ff_v_s_product) + (ff_s_s_product))) /\ ff_s_s_product = ff_r_s_product * ff_p_s_product)))))))) -> exists r. (exists ff_b_p ff_c_p. ((forall ff_i_p_repeat. (exists ff_lt_p_repeat_bound. ff_lt_p_repeat_bound + S ff_i_p_repeat = e) -> (((exists ff_h_p_repeat_decoded. ff_h_p_repeat_decoded + S (a) = S ((S (ff_i_p_repeat)) * ff_c_p)) /\ exists ff_q_p_repeat_decoded. ff_b_p = ff_q_p_repeat_decoded * S ((S (ff_i_p_repeat)) * ff_c_p) + (a)))) /\ (exists ff_u_p_product ff_v_p_product. ((((exists ff_h_p_product_start. ff_h_p_product_start + S (1) = S ((S (0)) * ff_v_p_product)) /\ exists ff_q_p_product_start. ff_u_p_product = ff_q_p_product_start * S ((S (0)) * ff_v_p_product) + (1))) /\ ((((exists ff_h_p_product_terminal. ff_h_p_product_terminal + S (r) = S ((S (e)) * ff_v_p_product)) /\ exists ff_q_p_product_terminal. ff_u_p_product = ff_q_p_product_terminal * S ((S (e)) * ff_v_p_product) + (r))) /\ forall ff_i_p_product. (exists ff_lt_p_product_bound. ff_lt_p_product_bound + S ff_i_p_product = e) -> exists ff_p_p_product ff_r_p_product ff_s_p_product. ((((exists ff_h_p_product_factor. ff_h_p_product_factor + S (ff_p_p_product) = S ((S (ff_i_p_product)) * ff_c_p)) /\ exists ff_q_p_product_factor. ff_b_p = ff_q_p_product_factor * S ((S (ff_i_p_product)) * ff_c_p) + (ff_p_p_product))) /\ ((((exists ff_h_p_product_partial. ff_h_p_product_partial + S (ff_r_p_product) = S ((S (ff_i_p_product)) * ff_v_p_product)) /\ exists ff_q_p_product_partial. ff_u_p_product = ff_q_p_product_partial * S ((S (ff_i_p_product)) * ff_v_p_product) + (ff_r_p_product))) /\ ((((exists ff_h_p_product_successor. ff_h_p_product_successor + S (ff_s_p_product) = S ((S (S ff_i_p_product)) * ff_v_p_product)) /\ exists ff_q_p_product_successor. ff_u_p_product = ff_q_p_product_successor * S ((S (S ff_i_p_product)) * ff_v_p_product) + (ff_s_p_product))) /\ ff_s_p_product = ff_r_p_product * ff_p_p_product)))))))) /\ n = r * aProof neighborhood
Direct theorem prerequisites
Direct theorem dependents
BT0093 pow_one_from_zero_successor BT0095 pow_successor_pair_mul BT009V pow_two_from_one_successor BT009X pow_add BT00PY pow_base_monotone BT00Q0 one_le_pow BT00QF prime_power_exponent_le BT00QV pow_mul_base BT00RL prime_power_valuation_one_zero BT00SM pow_mul_exp_from_total BT00U1 pow_four_four_exact BT00U4 four_pow_lt_mul_central_binom BT00VM central_binom_strong_upper_of_laws BT00YU coprime_power_right BT00YV coprime_powersDefinition-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 (4)
01Fix variables and assumptionsL1–6
02Calculate and transport equalitiesL7–10
03Separate the logical casesL11–13
04Establish hdecompL14–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
- L14
have hdecomp : ∃ p. ∃ r. BetaAt(x,x1,e,p) ∧ (Product(x,x1,e,r) ∧ n = r · p)Definitions: BetaAt(x,x1,e,p)Product(x,x1,e,r)Original native command in the exact edition - L15
specialize beta_product_succ_decompose x - L16
specialize beta_product_succ_decompose x1 - L17
specialize beta_product_succ_decompose e - L18
specialize beta_product_succ_decompose n - L19
apply beta_product_succ_decompose - L20
exact hpow_witness_witness_right
05Separate the logical casesL21–24
06Establish hpaL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta repeat entry eq.
- L25
have hpa : x2 = a - L26
specialize beta_repeat_entry_eq x - L27
specialize beta_repeat_entry_eq x1 - L28
specialize beta_repeat_entry_eq a - L29
specialize beta_repeat_entry_eq (S e) - L30
specialize beta_repeat_entry_eq e - L31
specialize beta_repeat_entry_eq x2 - L32
apply beta_repeat_entry_eq - L33
exact hpow_witness_witness_left - L34
specialize le_refl (S e)
07Use earlier factsL35–36
08Construct an explicit witnessL37–37
Supply the displayed value, then prove that it has the required property.
- L37
exists x3
09Separate the logical casesL38–38
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L38
split
10Construct an explicit witnessL39–40
11Separate the logical casesL41–41
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L41
split
12Fix variables and assumptionsL42–43
13Use earlier factsL44–50
14Calculate and transport equalitiesL51–51
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L51
trans x3 * x2
15Use earlier factsL52–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L52
exact hdecomp_witness_witness_right_right
Original defined command ledger · 54 lines
- 0001
intro a - 0002
intro e - 0003
intro se - 0004
intro n - 0005
intro hse - 0006
intro hpow - 0007
rewrite hse at hpow - 0008
rewrite hse at hpow - 0009
rewrite hse at hpow - 0010
rewrite hse at hpow - 0011
cases hpow - 0012
cases hpow_witness - 0013
cases hpow_witness_witness - 0014
have hdecomp : ∃ p. ∃ r. BetaAt(x,x1,e,p) ∧ (Product(x,x1,e,r) ∧ n = r · p)Exact native replay line
have hdecomp : exists p r. (((exists ff_h_pow_succ_factor. ff_h_pow_succ_factor + S (p) = S ((S (e)) * x1)) /\ exists ff_q_pow_succ_factor. x = ff_q_pow_succ_factor * S ((S (e)) * x1) + (p))) /\ ((exists ff_u_pow_succ_prefix ff_v_pow_succ_prefix. ((((exists ff_h_pow_succ_prefix_start. ff_h_pow_succ_prefix_start + S (1) = S ((S (0)) * ff_v_pow_succ_prefix)) /\ exists ff_q_pow_succ_prefix_start. ff_u_pow_succ_prefix = ff_q_pow_succ_prefix_start * S ((S (0)) * ff_v_pow_succ_prefix) + (1))) /\ ((((exists ff_h_pow_succ_prefix_terminal. ff_h_pow_succ_prefix_terminal + S (r) = S ((S (e)) * ff_v_pow_succ_prefix)) /\ exists ff_q_pow_succ_prefix_terminal. ff_u_pow_succ_prefix = ff_q_pow_succ_prefix_terminal * S ((S (e)) * ff_v_pow_succ_prefix) + (r))) /\ forall ff_i_pow_succ_prefix. (exists ff_lt_pow_succ_prefix_bound. ff_lt_pow_succ_prefix_bound + S ff_i_pow_succ_prefix = e) -> exists ff_p_pow_succ_prefix ff_r_pow_succ_prefix ff_s_pow_succ_prefix. ((((exists ff_h_pow_succ_prefix_factor. ff_h_pow_succ_prefix_factor + S (ff_p_pow_succ_prefix) = S ((S (ff_i_pow_succ_prefix)) * x1)) /\ exists ff_q_pow_succ_prefix_factor. x = ff_q_pow_succ_prefix_factor * S ((S (ff_i_pow_succ_prefix)) * x1) + (ff_p_pow_succ_prefix))) /\ ((((exists ff_h_pow_succ_prefix_partial. ff_h_pow_succ_prefix_partial + S (ff_r_pow_succ_prefix) = S ((S (ff_i_pow_succ_prefix)) * ff_v_pow_succ_prefix)) /\ exists ff_q_pow_succ_prefix_partial. ff_u_pow_succ_prefix = ff_q_pow_succ_prefix_partial * S ((S (ff_i_pow_succ_prefix)) * ff_v_pow_succ_prefix) + (ff_r_pow_succ_prefix))) /\ ((((exists ff_h_pow_succ_prefix_successor. ff_h_pow_succ_prefix_successor + S (ff_s_pow_succ_prefix) = S ((S (S ff_i_pow_succ_prefix)) * ff_v_pow_succ_prefix)) /\ exists ff_q_pow_succ_prefix_successor. ff_u_pow_succ_prefix = ff_q_pow_succ_prefix_successor * S ((S (S ff_i_pow_succ_prefix)) * ff_v_pow_succ_prefix) + (ff_s_pow_succ_prefix))) /\ ff_s_pow_succ_prefix = ff_r_pow_succ_prefix * ff_p_pow_succ_prefix)))))) /\ n = r * p) - 0015
specialize beta_product_succ_decompose x - 0016
specialize beta_product_succ_decompose x1 - 0017
specialize beta_product_succ_decompose e - 0018
specialize beta_product_succ_decompose n - 0019
apply beta_product_succ_decompose - 0020
exact hpow_witness_witness_right - 0021
cases hdecomp - 0022
cases hdecomp_witness - 0023
cases hdecomp_witness_witness - 0024
cases hdecomp_witness_witness_right - 0025
have hpa : x2 = a - 0026
specialize beta_repeat_entry_eq x - 0027
specialize beta_repeat_entry_eq x1 - 0028
specialize beta_repeat_entry_eq a - 0029
specialize beta_repeat_entry_eq (S e) - 0030
specialize beta_repeat_entry_eq e - 0031
specialize beta_repeat_entry_eq x2 - 0032
apply beta_repeat_entry_eq - 0033
exact hpow_witness_witness_left - 0034
specialize le_refl (S e) - 0035
exact le_refl - 0036
exact hdecomp_witness_witness_left - 0037
exists x3 - 0038
split - 0039
exists x - 0040
exists x1 - 0041
split - 0042
intro i - 0043
intro hi - 0044
specialize hpow_witness_witness_left i - 0045
apply hpow_witness_witness_left - 0046
specialize le_succ (S i) - 0047
specialize le_succ e - 0048
apply le_succ - 0049
exact hi - 0050
exact hdecomp_witness_witness_right_left - 0051
trans x3 * x2 - 0052
exact hdecomp_witness_witness_right_right - 0053
rewrite hpa - 0054
refl