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. ∀ f. ∀ s. ∀ x. ∀ y. ∀ z. s = e + f → Pow(a,e,x) → Pow(a,f,y) → Pow(a,s,z) → z = x · yEvery 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
2 occurrences
Exact expanded native-PA statement
forall a e f s x y z. s = e + f -> (exists ff_b_add_left ff_c_add_left. ((forall ff_i_add_left_repeat. (exists ff_lt_add_left_repeat_bound. ff_lt_add_left_repeat_bound + S ff_i_add_left_repeat = e) -> (((exists ff_h_add_left_repeat_decoded. ff_h_add_left_repeat_decoded + S (a) = S ((S (ff_i_add_left_repeat)) * ff_c_add_left)) /\ exists ff_q_add_left_repeat_decoded. ff_b_add_left = ff_q_add_left_repeat_decoded * S ((S (ff_i_add_left_repeat)) * ff_c_add_left) + (a)))) /\ (exists ff_u_add_left_product ff_v_add_left_product. ((((exists ff_h_add_left_product_start. ff_h_add_left_product_start + S (1) = S ((S (0)) * ff_v_add_left_product)) /\ exists ff_q_add_left_product_start. ff_u_add_left_product = ff_q_add_left_product_start * S ((S (0)) * ff_v_add_left_product) + (1))) /\ ((((exists ff_h_add_left_product_terminal. ff_h_add_left_product_terminal + S (x) = S ((S (e)) * ff_v_add_left_product)) /\ exists ff_q_add_left_product_terminal. ff_u_add_left_product = ff_q_add_left_product_terminal * S ((S (e)) * ff_v_add_left_product) + (x))) /\ forall ff_i_add_left_product. (exists ff_lt_add_left_product_bound. ff_lt_add_left_product_bound + S ff_i_add_left_product = e) -> exists ff_p_add_left_product ff_r_add_left_product ff_s_add_left_product. ((((exists ff_h_add_left_product_factor. ff_h_add_left_product_factor + S (ff_p_add_left_product) = S ((S (ff_i_add_left_product)) * ff_c_add_left)) /\ exists ff_q_add_left_product_factor. ff_b_add_left = ff_q_add_left_product_factor * S ((S (ff_i_add_left_product)) * ff_c_add_left) + (ff_p_add_left_product))) /\ ((((exists ff_h_add_left_product_partial. ff_h_add_left_product_partial + S (ff_r_add_left_product) = S ((S (ff_i_add_left_product)) * ff_v_add_left_product)) /\ exists ff_q_add_left_product_partial. ff_u_add_left_product = ff_q_add_left_product_partial * S ((S (ff_i_add_left_product)) * ff_v_add_left_product) + (ff_r_add_left_product))) /\ ((((exists ff_h_add_left_product_successor. ff_h_add_left_product_successor + S (ff_s_add_left_product) = S ((S (S ff_i_add_left_product)) * ff_v_add_left_product)) /\ exists ff_q_add_left_product_successor. ff_u_add_left_product = ff_q_add_left_product_successor * S ((S (S ff_i_add_left_product)) * ff_v_add_left_product) + (ff_s_add_left_product))) /\ ff_s_add_left_product = ff_r_add_left_product * ff_p_add_left_product)))))))) -> (exists ff_b_add_right ff_c_add_right. ((forall ff_i_add_right_repeat. (exists ff_lt_add_right_repeat_bound. ff_lt_add_right_repeat_bound + S ff_i_add_right_repeat = f) -> (((exists ff_h_add_right_repeat_decoded. ff_h_add_right_repeat_decoded + S (a) = S ((S (ff_i_add_right_repeat)) * ff_c_add_right)) /\ exists ff_q_add_right_repeat_decoded. ff_b_add_right = ff_q_add_right_repeat_decoded * S ((S (ff_i_add_right_repeat)) * ff_c_add_right) + (a)))) /\ (exists ff_u_add_right_product ff_v_add_right_product. ((((exists ff_h_add_right_product_start. ff_h_add_right_product_start + S (1) = S ((S (0)) * ff_v_add_right_product)) /\ exists ff_q_add_right_product_start. ff_u_add_right_product = ff_q_add_right_product_start * S ((S (0)) * ff_v_add_right_product) + (1))) /\ ((((exists ff_h_add_right_product_terminal. ff_h_add_right_product_terminal + S (y) = S ((S (f)) * ff_v_add_right_product)) /\ exists ff_q_add_right_product_terminal. ff_u_add_right_product = ff_q_add_right_product_terminal * S ((S (f)) * ff_v_add_right_product) + (y))) /\ forall ff_i_add_right_product. (exists ff_lt_add_right_product_bound. ff_lt_add_right_product_bound + S ff_i_add_right_product = f) -> exists ff_p_add_right_product ff_r_add_right_product ff_s_add_right_product. ((((exists ff_h_add_right_product_factor. ff_h_add_right_product_factor + S (ff_p_add_right_product) = S ((S (ff_i_add_right_product)) * ff_c_add_right)) /\ exists ff_q_add_right_product_factor. ff_b_add_right = ff_q_add_right_product_factor * S ((S (ff_i_add_right_product)) * ff_c_add_right) + (ff_p_add_right_product))) /\ ((((exists ff_h_add_right_product_partial. ff_h_add_right_product_partial + S (ff_r_add_right_product) = S ((S (ff_i_add_right_product)) * ff_v_add_right_product)) /\ exists ff_q_add_right_product_partial. ff_u_add_right_product = ff_q_add_right_product_partial * S ((S (ff_i_add_right_product)) * ff_v_add_right_product) + (ff_r_add_right_product))) /\ ((((exists ff_h_add_right_product_successor. ff_h_add_right_product_successor + S (ff_s_add_right_product) = S ((S (S ff_i_add_right_product)) * ff_v_add_right_product)) /\ exists ff_q_add_right_product_successor. ff_u_add_right_product = ff_q_add_right_product_successor * S ((S (S ff_i_add_right_product)) * ff_v_add_right_product) + (ff_s_add_right_product))) /\ ff_s_add_right_product = ff_r_add_right_product * ff_p_add_right_product)))))))) -> (exists ff_b_add_total ff_c_add_total. ((forall ff_i_add_total_repeat. (exists ff_lt_add_total_repeat_bound. ff_lt_add_total_repeat_bound + S ff_i_add_total_repeat = s) -> (((exists ff_h_add_total_repeat_decoded. ff_h_add_total_repeat_decoded + S (a) = S ((S (ff_i_add_total_repeat)) * ff_c_add_total)) /\ exists ff_q_add_total_repeat_decoded. ff_b_add_total = ff_q_add_total_repeat_decoded * S ((S (ff_i_add_total_repeat)) * ff_c_add_total) + (a)))) /\ (exists ff_u_add_total_product ff_v_add_total_product. ((((exists ff_h_add_total_product_start. ff_h_add_total_product_start + S (1) = S ((S (0)) * ff_v_add_total_product)) /\ exists ff_q_add_total_product_start. ff_u_add_total_product = ff_q_add_total_product_start * S ((S (0)) * ff_v_add_total_product) + (1))) /\ ((((exists ff_h_add_total_product_terminal. ff_h_add_total_product_terminal + S (z) = S ((S (s)) * ff_v_add_total_product)) /\ exists ff_q_add_total_product_terminal. ff_u_add_total_product = ff_q_add_total_product_terminal * S ((S (s)) * ff_v_add_total_product) + (z))) /\ forall ff_i_add_total_product. (exists ff_lt_add_total_product_bound. ff_lt_add_total_product_bound + S ff_i_add_total_product = s) -> exists ff_p_add_total_product ff_r_add_total_product ff_s_add_total_product. ((((exists ff_h_add_total_product_factor. ff_h_add_total_product_factor + S (ff_p_add_total_product) = S ((S (ff_i_add_total_product)) * ff_c_add_total)) /\ exists ff_q_add_total_product_factor. ff_b_add_total = ff_q_add_total_product_factor * S ((S (ff_i_add_total_product)) * ff_c_add_total) + (ff_p_add_total_product))) /\ ((((exists ff_h_add_total_product_partial. ff_h_add_total_product_partial + S (ff_r_add_total_product) = S ((S (ff_i_add_total_product)) * ff_v_add_total_product)) /\ exists ff_q_add_total_product_partial. ff_u_add_total_product = ff_q_add_total_product_partial * S ((S (ff_i_add_total_product)) * ff_v_add_total_product) + (ff_r_add_total_product))) /\ ((((exists ff_h_add_total_product_successor. ff_h_add_total_product_successor + S (ff_s_add_total_product) = S ((S (S ff_i_add_total_product)) * ff_v_add_total_product)) /\ exists ff_q_add_total_product_successor. ff_u_add_total_product = ff_q_add_total_product_successor * S ((S (S ff_i_add_total_product)) * ff_v_add_total_product) + (ff_s_add_total_product))) /\ ff_s_add_total_product = ff_r_add_total_product * ff_p_add_total_product)))))))) -> z = x * yProof neighborhood
Direct theorem prerequisites
BT0081 pow_zero BT0082 pow_functional BT0083 pow_successor_decompose BT000A mul_one BT0008 mul_assocDirect theorem dependents
BT00QK power_divides_exponent_antitone BT00QL power_divides_add_mul BT00QQ power_valuation_mul_successor_not_divides BT00SM pow_mul_exp_from_total BT00SN pow_exponent_monotone_from_total BT00SW bertrand_h_six_step_transport_from_total BT00SX bertrand_j_six_step_transport_from_total BT00VV primorial_le_four_pow_bounded BT00W5 pow_eleven_two_le_pow_two_seven_from_total BT00W6 pow_six_ten_le_pow_four_thirteen_from_total BT00WF pow_six_six_le_pow_four_eight_from_total BT00WG pow_six_four_le_pow_four_six_from_total BT00WH pow_three_five_block_plus_one_le_pow_four_four_block_plus_one_from_total BT00WJ pow_two_successor_double_le_pow_four_successor_from_total BT00WP bertrand_h_root_32_from_total BT00WQ bertrand_h_root_33_from_total BT00WS bertrand_h_root_35_from_total BT00WT bertrand_h_root_36_from_total BT00WU bertrand_h_root_37_from_total BT00WV bertrand_j_base_thirty_two_window_from_total BT00X4 bertrand_floor_power_product_le_h_from_total BT00X5 bertrand_four_power_product_le_of_sum_from_total BT00XJ pow_le_pow_of_exponent_leDefinition-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 (5)
01Fix variables and assumptionsL1–2
02Induction on fL3–12
03Calculate and transport equalitiesL13–16
04Establish hzxL17–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow functional.
05Establish hy1L25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow zero.
06Calculate and transport equalitiesL35–35
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L35
symm
07Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact mul_one
08Fix variables and assumptionsL37–44
09Establish hy_stepL45–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor decompose.
- L45
have hy_step : ∃ r. Pow(a,f,r) ∧ y = r · aDefinitions: Pow(a,f,r)Original native command in the exact edition - L46
specialize pow_successor_decompose a - L47
specialize pow_successor_decompose f - L48
specialize pow_successor_decompose (S f) - L49
specialize pow_successor_decompose y - L50
apply pow_successor_decompose - L51
refl - L52
exact hy
10Separate the logical casesL53–54
11Establish hstL55–58
12Establish hz_stepL59–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor decompose.
- L59
have hz_step : ∃ r. Pow(a,e + f,r) ∧ z = r · aDefinitions: Pow(a,e + f,r)Original native command in the exact edition - L60
specialize pow_successor_decompose a - L61
specialize pow_successor_decompose (e + f) - L62
specialize pow_successor_decompose s - L63
specialize pow_successor_decompose z - L64
apply pow_successor_decompose - L65
exact hst - L66
exact hz
13Separate the logical casesL67–68
14Establish hprefixL69–78
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
15Calculate and transport equalitiesL79–79
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L79
trans x2 * a
16Use earlier factsL80–80
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
exact hz_step_witness_right
17Calculate and transport equalitiesL81–82
18Use earlier factsL83–83
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L83
exact hprefix
19Calculate and transport equalitiesL84–85
20Use earlier factsL86–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
apply mul_assoc
21Calculate and transport equalitiesL87–89
22Use earlier factsL90–90
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L90
exact hy_step_witness_right
Original defined command ledger · 90 lines
- 0001
intro a - 0002
intro e - 0003
induction f - 0004
intro s - 0005
intro x - 0006
intro y - 0007
intro z - 0008
intro hs - 0009
intro hx - 0010
intro hy - 0011
intro hz - 0012
rewrite PA3 at hs - 0013
rewrite hs at hz - 0014
rewrite hs at hz - 0015
rewrite hs at hz - 0016
rewrite hs at hz - 0017
have hzx : z = x - 0018
specialize pow_functional a - 0019
specialize pow_functional e - 0020
specialize pow_functional z - 0021
specialize pow_functional x - 0022
apply pow_functional - 0023
exact hz - 0024
exact hx - 0025
have hy1 : y = 1 - 0026
specialize pow_zero a - 0027
specialize pow_zero 0 - 0028
specialize pow_zero y - 0029
apply pow_zero - 0030
refl - 0031
exact hy - 0032
rewrite hzx - 0033
rewrite hy1 - 0034
specialize mul_one x - 0035
symm - 0036
exact mul_one - 0037
intro s - 0038
intro x - 0039
intro y - 0040
intro z - 0041
intro hs - 0042
intro hx - 0043
intro hy - 0044
intro hz - 0045
have hy_step : ∃ r. Pow(a,f,r) ∧ y = r · aExact native replay line
have hy_step : exists r. (exists ff_b_add_y_prefix ff_c_add_y_prefix. ((forall ff_i_add_y_prefix_repeat. (exists ff_lt_add_y_prefix_repeat_bound. ff_lt_add_y_prefix_repeat_bound + S ff_i_add_y_prefix_repeat = f) -> (((exists ff_h_add_y_prefix_repeat_decoded. ff_h_add_y_prefix_repeat_decoded + S (a) = S ((S (ff_i_add_y_prefix_repeat)) * ff_c_add_y_prefix)) /\ exists ff_q_add_y_prefix_repeat_decoded. ff_b_add_y_prefix = ff_q_add_y_prefix_repeat_decoded * S ((S (ff_i_add_y_prefix_repeat)) * ff_c_add_y_prefix) + (a)))) /\ (exists ff_u_add_y_prefix_product ff_v_add_y_prefix_product. ((((exists ff_h_add_y_prefix_product_start. ff_h_add_y_prefix_product_start + S (1) = S ((S (0)) * ff_v_add_y_prefix_product)) /\ exists ff_q_add_y_prefix_product_start. ff_u_add_y_prefix_product = ff_q_add_y_prefix_product_start * S ((S (0)) * ff_v_add_y_prefix_product) + (1))) /\ ((((exists ff_h_add_y_prefix_product_terminal. ff_h_add_y_prefix_product_terminal + S (r) = S ((S (f)) * ff_v_add_y_prefix_product)) /\ exists ff_q_add_y_prefix_product_terminal. ff_u_add_y_prefix_product = ff_q_add_y_prefix_product_terminal * S ((S (f)) * ff_v_add_y_prefix_product) + (r))) /\ forall ff_i_add_y_prefix_product. (exists ff_lt_add_y_prefix_product_bound. ff_lt_add_y_prefix_product_bound + S ff_i_add_y_prefix_product = f) -> exists ff_p_add_y_prefix_product ff_r_add_y_prefix_product ff_s_add_y_prefix_product. ((((exists ff_h_add_y_prefix_product_factor. ff_h_add_y_prefix_product_factor + S (ff_p_add_y_prefix_product) = S ((S (ff_i_add_y_prefix_product)) * ff_c_add_y_prefix)) /\ exists ff_q_add_y_prefix_product_factor. ff_b_add_y_prefix = ff_q_add_y_prefix_product_factor * S ((S (ff_i_add_y_prefix_product)) * ff_c_add_y_prefix) + (ff_p_add_y_prefix_product))) /\ ((((exists ff_h_add_y_prefix_product_partial. ff_h_add_y_prefix_product_partial + S (ff_r_add_y_prefix_product) = S ((S (ff_i_add_y_prefix_product)) * ff_v_add_y_prefix_product)) /\ exists ff_q_add_y_prefix_product_partial. ff_u_add_y_prefix_product = ff_q_add_y_prefix_product_partial * S ((S (ff_i_add_y_prefix_product)) * ff_v_add_y_prefix_product) + (ff_r_add_y_prefix_product))) /\ ((((exists ff_h_add_y_prefix_product_successor. ff_h_add_y_prefix_product_successor + S (ff_s_add_y_prefix_product) = S ((S (S ff_i_add_y_prefix_product)) * ff_v_add_y_prefix_product)) /\ exists ff_q_add_y_prefix_product_successor. ff_u_add_y_prefix_product = ff_q_add_y_prefix_product_successor * S ((S (S ff_i_add_y_prefix_product)) * ff_v_add_y_prefix_product) + (ff_s_add_y_prefix_product))) /\ ff_s_add_y_prefix_product = ff_r_add_y_prefix_product * ff_p_add_y_prefix_product)))))))) /\ y = r * a - 0046
specialize pow_successor_decompose a - 0047
specialize pow_successor_decompose f - 0048
specialize pow_successor_decompose (S f) - 0049
specialize pow_successor_decompose y - 0050
apply pow_successor_decompose - 0051
refl - 0052
exact hy - 0053
cases hy_step - 0054
cases hy_step_witness - 0055
have hst : s = S (e + f) - 0056
trans e + S f - 0057
exact hs - 0058
apply PA4 - 0059
have hz_step : ∃ r. Pow(a,e + f,r) ∧ z = r · aExact native replay line
have hz_step : exists r. (exists pa_b_add_z_prefix pa_c_add_z_prefix. ((forall pa_i_add_z_prefix_repeat. (exists pa_lt_add_z_prefix_repeat_bound. pa_lt_add_z_prefix_repeat_bound + S pa_i_add_z_prefix_repeat = e + f) -> (((exists pa_h_add_z_prefix_repeat_decoded. pa_h_add_z_prefix_repeat_decoded + S (a) = S ((S (pa_i_add_z_prefix_repeat)) * pa_c_add_z_prefix)) /\ exists pa_q_add_z_prefix_repeat_decoded. pa_b_add_z_prefix = pa_q_add_z_prefix_repeat_decoded * S ((S (pa_i_add_z_prefix_repeat)) * pa_c_add_z_prefix) + (a)))) /\ (exists pa_u_add_z_prefix_product pa_v_add_z_prefix_product. ((((exists pa_h_add_z_prefix_product_start. pa_h_add_z_prefix_product_start + S (1) = S ((S (0)) * pa_v_add_z_prefix_product)) /\ exists pa_q_add_z_prefix_product_start. pa_u_add_z_prefix_product = pa_q_add_z_prefix_product_start * S ((S (0)) * pa_v_add_z_prefix_product) + (1))) /\ ((((exists pa_h_add_z_prefix_product_terminal. pa_h_add_z_prefix_product_terminal + S (r) = S ((S (e + f)) * pa_v_add_z_prefix_product)) /\ exists pa_q_add_z_prefix_product_terminal. pa_u_add_z_prefix_product = pa_q_add_z_prefix_product_terminal * S ((S (e + f)) * pa_v_add_z_prefix_product) + (r))) /\ forall pa_i_add_z_prefix_product. (exists pa_lt_add_z_prefix_product_bound. pa_lt_add_z_prefix_product_bound + S pa_i_add_z_prefix_product = e + f) -> exists pa_p_add_z_prefix_product pa_r_add_z_prefix_product pa_s_add_z_prefix_product. ((((exists pa_h_add_z_prefix_product_factor. pa_h_add_z_prefix_product_factor + S (pa_p_add_z_prefix_product) = S ((S (pa_i_add_z_prefix_product)) * pa_c_add_z_prefix)) /\ exists pa_q_add_z_prefix_product_factor. pa_b_add_z_prefix = pa_q_add_z_prefix_product_factor * S ((S (pa_i_add_z_prefix_product)) * pa_c_add_z_prefix) + (pa_p_add_z_prefix_product))) /\ ((((exists pa_h_add_z_prefix_product_partial. pa_h_add_z_prefix_product_partial + S (pa_r_add_z_prefix_product) = S ((S (pa_i_add_z_prefix_product)) * pa_v_add_z_prefix_product)) /\ exists pa_q_add_z_prefix_product_partial. pa_u_add_z_prefix_product = pa_q_add_z_prefix_product_partial * S ((S (pa_i_add_z_prefix_product)) * pa_v_add_z_prefix_product) + (pa_r_add_z_prefix_product))) /\ ((((exists pa_h_add_z_prefix_product_successor. pa_h_add_z_prefix_product_successor + S (pa_s_add_z_prefix_product) = S ((S (S pa_i_add_z_prefix_product)) * pa_v_add_z_prefix_product)) /\ exists pa_q_add_z_prefix_product_successor. pa_u_add_z_prefix_product = pa_q_add_z_prefix_product_successor * S ((S (S pa_i_add_z_prefix_product)) * pa_v_add_z_prefix_product) + (pa_s_add_z_prefix_product))) /\ pa_s_add_z_prefix_product = pa_r_add_z_prefix_product * pa_p_add_z_prefix_product)))))))) /\ z = r * a - 0060
specialize pow_successor_decompose a - 0061
specialize pow_successor_decompose (e + f) - 0062
specialize pow_successor_decompose s - 0063
specialize pow_successor_decompose z - 0064
apply pow_successor_decompose - 0065
exact hst - 0066
exact hz - 0067
cases hz_step - 0068
cases hz_step_witness - 0069
have hprefix : x2 = x * x1 - 0070
specialize IH (e + f) - 0071
specialize IH x - 0072
specialize IH x1 - 0073
specialize IH x2 - 0074
apply IH - 0075
refl - 0076
exact hx - 0077
exact hy_step_witness_left - 0078
exact hz_step_witness_left - 0079
trans x2 * a - 0080
exact hz_step_witness_right - 0081
trans (x * x1) * a - 0082
congr - 0083
exact hprefix - 0084
refl - 0085
trans x * (x1 * a) - 0086
apply mul_assoc - 0087
congr - 0088
refl - 0089
symm - 0090
exact hy_step_witness_right