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. ∀ a. ∀ b. ∀ c. ∀ m. ∀ Q. ∀ A. (∀ x. ∀ y. ∀ z. Lt(x,m) → BetaAt(b,c,x + x,y) → BetaAt(b,c,S (x + x),z) → ModEq(p,y · z,a)) → Product(b,c,m + m,Q) → Pow(a,m,A) → ModEq(p,Q,A)Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
7 occurrences
In local proof propositions
15 occurrences
Exact expanded native-PA statement
forall p a b c m Q A. (forall wpp_pair_pairs wpp_left_pairs wpp_right_pairs. (exists wpp_gap_pairs_pair_bound. wpp_gap_pairs_pair_bound + S (wpp_pair_pairs) = m) -> (((exists wpp_beta_height_pairs_left_entry. wpp_beta_height_pairs_left_entry + S (wpp_left_pairs) = S ((S ((wpp_pair_pairs + wpp_pair_pairs))) * c)) /\ exists wpp_beta_quotient_pairs_left_entry. b = wpp_beta_quotient_pairs_left_entry * S ((S ((wpp_pair_pairs + wpp_pair_pairs))) * c) + (wpp_left_pairs))) -> (((exists wpp_beta_height_pairs_right_entry. wpp_beta_height_pairs_right_entry + S (wpp_right_pairs) = S ((S (S (wpp_pair_pairs + wpp_pair_pairs))) * c)) /\ exists wpp_beta_quotient_pairs_right_entry. b = wpp_beta_quotient_pairs_right_entry * S ((S (S (wpp_pair_pairs + wpp_pair_pairs))) * c) + (wpp_right_pairs))) -> (exists wpp_mod_left_pairs_pair_mod wpp_mod_right_pairs_pair_mod. (wpp_left_pairs * wpp_right_pairs) + p * wpp_mod_left_pairs_pair_mod = (a) + p * wpp_mod_right_pairs_pair_mod)) -> (exists wpp_trace_code_target_product wpp_trace_scale_target_product. ((((exists wpp_beta_height_target_product_start. wpp_beta_height_target_product_start + S (1) = S ((S (0)) * wpp_trace_scale_target_product)) /\ exists wpp_beta_quotient_target_product_start. wpp_trace_code_target_product = wpp_beta_quotient_target_product_start * S ((S (0)) * wpp_trace_scale_target_product) + (1))) /\ ((((exists wpp_beta_height_target_product_terminal. wpp_beta_height_target_product_terminal + S (Q) = S ((S (m + m)) * wpp_trace_scale_target_product)) /\ exists wpp_beta_quotient_target_product_terminal. wpp_trace_code_target_product = wpp_beta_quotient_target_product_terminal * S ((S (m + m)) * wpp_trace_scale_target_product) + (Q))) /\ forall wpp_index_target_product. (exists wpp_gap_target_product_bound. wpp_gap_target_product_bound + S (wpp_index_target_product) = m + m) -> exists wpp_factor_target_product wpp_prefix_target_product wpp_successor_target_product. ((((exists wpp_beta_height_target_product_factor. wpp_beta_height_target_product_factor + S (wpp_factor_target_product) = S ((S (wpp_index_target_product)) * c)) /\ exists wpp_beta_quotient_target_product_factor. b = wpp_beta_quotient_target_product_factor * S ((S (wpp_index_target_product)) * c) + (wpp_factor_target_product))) /\ ((((exists wpp_beta_height_target_product_prefix. wpp_beta_height_target_product_prefix + S (wpp_prefix_target_product) = S ((S (wpp_index_target_product)) * wpp_trace_scale_target_product)) /\ exists wpp_beta_quotient_target_product_prefix. wpp_trace_code_target_product = wpp_beta_quotient_target_product_prefix * S ((S (wpp_index_target_product)) * wpp_trace_scale_target_product) + (wpp_prefix_target_product))) /\ ((((exists wpp_beta_height_target_product_successor. wpp_beta_height_target_product_successor + S (wpp_successor_target_product) = S ((S (S (wpp_index_target_product))) * wpp_trace_scale_target_product)) /\ exists wpp_beta_quotient_target_product_successor. wpp_trace_code_target_product = wpp_beta_quotient_target_product_successor * S ((S (S (wpp_index_target_product))) * wpp_trace_scale_target_product) + (wpp_successor_target_product))) /\ wpp_successor_target_product = wpp_prefix_target_product * wpp_factor_target_product)))))) -> (exists ff_b_target_power ff_c_target_power. ((forall ff_i_target_power_repeat. (exists ff_lt_target_power_repeat_bound. ff_lt_target_power_repeat_bound + S ff_i_target_power_repeat = m) -> (((exists ff_h_target_power_repeat_decoded. ff_h_target_power_repeat_decoded + S (a) = S ((S (ff_i_target_power_repeat)) * ff_c_target_power)) /\ exists ff_q_target_power_repeat_decoded. ff_b_target_power = ff_q_target_power_repeat_decoded * S ((S (ff_i_target_power_repeat)) * ff_c_target_power) + (a)))) /\ (exists ff_u_target_power_product ff_v_target_power_product. ((((exists ff_h_target_power_product_start. ff_h_target_power_product_start + S (1) = S ((S (0)) * ff_v_target_power_product)) /\ exists ff_q_target_power_product_start. ff_u_target_power_product = ff_q_target_power_product_start * S ((S (0)) * ff_v_target_power_product) + (1))) /\ ((((exists ff_h_target_power_product_terminal. ff_h_target_power_product_terminal + S (A) = S ((S (m)) * ff_v_target_power_product)) /\ exists ff_q_target_power_product_terminal. ff_u_target_power_product = ff_q_target_power_product_terminal * S ((S (m)) * ff_v_target_power_product) + (A))) /\ forall ff_i_target_power_product. (exists ff_lt_target_power_product_bound. ff_lt_target_power_product_bound + S ff_i_target_power_product = m) -> exists ff_p_target_power_product ff_r_target_power_product ff_s_target_power_product. ((((exists ff_h_target_power_product_factor. ff_h_target_power_product_factor + S (ff_p_target_power_product) = S ((S (ff_i_target_power_product)) * ff_c_target_power)) /\ exists ff_q_target_power_product_factor. ff_b_target_power = ff_q_target_power_product_factor * S ((S (ff_i_target_power_product)) * ff_c_target_power) + (ff_p_target_power_product))) /\ ((((exists ff_h_target_power_product_partial. ff_h_target_power_product_partial + S (ff_r_target_power_product) = S ((S (ff_i_target_power_product)) * ff_v_target_power_product)) /\ exists ff_q_target_power_product_partial. ff_u_target_power_product = ff_q_target_power_product_partial * S ((S (ff_i_target_power_product)) * ff_v_target_power_product) + (ff_r_target_power_product))) /\ ((((exists ff_h_target_power_product_successor. ff_h_target_power_product_successor + S (ff_s_target_power_product) = S ((S (S ff_i_target_power_product)) * ff_v_target_power_product)) /\ exists ff_q_target_power_product_successor. ff_u_target_power_product = ff_q_target_power_product_successor * S ((S (S ff_i_target_power_product)) * ff_v_target_power_product) + (ff_s_target_power_product))) /\ ff_s_target_power_product = ff_r_target_power_product * ff_p_target_power_product)))))))) -> (exists wpp_mod_left_target_result wpp_mod_right_target_result. (Q) + p * wpp_mod_left_target_result = (A) + p * wpp_mod_right_target_result)Proof neighborhood
Direct theorem prerequisites
PA009Y beta_product_double_succ_decompose PA0049 beta_product_zero PA004B pow_zero PA004D pow_successor_decompose PA002O le_succ PA001A le_refl PA0023 mod_eq_refl PA004E mod_eq_mul PA000E add_succ_left PA000B mul_assocDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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–4
02Induction on mL5–10
03Establish hzeroL11–15
04Establish hQL16–21
05Establish hAL22–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow zero.
06Use earlier factsL32–33
07Fix variables and assumptionsL34–38
08Establish hdoubleL39–40
09Establish hdecompositionL41–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product double succ decompose.
- L41
have hdecomposition : ∃ wpp_left_factor_target_successor_decomposition. ∃ wpp_right_factor_target_successor_decomposition. ∃ wpp_prefix_product_target_successor_decomposition. BetaAt(b,c,m + m,wpp_left_factor_target_successor_decomposition) ∧ (BetaAt(b,c,S (m + m),wpp_right_factor_target_successor_decomposition) ∧ (Product(b,c,m + m,wpp_prefix_product_target_successor_decomposition) ∧ Q = wpp_prefix_product_target_successor_decomposition · wpp_left_factor_target_successor_decomposition · wpp_right_factor_target_successor_decomposition))Definitions: BetaAt(b,c,m + m,wpp_left_factor_target_successor_decomposition)BetaAt(b,c,S (m + m),wpp_right_factor_target_successor_decomposition)Product(b,c,m + m,wpp_prefix_product_target_successor_decomposition)Original native command in the exact edition - L42
specialize beta_product_double_succ_decompose b - L43
specialize beta_product_double_succ_decompose c - L44
specialize beta_product_double_succ_decompose (m + m) - L45
specialize beta_product_double_succ_decompose (S m + S m) - L46
specialize beta_product_double_succ_decompose Q - L47
apply beta_product_double_succ_decompose - L48
exact hdouble - L49
exact hproduct
10Separate the logical casesL50–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
11Establish hpairs_allL56–57
Establish this local claim before using it. It is not an additional assumption.
- L56
have hpairs_all : ∀ wpp_pair_target_all_successor_pairs. ∀ wpp_left_target_all_successor_pairs. ∀ wpp_right_target_all_successor_pairs. Lt(wpp_pair_target_all_successor_pairs,S m) → BetaAt(b,c,wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs,wpp_left_target_all_successor_pairs) → BetaAt(b,c,S (wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs),wpp_right_target_all_successor_pairs) → ModEq(p,wpp_left_target_all_successor_pairs · wpp_right_target_all_successor_pairs,a)Definitions: Lt(wpp_pair_target_all_successor_pairs,S m)BetaAt(b,c,wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs,wpp_left_target_all_successor_pairs)BetaAt(b,c,S (wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs),wpp_right_target_all_successor_pairs)ModEq(p,wpp_left_target_all_successor_pairs · wpp_right_target_all_successor_pairs,a)Original native command in the exact edition - L57
exact hpairs
12Establish hpairs_prefixL58–67
Establish this local claim before using it. It is not an additional assumption.
- L58
have hpairs_prefix : ∀ wpp_pair_target_prefix_pairs. ∀ wpp_left_target_prefix_pairs. ∀ wpp_right_target_prefix_pairs. Lt(wpp_pair_target_prefix_pairs,m) → BetaAt(b,c,wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs,wpp_left_target_prefix_pairs) → BetaAt(b,c,S (wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs),wpp_right_target_prefix_pairs) → ModEq(p,wpp_left_target_prefix_pairs · wpp_right_target_prefix_pairs,a)Definitions: Lt(wpp_pair_target_prefix_pairs,m)BetaAt(b,c,wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs,wpp_left_target_prefix_pairs)BetaAt(b,c,S (wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs),wpp_right_target_prefix_pairs)ModEq(p,wpp_left_target_prefix_pairs · wpp_right_target_prefix_pairs,a)Original native command in the exact edition - L59
intro t - L60
intro u - L61
intro v - L62
intro ht - L63
intro hu - L64
intro hv - L65
specialize hpairs_all t - L66
specialize hpairs_all u - L67
specialize hpairs_all v
13Use earlier factsL68–74
14Establish hpower_stepL75–82
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor decompose.
- L75
have hpower_step : ∃ r. Pow(a,m,r) ∧ A = r · aDefinitions: Pow(a,m,r)Original native command in the exact edition - L76
specialize pow_successor_decompose a - L77
specialize pow_successor_decompose m - L78
specialize pow_successor_decompose (S m) - L79
specialize pow_successor_decompose A - L80
apply pow_successor_decompose - L81
refl - L82
exact hpower
15Separate the logical casesL83–84
16Establish hprefixL85–91
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L85
have hprefix : ModEq(p,x2,x3)Definitions: ModEq(p,x2,x3)Original native command in the exact edition - L86
specialize IH x2 - L87
specialize IH x3 - L88
apply IH - L89
exact hpairs_prefix - L90
exact hdecomposition_witness_witness_witness_right_right_left - L91
exact hpower_step_witness_left
17Establish hlastL92–100
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpairs.
- L92
have hlast : ModEq(p,x · x1,a)Definitions: ModEq(p,x · x1,a)Original native command in the exact edition - L93
specialize hpairs m - L94
specialize hpairs x - L95
specialize hpairs x1 - L96
apply hpairs - L97
specialize le_refl (S m) - L98
exact le_refl - L99
exact hdecomposition_witness_witness_witness_left - L100
exact hdecomposition_witness_witness_witness_right_left
18Establish hfoldL101–109
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul.
- L101
have hfold : ModEq(p,x2 · (x · x1),x3 · a)Definitions: ModEq(p,x2 · (x · x1),x3 · a)Original native command in the exact edition - L102
specialize mod_eq_mul p - L103
specialize mod_eq_mul x2 - L104
specialize mod_eq_mul x3 - L105
specialize mod_eq_mul (x * x1) - L106
specialize mod_eq_mul a - L107
apply mod_eq_mul - L108
exact hprefix - L109
exact hlast
19Establish hassocL110–118
Establish this local claim before using it. It is not an additional assumption.
Original defined command ledger · 118 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro c - 0005
induction m - 0006
intro Q - 0007
intro A - 0008
intro hpairs - 0009
intro hproduct - 0010
intro hpower - 0011
have hzero : 0 + 0 = 0 - 0012
simp - 0013
rewrite hzero at hproduct - 0014
rewrite hzero at hproduct - 0015
rewrite hzero at hproduct - 0016
have hQ : Q = 1 - 0017
specialize beta_product_zero b - 0018
specialize beta_product_zero c - 0019
specialize beta_product_zero Q - 0020
apply beta_product_zero - 0021
exact hproduct - 0022
have hA : A = 1 - 0023
specialize pow_zero a - 0024
specialize pow_zero 0 - 0025
specialize pow_zero A - 0026
apply pow_zero - 0027
refl - 0028
exact hpower - 0029
rewrite hQ - 0030
rewrite hA - 0031
specialize mod_eq_refl p - 0032
specialize mod_eq_refl 1 - 0033
exact mod_eq_refl - 0034
intro Q - 0035
intro A - 0036
intro hpairs - 0037
intro hproduct - 0038
intro hpower - 0039
have hdouble : S m + S m = S (S (m + m)) - 0040
simp [add_succ_left] - 0041
have hdecomposition : ∃ wpp_left_factor_target_successor_decomposition. ∃ wpp_right_factor_target_successor_decomposition. ∃ wpp_prefix_product_target_successor_decomposition. BetaAt(b,c,m + m,wpp_left_factor_target_successor_decomposition) ∧ (BetaAt(b,c,S (m + m),wpp_right_factor_target_successor_decomposition) ∧ (Product(b,c,m + m,wpp_prefix_product_target_successor_decomposition) ∧ Q = wpp_prefix_product_target_successor_decomposition · wpp_left_factor_target_successor_decomposition · wpp_right_factor_target_successor_decomposition))Exact native replay line
have hdecomposition : exists wpp_left_factor_target_successor_decomposition wpp_right_factor_target_successor_decomposition wpp_prefix_product_target_successor_decomposition. (((exists wpp_beta_height_target_successor_decomposition_left_entry. wpp_beta_height_target_successor_decomposition_left_entry + S (wpp_left_factor_target_successor_decomposition) = S ((S (m + m)) * c)) /\ exists wpp_beta_quotient_target_successor_decomposition_left_entry. b = wpp_beta_quotient_target_successor_decomposition_left_entry * S ((S (m + m)) * c) + (wpp_left_factor_target_successor_decomposition))) /\ ((((exists wpp_beta_height_target_successor_decomposition_right_entry. wpp_beta_height_target_successor_decomposition_right_entry + S (wpp_right_factor_target_successor_decomposition) = S ((S (S (m + m))) * c)) /\ exists wpp_beta_quotient_target_successor_decomposition_right_entry. b = wpp_beta_quotient_target_successor_decomposition_right_entry * S ((S (S (m + m))) * c) + (wpp_right_factor_target_successor_decomposition))) /\ ((exists wpp_trace_code_target_successor_decomposition_prefix wpp_trace_scale_target_successor_decomposition_prefix. ((((exists wpp_beta_height_target_successor_decomposition_prefix_start. wpp_beta_height_target_successor_decomposition_prefix_start + S (1) = S ((S (0)) * wpp_trace_scale_target_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_target_successor_decomposition_prefix_start. wpp_trace_code_target_successor_decomposition_prefix = wpp_beta_quotient_target_successor_decomposition_prefix_start * S ((S (0)) * wpp_trace_scale_target_successor_decomposition_prefix) + (1))) /\ ((((exists wpp_beta_height_target_successor_decomposition_prefix_terminal. wpp_beta_height_target_successor_decomposition_prefix_terminal + S (wpp_prefix_product_target_successor_decomposition) = S ((S (m + m)) * wpp_trace_scale_target_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_target_successor_decomposition_prefix_terminal. wpp_trace_code_target_successor_decomposition_prefix = wpp_beta_quotient_target_successor_decomposition_prefix_terminal * S ((S (m + m)) * wpp_trace_scale_target_successor_decomposition_prefix) + (wpp_prefix_product_target_successor_decomposition))) /\ forall wpp_index_target_successor_decomposition_prefix. (exists wpp_gap_target_successor_decomposition_prefix_bound. wpp_gap_target_successor_decomposition_prefix_bound + S (wpp_index_target_successor_decomposition_prefix) = m + m) -> exists wpp_factor_target_successor_decomposition_prefix wpp_prefix_target_successor_decomposition_prefix wpp_successor_target_successor_decomposition_prefix. ((((exists wpp_beta_height_target_successor_decomposition_prefix_factor. wpp_beta_height_target_successor_decomposition_prefix_factor + S (wpp_factor_target_successor_decomposition_prefix) = S ((S (wpp_index_target_successor_decomposition_prefix)) * c)) /\ exists wpp_beta_quotient_target_successor_decomposition_prefix_factor. b = wpp_beta_quotient_target_successor_decomposition_prefix_factor * S ((S (wpp_index_target_successor_decomposition_prefix)) * c) + (wpp_factor_target_successor_decomposition_prefix))) /\ ((((exists wpp_beta_height_target_successor_decomposition_prefix_prefix. wpp_beta_height_target_successor_decomposition_prefix_prefix + S (wpp_prefix_target_successor_decomposition_prefix) = S ((S (wpp_index_target_successor_decomposition_prefix)) * wpp_trace_scale_target_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_target_successor_decomposition_prefix_prefix. wpp_trace_code_target_successor_decomposition_prefix = wpp_beta_quotient_target_successor_decomposition_prefix_prefix * S ((S (wpp_index_target_successor_decomposition_prefix)) * wpp_trace_scale_target_successor_decomposition_prefix) + (wpp_prefix_target_successor_decomposition_prefix))) /\ ((((exists wpp_beta_height_target_successor_decomposition_prefix_successor. wpp_beta_height_target_successor_decomposition_prefix_successor + S (wpp_successor_target_successor_decomposition_prefix) = S ((S (S (wpp_index_target_successor_decomposition_prefix))) * wpp_trace_scale_target_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_target_successor_decomposition_prefix_successor. wpp_trace_code_target_successor_decomposition_prefix = wpp_beta_quotient_target_successor_decomposition_prefix_successor * S ((S (S (wpp_index_target_successor_decomposition_prefix))) * wpp_trace_scale_target_successor_decomposition_prefix) + (wpp_successor_target_successor_decomposition_prefix))) /\ wpp_successor_target_successor_decomposition_prefix = wpp_prefix_target_successor_decomposition_prefix * wpp_factor_target_successor_decomposition_prefix)))))) /\ Q = (wpp_prefix_product_target_successor_decomposition * wpp_left_factor_target_successor_decomposition) * wpp_right_factor_target_successor_decomposition)) - 0042
specialize beta_product_double_succ_decompose b - 0043
specialize beta_product_double_succ_decompose c - 0044
specialize beta_product_double_succ_decompose (m + m) - 0045
specialize beta_product_double_succ_decompose (S m + S m) - 0046
specialize beta_product_double_succ_decompose Q - 0047
apply beta_product_double_succ_decompose - 0048
exact hdouble - 0049
exact hproduct - 0050
cases hdecomposition - 0051
cases hdecomposition_witness - 0052
cases hdecomposition_witness_witness - 0053
cases hdecomposition_witness_witness_witness - 0054
cases hdecomposition_witness_witness_witness_right - 0055
cases hdecomposition_witness_witness_witness_right_right - 0056
have hpairs_all : ∀ wpp_pair_target_all_successor_pairs. ∀ wpp_left_target_all_successor_pairs. ∀ wpp_right_target_all_successor_pairs. Lt(wpp_pair_target_all_successor_pairs,S m) → BetaAt(b,c,wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs,wpp_left_target_all_successor_pairs) → BetaAt(b,c,S (wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs),wpp_right_target_all_successor_pairs) → ModEq(p,wpp_left_target_all_successor_pairs · wpp_right_target_all_successor_pairs,a)Exact native replay line
have hpairs_all : forall wpp_pair_target_all_successor_pairs wpp_left_target_all_successor_pairs wpp_right_target_all_successor_pairs. (exists wpp_gap_target_all_successor_pairs_pair_bound. wpp_gap_target_all_successor_pairs_pair_bound + S (wpp_pair_target_all_successor_pairs) = S m) -> (((exists wpp_beta_height_target_all_successor_pairs_left_entry. wpp_beta_height_target_all_successor_pairs_left_entry + S (wpp_left_target_all_successor_pairs) = S ((S ((wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs))) * c)) /\ exists wpp_beta_quotient_target_all_successor_pairs_left_entry. b = wpp_beta_quotient_target_all_successor_pairs_left_entry * S ((S ((wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs))) * c) + (wpp_left_target_all_successor_pairs))) -> (((exists wpp_beta_height_target_all_successor_pairs_right_entry. wpp_beta_height_target_all_successor_pairs_right_entry + S (wpp_right_target_all_successor_pairs) = S ((S (S (wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs))) * c)) /\ exists wpp_beta_quotient_target_all_successor_pairs_right_entry. b = wpp_beta_quotient_target_all_successor_pairs_right_entry * S ((S (S (wpp_pair_target_all_successor_pairs + wpp_pair_target_all_successor_pairs))) * c) + (wpp_right_target_all_successor_pairs))) -> (exists wpp_mod_left_target_all_successor_pairs_pair_mod wpp_mod_right_target_all_successor_pairs_pair_mod. (wpp_left_target_all_successor_pairs * wpp_right_target_all_successor_pairs) + p * wpp_mod_left_target_all_successor_pairs_pair_mod = (a) + p * wpp_mod_right_target_all_successor_pairs_pair_mod) - 0057
exact hpairs - 0058
have hpairs_prefix : ∀ wpp_pair_target_prefix_pairs. ∀ wpp_left_target_prefix_pairs. ∀ wpp_right_target_prefix_pairs. Lt(wpp_pair_target_prefix_pairs,m) → BetaAt(b,c,wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs,wpp_left_target_prefix_pairs) → BetaAt(b,c,S (wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs),wpp_right_target_prefix_pairs) → ModEq(p,wpp_left_target_prefix_pairs · wpp_right_target_prefix_pairs,a)Exact native replay line
have hpairs_prefix : forall wpp_pair_target_prefix_pairs wpp_left_target_prefix_pairs wpp_right_target_prefix_pairs. (exists wpp_gap_target_prefix_pairs_pair_bound. wpp_gap_target_prefix_pairs_pair_bound + S (wpp_pair_target_prefix_pairs) = m) -> (((exists wpp_beta_height_target_prefix_pairs_left_entry. wpp_beta_height_target_prefix_pairs_left_entry + S (wpp_left_target_prefix_pairs) = S ((S ((wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs))) * c)) /\ exists wpp_beta_quotient_target_prefix_pairs_left_entry. b = wpp_beta_quotient_target_prefix_pairs_left_entry * S ((S ((wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs))) * c) + (wpp_left_target_prefix_pairs))) -> (((exists wpp_beta_height_target_prefix_pairs_right_entry. wpp_beta_height_target_prefix_pairs_right_entry + S (wpp_right_target_prefix_pairs) = S ((S (S (wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs))) * c)) /\ exists wpp_beta_quotient_target_prefix_pairs_right_entry. b = wpp_beta_quotient_target_prefix_pairs_right_entry * S ((S (S (wpp_pair_target_prefix_pairs + wpp_pair_target_prefix_pairs))) * c) + (wpp_right_target_prefix_pairs))) -> (exists wpp_mod_left_target_prefix_pairs_pair_mod wpp_mod_right_target_prefix_pairs_pair_mod. (wpp_left_target_prefix_pairs * wpp_right_target_prefix_pairs) + p * wpp_mod_left_target_prefix_pairs_pair_mod = (a) + p * wpp_mod_right_target_prefix_pairs_pair_mod) - 0059
intro t - 0060
intro u - 0061
intro v - 0062
intro ht - 0063
intro hu - 0064
intro hv - 0065
specialize hpairs_all t - 0066
specialize hpairs_all u - 0067
specialize hpairs_all v - 0068
apply hpairs_all - 0069
specialize le_succ (S t) - 0070
specialize le_succ m - 0071
apply le_succ - 0072
exact ht - 0073
exact hu - 0074
exact hv - 0075
have hpower_step : ∃ r. Pow(a,m,r) ∧ A = r · aExact native replay line
have hpower_step : exists r. (exists ff_b_target_predecessor_power ff_c_target_predecessor_power. ((forall ff_i_target_predecessor_power_repeat. (exists ff_lt_target_predecessor_power_repeat_bound. ff_lt_target_predecessor_power_repeat_bound + S ff_i_target_predecessor_power_repeat = m) -> (((exists ff_h_target_predecessor_power_repeat_decoded. ff_h_target_predecessor_power_repeat_decoded + S (a) = S ((S (ff_i_target_predecessor_power_repeat)) * ff_c_target_predecessor_power)) /\ exists ff_q_target_predecessor_power_repeat_decoded. ff_b_target_predecessor_power = ff_q_target_predecessor_power_repeat_decoded * S ((S (ff_i_target_predecessor_power_repeat)) * ff_c_target_predecessor_power) + (a)))) /\ (exists ff_u_target_predecessor_power_product ff_v_target_predecessor_power_product. ((((exists ff_h_target_predecessor_power_product_start. ff_h_target_predecessor_power_product_start + S (1) = S ((S (0)) * ff_v_target_predecessor_power_product)) /\ exists ff_q_target_predecessor_power_product_start. ff_u_target_predecessor_power_product = ff_q_target_predecessor_power_product_start * S ((S (0)) * ff_v_target_predecessor_power_product) + (1))) /\ ((((exists ff_h_target_predecessor_power_product_terminal. ff_h_target_predecessor_power_product_terminal + S (r) = S ((S (m)) * ff_v_target_predecessor_power_product)) /\ exists ff_q_target_predecessor_power_product_terminal. ff_u_target_predecessor_power_product = ff_q_target_predecessor_power_product_terminal * S ((S (m)) * ff_v_target_predecessor_power_product) + (r))) /\ forall ff_i_target_predecessor_power_product. (exists ff_lt_target_predecessor_power_product_bound. ff_lt_target_predecessor_power_product_bound + S ff_i_target_predecessor_power_product = m) -> exists ff_p_target_predecessor_power_product ff_r_target_predecessor_power_product ff_s_target_predecessor_power_product. ((((exists ff_h_target_predecessor_power_product_factor. ff_h_target_predecessor_power_product_factor + S (ff_p_target_predecessor_power_product) = S ((S (ff_i_target_predecessor_power_product)) * ff_c_target_predecessor_power)) /\ exists ff_q_target_predecessor_power_product_factor. ff_b_target_predecessor_power = ff_q_target_predecessor_power_product_factor * S ((S (ff_i_target_predecessor_power_product)) * ff_c_target_predecessor_power) + (ff_p_target_predecessor_power_product))) /\ ((((exists ff_h_target_predecessor_power_product_partial. ff_h_target_predecessor_power_product_partial + S (ff_r_target_predecessor_power_product) = S ((S (ff_i_target_predecessor_power_product)) * ff_v_target_predecessor_power_product)) /\ exists ff_q_target_predecessor_power_product_partial. ff_u_target_predecessor_power_product = ff_q_target_predecessor_power_product_partial * S ((S (ff_i_target_predecessor_power_product)) * ff_v_target_predecessor_power_product) + (ff_r_target_predecessor_power_product))) /\ ((((exists ff_h_target_predecessor_power_product_successor. ff_h_target_predecessor_power_product_successor + S (ff_s_target_predecessor_power_product) = S ((S (S ff_i_target_predecessor_power_product)) * ff_v_target_predecessor_power_product)) /\ exists ff_q_target_predecessor_power_product_successor. ff_u_target_predecessor_power_product = ff_q_target_predecessor_power_product_successor * S ((S (S ff_i_target_predecessor_power_product)) * ff_v_target_predecessor_power_product) + (ff_s_target_predecessor_power_product))) /\ ff_s_target_predecessor_power_product = ff_r_target_predecessor_power_product * ff_p_target_predecessor_power_product)))))))) /\ A = r * a - 0076
specialize pow_successor_decompose a - 0077
specialize pow_successor_decompose m - 0078
specialize pow_successor_decompose (S m) - 0079
specialize pow_successor_decompose A - 0080
apply pow_successor_decompose - 0081
refl - 0082
exact hpower - 0083
cases hpower_step - 0084
cases hpower_step_witness - 0085
have hprefix : ModEq(p,x2,x3)Exact native replay line
have hprefix : exists wpp_mod_left_target_prefix_congruence wpp_mod_right_target_prefix_congruence. (x2) + p * wpp_mod_left_target_prefix_congruence = (x3) + p * wpp_mod_right_target_prefix_congruence - 0086
specialize IH x2 - 0087
specialize IH x3 - 0088
apply IH - 0089
exact hpairs_prefix - 0090
exact hdecomposition_witness_witness_witness_right_right_left - 0091
exact hpower_step_witness_left - 0092
have hlast : ModEq(p,x · x1,a)Exact native replay line
have hlast : exists wpp_mod_left_target_last_pair_congruence wpp_mod_right_target_last_pair_congruence. (x * x1) + p * wpp_mod_left_target_last_pair_congruence = (a) + p * wpp_mod_right_target_last_pair_congruence - 0093
specialize hpairs m - 0094
specialize hpairs x - 0095
specialize hpairs x1 - 0096
apply hpairs - 0097
specialize le_refl (S m) - 0098
exact le_refl - 0099
exact hdecomposition_witness_witness_witness_left - 0100
exact hdecomposition_witness_witness_witness_right_left - 0101
have hfold : ModEq(p,x2 · (x · x1),x3 · a)Exact native replay line
have hfold : exists wpp_mod_left_target_folded_congruence wpp_mod_right_target_folded_congruence. (x2 * (x * x1)) + p * wpp_mod_left_target_folded_congruence = (x3 * a) + p * wpp_mod_right_target_folded_congruence - 0102
specialize mod_eq_mul p - 0103
specialize mod_eq_mul x2 - 0104
specialize mod_eq_mul x3 - 0105
specialize mod_eq_mul (x * x1) - 0106
specialize mod_eq_mul a - 0107
apply mod_eq_mul - 0108
exact hprefix - 0109
exact hlast - 0110
have hassoc : (x2 * x) * x1 = x2 * (x * x1) - 0111
specialize mul_assoc x2 - 0112
specialize mul_assoc x - 0113
specialize mul_assoc x1 - 0114
exact mul_assoc - 0115
rewrite hdecomposition_witness_witness_witness_right_right_right - 0116
rewrite hassoc - 0117
rewrite hpower_step_witness_right - 0118
exact hfold