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. ∀ b. ∀ e. ∀ x. ∀ y. ∀ z. Pow(a,e,x) → Pow(b,e,y) → Pow(a · b,e,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
3 occurrences
Exact expanded native-PA statement
forall a b e x y z. (exists ff_b_bie_mul_left ff_c_bie_mul_left. ((forall ff_i_bie_mul_left_repeat. (exists ff_lt_bie_mul_left_repeat_bound. ff_lt_bie_mul_left_repeat_bound + S ff_i_bie_mul_left_repeat = e) -> (((exists ff_h_bie_mul_left_repeat_decoded. ff_h_bie_mul_left_repeat_decoded + S (a) = S ((S (ff_i_bie_mul_left_repeat)) * ff_c_bie_mul_left)) /\ exists ff_q_bie_mul_left_repeat_decoded. ff_b_bie_mul_left = ff_q_bie_mul_left_repeat_decoded * S ((S (ff_i_bie_mul_left_repeat)) * ff_c_bie_mul_left) + (a)))) /\ (exists ff_u_bie_mul_left_product ff_v_bie_mul_left_product. ((((exists ff_h_bie_mul_left_product_start. ff_h_bie_mul_left_product_start + S (1) = S ((S (0)) * ff_v_bie_mul_left_product)) /\ exists ff_q_bie_mul_left_product_start. ff_u_bie_mul_left_product = ff_q_bie_mul_left_product_start * S ((S (0)) * ff_v_bie_mul_left_product) + (1))) /\ ((((exists ff_h_bie_mul_left_product_terminal. ff_h_bie_mul_left_product_terminal + S (x) = S ((S (e)) * ff_v_bie_mul_left_product)) /\ exists ff_q_bie_mul_left_product_terminal. ff_u_bie_mul_left_product = ff_q_bie_mul_left_product_terminal * S ((S (e)) * ff_v_bie_mul_left_product) + (x))) /\ forall ff_i_bie_mul_left_product. (exists ff_lt_bie_mul_left_product_bound. ff_lt_bie_mul_left_product_bound + S ff_i_bie_mul_left_product = e) -> exists ff_p_bie_mul_left_product ff_r_bie_mul_left_product ff_s_bie_mul_left_product. ((((exists ff_h_bie_mul_left_product_factor. ff_h_bie_mul_left_product_factor + S (ff_p_bie_mul_left_product) = S ((S (ff_i_bie_mul_left_product)) * ff_c_bie_mul_left)) /\ exists ff_q_bie_mul_left_product_factor. ff_b_bie_mul_left = ff_q_bie_mul_left_product_factor * S ((S (ff_i_bie_mul_left_product)) * ff_c_bie_mul_left) + (ff_p_bie_mul_left_product))) /\ ((((exists ff_h_bie_mul_left_product_partial. ff_h_bie_mul_left_product_partial + S (ff_r_bie_mul_left_product) = S ((S (ff_i_bie_mul_left_product)) * ff_v_bie_mul_left_product)) /\ exists ff_q_bie_mul_left_product_partial. ff_u_bie_mul_left_product = ff_q_bie_mul_left_product_partial * S ((S (ff_i_bie_mul_left_product)) * ff_v_bie_mul_left_product) + (ff_r_bie_mul_left_product))) /\ ((((exists ff_h_bie_mul_left_product_successor. ff_h_bie_mul_left_product_successor + S (ff_s_bie_mul_left_product) = S ((S (S ff_i_bie_mul_left_product)) * ff_v_bie_mul_left_product)) /\ exists ff_q_bie_mul_left_product_successor. ff_u_bie_mul_left_product = ff_q_bie_mul_left_product_successor * S ((S (S ff_i_bie_mul_left_product)) * ff_v_bie_mul_left_product) + (ff_s_bie_mul_left_product))) /\ ff_s_bie_mul_left_product = ff_r_bie_mul_left_product * ff_p_bie_mul_left_product)))))))) -> (exists ff_b_bie_mul_right ff_c_bie_mul_right. ((forall ff_i_bie_mul_right_repeat. (exists ff_lt_bie_mul_right_repeat_bound. ff_lt_bie_mul_right_repeat_bound + S ff_i_bie_mul_right_repeat = e) -> (((exists ff_h_bie_mul_right_repeat_decoded. ff_h_bie_mul_right_repeat_decoded + S (b) = S ((S (ff_i_bie_mul_right_repeat)) * ff_c_bie_mul_right)) /\ exists ff_q_bie_mul_right_repeat_decoded. ff_b_bie_mul_right = ff_q_bie_mul_right_repeat_decoded * S ((S (ff_i_bie_mul_right_repeat)) * ff_c_bie_mul_right) + (b)))) /\ (exists ff_u_bie_mul_right_product ff_v_bie_mul_right_product. ((((exists ff_h_bie_mul_right_product_start. ff_h_bie_mul_right_product_start + S (1) = S ((S (0)) * ff_v_bie_mul_right_product)) /\ exists ff_q_bie_mul_right_product_start. ff_u_bie_mul_right_product = ff_q_bie_mul_right_product_start * S ((S (0)) * ff_v_bie_mul_right_product) + (1))) /\ ((((exists ff_h_bie_mul_right_product_terminal. ff_h_bie_mul_right_product_terminal + S (y) = S ((S (e)) * ff_v_bie_mul_right_product)) /\ exists ff_q_bie_mul_right_product_terminal. ff_u_bie_mul_right_product = ff_q_bie_mul_right_product_terminal * S ((S (e)) * ff_v_bie_mul_right_product) + (y))) /\ forall ff_i_bie_mul_right_product. (exists ff_lt_bie_mul_right_product_bound. ff_lt_bie_mul_right_product_bound + S ff_i_bie_mul_right_product = e) -> exists ff_p_bie_mul_right_product ff_r_bie_mul_right_product ff_s_bie_mul_right_product. ((((exists ff_h_bie_mul_right_product_factor. ff_h_bie_mul_right_product_factor + S (ff_p_bie_mul_right_product) = S ((S (ff_i_bie_mul_right_product)) * ff_c_bie_mul_right)) /\ exists ff_q_bie_mul_right_product_factor. ff_b_bie_mul_right = ff_q_bie_mul_right_product_factor * S ((S (ff_i_bie_mul_right_product)) * ff_c_bie_mul_right) + (ff_p_bie_mul_right_product))) /\ ((((exists ff_h_bie_mul_right_product_partial. ff_h_bie_mul_right_product_partial + S (ff_r_bie_mul_right_product) = S ((S (ff_i_bie_mul_right_product)) * ff_v_bie_mul_right_product)) /\ exists ff_q_bie_mul_right_product_partial. ff_u_bie_mul_right_product = ff_q_bie_mul_right_product_partial * S ((S (ff_i_bie_mul_right_product)) * ff_v_bie_mul_right_product) + (ff_r_bie_mul_right_product))) /\ ((((exists ff_h_bie_mul_right_product_successor. ff_h_bie_mul_right_product_successor + S (ff_s_bie_mul_right_product) = S ((S (S ff_i_bie_mul_right_product)) * ff_v_bie_mul_right_product)) /\ exists ff_q_bie_mul_right_product_successor. ff_u_bie_mul_right_product = ff_q_bie_mul_right_product_successor * S ((S (S ff_i_bie_mul_right_product)) * ff_v_bie_mul_right_product) + (ff_s_bie_mul_right_product))) /\ ff_s_bie_mul_right_product = ff_r_bie_mul_right_product * ff_p_bie_mul_right_product)))))))) -> (exists pa_b_bie_mul_product pa_c_bie_mul_product. ((forall pa_i_bie_mul_product_repeat. (exists pa_lt_bie_mul_product_repeat_bound. pa_lt_bie_mul_product_repeat_bound + S pa_i_bie_mul_product_repeat = e) -> (((exists pa_h_bie_mul_product_repeat_decoded. pa_h_bie_mul_product_repeat_decoded + S (a * b) = S ((S (pa_i_bie_mul_product_repeat)) * pa_c_bie_mul_product)) /\ exists pa_q_bie_mul_product_repeat_decoded. pa_b_bie_mul_product = pa_q_bie_mul_product_repeat_decoded * S ((S (pa_i_bie_mul_product_repeat)) * pa_c_bie_mul_product) + (a * b)))) /\ (exists pa_u_bie_mul_product_product pa_v_bie_mul_product_product. ((((exists pa_h_bie_mul_product_product_start. pa_h_bie_mul_product_product_start + S (1) = S ((S (0)) * pa_v_bie_mul_product_product)) /\ exists pa_q_bie_mul_product_product_start. pa_u_bie_mul_product_product = pa_q_bie_mul_product_product_start * S ((S (0)) * pa_v_bie_mul_product_product) + (1))) /\ ((((exists pa_h_bie_mul_product_product_terminal. pa_h_bie_mul_product_product_terminal + S (z) = S ((S (e)) * pa_v_bie_mul_product_product)) /\ exists pa_q_bie_mul_product_product_terminal. pa_u_bie_mul_product_product = pa_q_bie_mul_product_product_terminal * S ((S (e)) * pa_v_bie_mul_product_product) + (z))) /\ forall pa_i_bie_mul_product_product. (exists pa_lt_bie_mul_product_product_bound. pa_lt_bie_mul_product_product_bound + S pa_i_bie_mul_product_product = e) -> exists pa_p_bie_mul_product_product pa_r_bie_mul_product_product pa_s_bie_mul_product_product. ((((exists pa_h_bie_mul_product_product_factor. pa_h_bie_mul_product_product_factor + S (pa_p_bie_mul_product_product) = S ((S (pa_i_bie_mul_product_product)) * pa_c_bie_mul_product)) /\ exists pa_q_bie_mul_product_product_factor. pa_b_bie_mul_product = pa_q_bie_mul_product_product_factor * S ((S (pa_i_bie_mul_product_product)) * pa_c_bie_mul_product) + (pa_p_bie_mul_product_product))) /\ ((((exists pa_h_bie_mul_product_product_partial. pa_h_bie_mul_product_product_partial + S (pa_r_bie_mul_product_product) = S ((S (pa_i_bie_mul_product_product)) * pa_v_bie_mul_product_product)) /\ exists pa_q_bie_mul_product_product_partial. pa_u_bie_mul_product_product = pa_q_bie_mul_product_product_partial * S ((S (pa_i_bie_mul_product_product)) * pa_v_bie_mul_product_product) + (pa_r_bie_mul_product_product))) /\ ((((exists pa_h_bie_mul_product_product_successor. pa_h_bie_mul_product_product_successor + S (pa_s_bie_mul_product_product) = S ((S (S pa_i_bie_mul_product_product)) * pa_v_bie_mul_product_product)) /\ exists pa_q_bie_mul_product_product_successor. pa_u_bie_mul_product_product = pa_q_bie_mul_product_product_successor * S ((S (S pa_i_bie_mul_product_product)) * pa_v_bie_mul_product_product) + (pa_s_bie_mul_product_product))) /\ pa_s_bie_mul_product_product = pa_r_bie_mul_product_product * pa_p_bie_mul_product_product)))))))) -> z = x * yProof neighborhood
Direct theorem prerequisites
Direct theorem dependents
BT00SW bertrand_h_six_step_transport_from_total BT00SX bertrand_j_six_step_transport_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 BT00WP bertrand_h_root_32_from_total BT00WT bertrand_h_root_36_from_total BT00WU bertrand_h_root_37_from_total BT00WV bertrand_j_base_thirty_two_window_from_totalDefinition-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–3
02Induction on eL4–10
03Establish hx1L11–17
04Establish hy1L18–24
05Establish hz1L25–34
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–37
08Fix variables and assumptionsL38–43
09Establish hxstepL44–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor decompose.
- L44
have hxstep : ∃ r. Pow(a,e,r) ∧ x = r · aDefinitions: Pow(a,e,r)Original native command in the exact edition - L45
specialize pow_successor_decompose a - L46
specialize pow_successor_decompose e - L47
specialize pow_successor_decompose (S e) - L48
specialize pow_successor_decompose x - L49
apply pow_successor_decompose - L50
refl - L51
exact hx
10Separate the logical casesL52–53
11Establish hystepL54–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor decompose.
- L54
have hystep : ∃ r. Pow(b,e,r) ∧ y = r · bDefinitions: Pow(b,e,r)Original native command in the exact edition - L55
specialize pow_successor_decompose b - L56
specialize pow_successor_decompose e - L57
specialize pow_successor_decompose (S e) - L58
specialize pow_successor_decompose y - L59
apply pow_successor_decompose - L60
refl - L61
exact hy
12Separate the logical casesL62–63
13Establish hzstepL64–71
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor decompose.
- L64
have hzstep : ∃ r. Pow(a · b,e,r) ∧ z = r · (a · b)Definitions: Pow(a · b,e,r)Original native command in the exact edition - L65
specialize pow_successor_decompose (a * b) - L66
specialize pow_successor_decompose e - L67
specialize pow_successor_decompose (S e) - L68
specialize pow_successor_decompose z - L69
apply pow_successor_decompose - L70
refl - L71
exact hz
14Separate the logical casesL72–73
15Establish hprefixL74–83
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
16Calculate and transport equalitiesL84–85
17Use earlier factsL86–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L86
exact hprefix
18Calculate and transport equalitiesL87–88
19Use earlier factsL89–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
apply mul_assoc
20Calculate and transport equalitiesL90–93
21Use earlier factsL94–94
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L94
apply mul_assoc
22Calculate and transport equalitiesL95–98
23Use earlier factsL99–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L99
apply mul_comm
24Calculate and transport equalitiesL100–103
25Use earlier factsL104–104
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
apply mul_assoc
26Calculate and transport equalitiesL105–106
27Use earlier factsL107–107
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L107
apply mul_assoc
Original defined command ledger · 110 lines
- 0001
intro a - 0002
intro b - 0003
intro e - 0004
induction e - 0005
intro x - 0006
intro y - 0007
intro z - 0008
intro hx - 0009
intro hy - 0010
intro hz - 0011
have hx1 : x = 1 - 0012
specialize pow_zero a - 0013
specialize pow_zero 0 - 0014
specialize pow_zero x - 0015
apply pow_zero - 0016
refl - 0017
exact hx - 0018
have hy1 : y = 1 - 0019
specialize pow_zero b - 0020
specialize pow_zero 0 - 0021
specialize pow_zero y - 0022
apply pow_zero - 0023
refl - 0024
exact hy - 0025
have hz1 : z = 1 - 0026
specialize pow_zero (a * b) - 0027
specialize pow_zero 0 - 0028
specialize pow_zero z - 0029
apply pow_zero - 0030
refl - 0031
exact hz - 0032
rewrite hz1 - 0033
rewrite hx1 - 0034
rewrite hy1 - 0035
symm - 0036
specialize mul_one 1 - 0037
exact mul_one - 0038
intro x - 0039
intro y - 0040
intro z - 0041
intro hx - 0042
intro hy - 0043
intro hz - 0044
have hxstep : ∃ r. Pow(a,e,r) ∧ x = r · aExact native replay line
have hxstep : exists r. (exists ff_b_bie_mul_left_prefix ff_c_bie_mul_left_prefix. ((forall ff_i_bie_mul_left_prefix_repeat. (exists ff_lt_bie_mul_left_prefix_repeat_bound. ff_lt_bie_mul_left_prefix_repeat_bound + S ff_i_bie_mul_left_prefix_repeat = e) -> (((exists ff_h_bie_mul_left_prefix_repeat_decoded. ff_h_bie_mul_left_prefix_repeat_decoded + S (a) = S ((S (ff_i_bie_mul_left_prefix_repeat)) * ff_c_bie_mul_left_prefix)) /\ exists ff_q_bie_mul_left_prefix_repeat_decoded. ff_b_bie_mul_left_prefix = ff_q_bie_mul_left_prefix_repeat_decoded * S ((S (ff_i_bie_mul_left_prefix_repeat)) * ff_c_bie_mul_left_prefix) + (a)))) /\ (exists ff_u_bie_mul_left_prefix_product ff_v_bie_mul_left_prefix_product. ((((exists ff_h_bie_mul_left_prefix_product_start. ff_h_bie_mul_left_prefix_product_start + S (1) = S ((S (0)) * ff_v_bie_mul_left_prefix_product)) /\ exists ff_q_bie_mul_left_prefix_product_start. ff_u_bie_mul_left_prefix_product = ff_q_bie_mul_left_prefix_product_start * S ((S (0)) * ff_v_bie_mul_left_prefix_product) + (1))) /\ ((((exists ff_h_bie_mul_left_prefix_product_terminal. ff_h_bie_mul_left_prefix_product_terminal + S (r) = S ((S (e)) * ff_v_bie_mul_left_prefix_product)) /\ exists ff_q_bie_mul_left_prefix_product_terminal. ff_u_bie_mul_left_prefix_product = ff_q_bie_mul_left_prefix_product_terminal * S ((S (e)) * ff_v_bie_mul_left_prefix_product) + (r))) /\ forall ff_i_bie_mul_left_prefix_product. (exists ff_lt_bie_mul_left_prefix_product_bound. ff_lt_bie_mul_left_prefix_product_bound + S ff_i_bie_mul_left_prefix_product = e) -> exists ff_p_bie_mul_left_prefix_product ff_r_bie_mul_left_prefix_product ff_s_bie_mul_left_prefix_product. ((((exists ff_h_bie_mul_left_prefix_product_factor. ff_h_bie_mul_left_prefix_product_factor + S (ff_p_bie_mul_left_prefix_product) = S ((S (ff_i_bie_mul_left_prefix_product)) * ff_c_bie_mul_left_prefix)) /\ exists ff_q_bie_mul_left_prefix_product_factor. ff_b_bie_mul_left_prefix = ff_q_bie_mul_left_prefix_product_factor * S ((S (ff_i_bie_mul_left_prefix_product)) * ff_c_bie_mul_left_prefix) + (ff_p_bie_mul_left_prefix_product))) /\ ((((exists ff_h_bie_mul_left_prefix_product_partial. ff_h_bie_mul_left_prefix_product_partial + S (ff_r_bie_mul_left_prefix_product) = S ((S (ff_i_bie_mul_left_prefix_product)) * ff_v_bie_mul_left_prefix_product)) /\ exists ff_q_bie_mul_left_prefix_product_partial. ff_u_bie_mul_left_prefix_product = ff_q_bie_mul_left_prefix_product_partial * S ((S (ff_i_bie_mul_left_prefix_product)) * ff_v_bie_mul_left_prefix_product) + (ff_r_bie_mul_left_prefix_product))) /\ ((((exists ff_h_bie_mul_left_prefix_product_successor. ff_h_bie_mul_left_prefix_product_successor + S (ff_s_bie_mul_left_prefix_product) = S ((S (S ff_i_bie_mul_left_prefix_product)) * ff_v_bie_mul_left_prefix_product)) /\ exists ff_q_bie_mul_left_prefix_product_successor. ff_u_bie_mul_left_prefix_product = ff_q_bie_mul_left_prefix_product_successor * S ((S (S ff_i_bie_mul_left_prefix_product)) * ff_v_bie_mul_left_prefix_product) + (ff_s_bie_mul_left_prefix_product))) /\ ff_s_bie_mul_left_prefix_product = ff_r_bie_mul_left_prefix_product * ff_p_bie_mul_left_prefix_product)))))))) /\ x = r * a - 0045
specialize pow_successor_decompose a - 0046
specialize pow_successor_decompose e - 0047
specialize pow_successor_decompose (S e) - 0048
specialize pow_successor_decompose x - 0049
apply pow_successor_decompose - 0050
refl - 0051
exact hx - 0052
cases hxstep - 0053
cases hxstep_witness - 0054
have hystep : ∃ r. Pow(b,e,r) ∧ y = r · bExact native replay line
have hystep : exists r. (exists ff_b_bie_mul_right_prefix ff_c_bie_mul_right_prefix. ((forall ff_i_bie_mul_right_prefix_repeat. (exists ff_lt_bie_mul_right_prefix_repeat_bound. ff_lt_bie_mul_right_prefix_repeat_bound + S ff_i_bie_mul_right_prefix_repeat = e) -> (((exists ff_h_bie_mul_right_prefix_repeat_decoded. ff_h_bie_mul_right_prefix_repeat_decoded + S (b) = S ((S (ff_i_bie_mul_right_prefix_repeat)) * ff_c_bie_mul_right_prefix)) /\ exists ff_q_bie_mul_right_prefix_repeat_decoded. ff_b_bie_mul_right_prefix = ff_q_bie_mul_right_prefix_repeat_decoded * S ((S (ff_i_bie_mul_right_prefix_repeat)) * ff_c_bie_mul_right_prefix) + (b)))) /\ (exists ff_u_bie_mul_right_prefix_product ff_v_bie_mul_right_prefix_product. ((((exists ff_h_bie_mul_right_prefix_product_start. ff_h_bie_mul_right_prefix_product_start + S (1) = S ((S (0)) * ff_v_bie_mul_right_prefix_product)) /\ exists ff_q_bie_mul_right_prefix_product_start. ff_u_bie_mul_right_prefix_product = ff_q_bie_mul_right_prefix_product_start * S ((S (0)) * ff_v_bie_mul_right_prefix_product) + (1))) /\ ((((exists ff_h_bie_mul_right_prefix_product_terminal. ff_h_bie_mul_right_prefix_product_terminal + S (r) = S ((S (e)) * ff_v_bie_mul_right_prefix_product)) /\ exists ff_q_bie_mul_right_prefix_product_terminal. ff_u_bie_mul_right_prefix_product = ff_q_bie_mul_right_prefix_product_terminal * S ((S (e)) * ff_v_bie_mul_right_prefix_product) + (r))) /\ forall ff_i_bie_mul_right_prefix_product. (exists ff_lt_bie_mul_right_prefix_product_bound. ff_lt_bie_mul_right_prefix_product_bound + S ff_i_bie_mul_right_prefix_product = e) -> exists ff_p_bie_mul_right_prefix_product ff_r_bie_mul_right_prefix_product ff_s_bie_mul_right_prefix_product. ((((exists ff_h_bie_mul_right_prefix_product_factor. ff_h_bie_mul_right_prefix_product_factor + S (ff_p_bie_mul_right_prefix_product) = S ((S (ff_i_bie_mul_right_prefix_product)) * ff_c_bie_mul_right_prefix)) /\ exists ff_q_bie_mul_right_prefix_product_factor. ff_b_bie_mul_right_prefix = ff_q_bie_mul_right_prefix_product_factor * S ((S (ff_i_bie_mul_right_prefix_product)) * ff_c_bie_mul_right_prefix) + (ff_p_bie_mul_right_prefix_product))) /\ ((((exists ff_h_bie_mul_right_prefix_product_partial. ff_h_bie_mul_right_prefix_product_partial + S (ff_r_bie_mul_right_prefix_product) = S ((S (ff_i_bie_mul_right_prefix_product)) * ff_v_bie_mul_right_prefix_product)) /\ exists ff_q_bie_mul_right_prefix_product_partial. ff_u_bie_mul_right_prefix_product = ff_q_bie_mul_right_prefix_product_partial * S ((S (ff_i_bie_mul_right_prefix_product)) * ff_v_bie_mul_right_prefix_product) + (ff_r_bie_mul_right_prefix_product))) /\ ((((exists ff_h_bie_mul_right_prefix_product_successor. ff_h_bie_mul_right_prefix_product_successor + S (ff_s_bie_mul_right_prefix_product) = S ((S (S ff_i_bie_mul_right_prefix_product)) * ff_v_bie_mul_right_prefix_product)) /\ exists ff_q_bie_mul_right_prefix_product_successor. ff_u_bie_mul_right_prefix_product = ff_q_bie_mul_right_prefix_product_successor * S ((S (S ff_i_bie_mul_right_prefix_product)) * ff_v_bie_mul_right_prefix_product) + (ff_s_bie_mul_right_prefix_product))) /\ ff_s_bie_mul_right_prefix_product = ff_r_bie_mul_right_prefix_product * ff_p_bie_mul_right_prefix_product)))))))) /\ y = r * b - 0055
specialize pow_successor_decompose b - 0056
specialize pow_successor_decompose e - 0057
specialize pow_successor_decompose (S e) - 0058
specialize pow_successor_decompose y - 0059
apply pow_successor_decompose - 0060
refl - 0061
exact hy - 0062
cases hystep - 0063
cases hystep_witness - 0064
have hzstep : ∃ r. Pow(a · b,e,r) ∧ z = r · (a · b)Exact native replay line
have hzstep : exists r. (exists pa_b_bie_mul_product_prefix pa_c_bie_mul_product_prefix. ((forall pa_i_bie_mul_product_prefix_repeat. (exists pa_lt_bie_mul_product_prefix_repeat_bound. pa_lt_bie_mul_product_prefix_repeat_bound + S pa_i_bie_mul_product_prefix_repeat = e) -> (((exists pa_h_bie_mul_product_prefix_repeat_decoded. pa_h_bie_mul_product_prefix_repeat_decoded + S (a * b) = S ((S (pa_i_bie_mul_product_prefix_repeat)) * pa_c_bie_mul_product_prefix)) /\ exists pa_q_bie_mul_product_prefix_repeat_decoded. pa_b_bie_mul_product_prefix = pa_q_bie_mul_product_prefix_repeat_decoded * S ((S (pa_i_bie_mul_product_prefix_repeat)) * pa_c_bie_mul_product_prefix) + (a * b)))) /\ (exists pa_u_bie_mul_product_prefix_product pa_v_bie_mul_product_prefix_product. ((((exists pa_h_bie_mul_product_prefix_product_start. pa_h_bie_mul_product_prefix_product_start + S (1) = S ((S (0)) * pa_v_bie_mul_product_prefix_product)) /\ exists pa_q_bie_mul_product_prefix_product_start. pa_u_bie_mul_product_prefix_product = pa_q_bie_mul_product_prefix_product_start * S ((S (0)) * pa_v_bie_mul_product_prefix_product) + (1))) /\ ((((exists pa_h_bie_mul_product_prefix_product_terminal. pa_h_bie_mul_product_prefix_product_terminal + S (r) = S ((S (e)) * pa_v_bie_mul_product_prefix_product)) /\ exists pa_q_bie_mul_product_prefix_product_terminal. pa_u_bie_mul_product_prefix_product = pa_q_bie_mul_product_prefix_product_terminal * S ((S (e)) * pa_v_bie_mul_product_prefix_product) + (r))) /\ forall pa_i_bie_mul_product_prefix_product. (exists pa_lt_bie_mul_product_prefix_product_bound. pa_lt_bie_mul_product_prefix_product_bound + S pa_i_bie_mul_product_prefix_product = e) -> exists pa_p_bie_mul_product_prefix_product pa_r_bie_mul_product_prefix_product pa_s_bie_mul_product_prefix_product. ((((exists pa_h_bie_mul_product_prefix_product_factor. pa_h_bie_mul_product_prefix_product_factor + S (pa_p_bie_mul_product_prefix_product) = S ((S (pa_i_bie_mul_product_prefix_product)) * pa_c_bie_mul_product_prefix)) /\ exists pa_q_bie_mul_product_prefix_product_factor. pa_b_bie_mul_product_prefix = pa_q_bie_mul_product_prefix_product_factor * S ((S (pa_i_bie_mul_product_prefix_product)) * pa_c_bie_mul_product_prefix) + (pa_p_bie_mul_product_prefix_product))) /\ ((((exists pa_h_bie_mul_product_prefix_product_partial. pa_h_bie_mul_product_prefix_product_partial + S (pa_r_bie_mul_product_prefix_product) = S ((S (pa_i_bie_mul_product_prefix_product)) * pa_v_bie_mul_product_prefix_product)) /\ exists pa_q_bie_mul_product_prefix_product_partial. pa_u_bie_mul_product_prefix_product = pa_q_bie_mul_product_prefix_product_partial * S ((S (pa_i_bie_mul_product_prefix_product)) * pa_v_bie_mul_product_prefix_product) + (pa_r_bie_mul_product_prefix_product))) /\ ((((exists pa_h_bie_mul_product_prefix_product_successor. pa_h_bie_mul_product_prefix_product_successor + S (pa_s_bie_mul_product_prefix_product) = S ((S (S pa_i_bie_mul_product_prefix_product)) * pa_v_bie_mul_product_prefix_product)) /\ exists pa_q_bie_mul_product_prefix_product_successor. pa_u_bie_mul_product_prefix_product = pa_q_bie_mul_product_prefix_product_successor * S ((S (S pa_i_bie_mul_product_prefix_product)) * pa_v_bie_mul_product_prefix_product) + (pa_s_bie_mul_product_prefix_product))) /\ pa_s_bie_mul_product_prefix_product = pa_r_bie_mul_product_prefix_product * pa_p_bie_mul_product_prefix_product)))))))) /\ z = r * (a * b) - 0065
specialize pow_successor_decompose (a * b) - 0066
specialize pow_successor_decompose e - 0067
specialize pow_successor_decompose (S e) - 0068
specialize pow_successor_decompose z - 0069
apply pow_successor_decompose - 0070
refl - 0071
exact hz - 0072
cases hzstep - 0073
cases hzstep_witness - 0074
have hprefix : x3 = x1 * x2 - 0075
specialize IH x1 - 0076
specialize IH x2 - 0077
specialize IH x3 - 0078
apply IH - 0079
exact hxstep_witness_left - 0080
exact hystep_witness_left - 0081
exact hzstep_witness_left - 0082
trans x3 * (a * b) - 0083
exact hzstep_witness_right - 0084
trans (x1 * x2) * (a * b) - 0085
congr - 0086
exact hprefix - 0087
refl - 0088
trans x1 * (x2 * (a * b)) - 0089
apply mul_assoc - 0090
trans x1 * ((x2 * a) * b) - 0091
congr - 0092
refl - 0093
symm - 0094
apply mul_assoc - 0095
trans x1 * ((a * x2) * b) - 0096
congr - 0097
refl - 0098
congr - 0099
apply mul_comm - 0100
refl - 0101
trans x1 * (a * (x2 * b)) - 0102
congr - 0103
refl - 0104
apply mul_assoc - 0105
trans (x1 * a) * (x2 * b) - 0106
symm - 0107
apply mul_assoc - 0108
rewrite <- hxstep_witness_right - 0109
rewrite <- hystep_witness_right - 0110
refl