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. ∀ n. ∀ a. ∀ b. ∀ c. ∀ F. ∀ A. p = S n → Prime(p) → ¬Dvd(p,a) → Range(b,c,1,n) → Product(b,c,n,F) → Pow(a,n,A) → ModEq(p,A · F,F)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
6 occurrences
In local proof propositions
12 occurrences
Exact expanded native-PA statement
forall p n a b c F A. p = S n -> ((~(p = 1) /\ forall frm_prime_left_balance_prime frm_prime_right_balance_prime. p = frm_prime_left_balance_prime * frm_prime_right_balance_prime -> frm_prime_left_balance_prime = 1 \/ frm_prime_right_balance_prime = 1)) -> (~(exists frm_factor_balance_multiplier. a = p * frm_factor_balance_multiplier)) -> (forall ff_i_frp_range_balance_range. (exists ff_lt_frp_range_balance_range_bound. ff_lt_frp_range_balance_range_bound + S ff_i_frp_range_balance_range = n) -> (((exists ff_h_frp_range_balance_range_decoded. ff_h_frp_range_balance_range_decoded + S (1 + ff_i_frp_range_balance_range) = S ((S (ff_i_frp_range_balance_range)) * c)) /\ exists ff_q_frp_range_balance_range_decoded. b = ff_q_frp_range_balance_range_decoded * S ((S (ff_i_frp_range_balance_range)) * c) + (1 + ff_i_frp_range_balance_range)))) -> (exists ff_u_balance_source ff_v_balance_source. ((((exists ff_h_balance_source_start. ff_h_balance_source_start + S (1) = S ((S (0)) * ff_v_balance_source)) /\ exists ff_q_balance_source_start. ff_u_balance_source = ff_q_balance_source_start * S ((S (0)) * ff_v_balance_source) + (1))) /\ ((((exists ff_h_balance_source_terminal. ff_h_balance_source_terminal + S (F) = S ((S (n)) * ff_v_balance_source)) /\ exists ff_q_balance_source_terminal. ff_u_balance_source = ff_q_balance_source_terminal * S ((S (n)) * ff_v_balance_source) + (F))) /\ forall ff_i_balance_source. (exists ff_lt_balance_source_bound. ff_lt_balance_source_bound + S ff_i_balance_source = n) -> exists ff_p_balance_source ff_r_balance_source ff_s_balance_source. ((((exists ff_h_balance_source_factor. ff_h_balance_source_factor + S (ff_p_balance_source) = S ((S (ff_i_balance_source)) * c)) /\ exists ff_q_balance_source_factor. b = ff_q_balance_source_factor * S ((S (ff_i_balance_source)) * c) + (ff_p_balance_source))) /\ ((((exists ff_h_balance_source_partial. ff_h_balance_source_partial + S (ff_r_balance_source) = S ((S (ff_i_balance_source)) * ff_v_balance_source)) /\ exists ff_q_balance_source_partial. ff_u_balance_source = ff_q_balance_source_partial * S ((S (ff_i_balance_source)) * ff_v_balance_source) + (ff_r_balance_source))) /\ ((((exists ff_h_balance_source_successor. ff_h_balance_source_successor + S (ff_s_balance_source) = S ((S (S ff_i_balance_source)) * ff_v_balance_source)) /\ exists ff_q_balance_source_successor. ff_u_balance_source = ff_q_balance_source_successor * S ((S (S ff_i_balance_source)) * ff_v_balance_source) + (ff_s_balance_source))) /\ ff_s_balance_source = ff_r_balance_source * ff_p_balance_source)))))) -> (exists ff_b_balance_power ff_c_balance_power. ((forall ff_i_balance_power_repeat. (exists ff_lt_balance_power_repeat_bound. ff_lt_balance_power_repeat_bound + S ff_i_balance_power_repeat = n) -> (((exists ff_h_balance_power_repeat_decoded. ff_h_balance_power_repeat_decoded + S (a) = S ((S (ff_i_balance_power_repeat)) * ff_c_balance_power)) /\ exists ff_q_balance_power_repeat_decoded. ff_b_balance_power = ff_q_balance_power_repeat_decoded * S ((S (ff_i_balance_power_repeat)) * ff_c_balance_power) + (a)))) /\ (exists ff_u_balance_power_product ff_v_balance_power_product. ((((exists ff_h_balance_power_product_start. ff_h_balance_power_product_start + S (1) = S ((S (0)) * ff_v_balance_power_product)) /\ exists ff_q_balance_power_product_start. ff_u_balance_power_product = ff_q_balance_power_product_start * S ((S (0)) * ff_v_balance_power_product) + (1))) /\ ((((exists ff_h_balance_power_product_terminal. ff_h_balance_power_product_terminal + S (A) = S ((S (n)) * ff_v_balance_power_product)) /\ exists ff_q_balance_power_product_terminal. ff_u_balance_power_product = ff_q_balance_power_product_terminal * S ((S (n)) * ff_v_balance_power_product) + (A))) /\ forall ff_i_balance_power_product. (exists ff_lt_balance_power_product_bound. ff_lt_balance_power_product_bound + S ff_i_balance_power_product = n) -> exists ff_p_balance_power_product ff_r_balance_power_product ff_s_balance_power_product. ((((exists ff_h_balance_power_product_factor. ff_h_balance_power_product_factor + S (ff_p_balance_power_product) = S ((S (ff_i_balance_power_product)) * ff_c_balance_power)) /\ exists ff_q_balance_power_product_factor. ff_b_balance_power = ff_q_balance_power_product_factor * S ((S (ff_i_balance_power_product)) * ff_c_balance_power) + (ff_p_balance_power_product))) /\ ((((exists ff_h_balance_power_product_partial. ff_h_balance_power_product_partial + S (ff_r_balance_power_product) = S ((S (ff_i_balance_power_product)) * ff_v_balance_power_product)) /\ exists ff_q_balance_power_product_partial. ff_u_balance_power_product = ff_q_balance_power_product_partial * S ((S (ff_i_balance_power_product)) * ff_v_balance_power_product) + (ff_r_balance_power_product))) /\ ((((exists ff_h_balance_power_product_successor. ff_h_balance_power_product_successor + S (ff_s_balance_power_product) = S ((S (S ff_i_balance_power_product)) * ff_v_balance_power_product)) /\ exists ff_q_balance_power_product_successor. ff_u_balance_power_product = ff_q_balance_power_product_successor * S ((S (S ff_i_balance_power_product)) * ff_v_balance_power_product) + (ff_s_balance_power_product))) /\ ff_s_balance_power_product = ff_r_balance_power_product * ff_p_balance_power_product)))))))) -> (exists fsp_product_mod_left_balance_result fsp_product_mod_right_balance_result. (A * F) + p * fsp_product_mod_left_balance_result = F + p * fsp_product_mod_right_balance_result)Proof neighborhood
Direct theorem prerequisites
PA008I prime_mul_residue_reindex_exists PA007Q beta_product_pointwise_scale_mod PA003X beta_product_exists PA007X beta_product_permutation_invariantDirect 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 (4)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–13
03Establish hreindexL14–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime mul residue reindex exists.
- L14Definitions: BoundedPrefix(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,n)InjectivePrefix(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,n)Lt(x,n)BetaAt(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,x,y)BetaAt(b,c,y,z)BetaAt(fpb_target_code_balance_reindex,fpb_target_scale_balance_reindex,x,z)BetaAt(b,c,x,y)ModEq(p,a · y,z)Original native command in the exact edition
have hreindex · expand full local formula (651 characters)
have hreindex : ∃ fpb_map_code_balance_reindex. ∃ fpb_map_scale_balance_reindex. ∃ fpb_target_code_balance_reindex. ∃ fpb_target_scale_balance_reindex. BoundedPrefix(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,n) ∧ (InjectivePrefix(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,n) ∧ ((∀ x. ∀ y. ∀ z. Lt(x,n) → BetaAt(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,x,y) → BetaAt(b,c,y,z) → BetaAt(fpb_target_code_balance_reindex,fpb_target_scale_balance_reindex,x,z)) ∧ (∀ x. ∀ y. ∀ z. Lt(x,n) → BetaAt(b,c,x,y) → BetaAt(fpb_target_code_balance_reindex,fpb_target_scale_balance_reindex,x,z) → ModEq(p,a · y,z)))) - L15
specialize prime_mul_residue_reindex_exists p - L16
specialize prime_mul_residue_reindex_exists n - L17
specialize prime_mul_residue_reindex_exists a - L18
specialize prime_mul_residue_reindex_exists b - L19
specialize prime_mul_residue_reindex_exists c - L20
apply prime_mul_residue_reindex_exists - L21
exact hpn - L22
exact hp - L23
exact hnotdiv
04Use earlier factsL24–24
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L24
exact hrange
05Separate the logical casesL25–31
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
06Establish htarget_product_existsL32–36
Establish this local claim before using it. It is not an additional assumption.
- L32
have htarget_product_exists : ∃ Q. Product(x2,x3,n,Q)Definitions: Product(x2,x3,n,Q)Original native command in the exact edition - L33
specialize beta_product_exists x2 - L34
specialize beta_product_exists x3 - L35
specialize beta_product_exists n - L36
exact beta_product_exists
07Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases htarget_product_exists
08Establish hFQL38–47
Establish this local claim before using it. It is not an additional assumption.
- L38
have hFQ : F = x4 - L39
specialize beta_product_permutation_invariant n - L40
specialize beta_product_permutation_invariant x - L41
specialize beta_product_permutation_invariant x1 - L42
specialize beta_product_permutation_invariant b - L43
specialize beta_product_permutation_invariant c - L44
specialize beta_product_permutation_invariant x2 - L45
specialize beta_product_permutation_invariant x3 - L46
specialize beta_product_permutation_invariant F - L47
specialize beta_product_permutation_invariant x4
09Use earlier factsL48–53
Instantiate or apply named facts and discharge the corresponding proof obligations.
10Establish hscaleL54–63
Establish this local claim before using it. It is not an additional assumption.
- L54
have hscale : ModEq(p,A · F,x4)Definitions: ModEq(p,A · F,x4)Original native command in the exact edition - L55
specialize beta_product_pointwise_scale_mod p - L56
specialize beta_product_pointwise_scale_mod a - L57
specialize beta_product_pointwise_scale_mod b - L58
specialize beta_product_pointwise_scale_mod c - L59
specialize beta_product_pointwise_scale_mod x2 - L60
specialize beta_product_pointwise_scale_mod x3 - L61
specialize beta_product_pointwise_scale_mod n - L62
specialize beta_product_pointwise_scale_mod F - L63
specialize beta_product_pointwise_scale_mod x4
11Use earlier factsL64–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
12Calculate and transport equalitiesL70–70
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L70
rewrite <- hFQ at hscale
13Use earlier factsL71–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
exact hscale
Original defined command ledger · 71 lines
- 0001
intro p - 0002
intro n - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro F - 0007
intro A - 0008
intro hpn - 0009
intro hp - 0010
intro hnotdiv - 0011
intro hrange - 0012
intro hF - 0013
intro hA - 0014
have hreindex : ∃ fpb_map_code_balance_reindex. ∃ fpb_map_scale_balance_reindex. ∃ fpb_target_code_balance_reindex. ∃ fpb_target_scale_balance_reindex. BoundedPrefix(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,n) ∧ (InjectivePrefix(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,n) ∧ ((∀ x. ∀ y. ∀ z. Lt(x,n) → BetaAt(fpb_map_code_balance_reindex,fpb_map_scale_balance_reindex,x,y) → BetaAt(b,c,y,z) → BetaAt(fpb_target_code_balance_reindex,fpb_target_scale_balance_reindex,x,z)) ∧ (∀ x. ∀ y. ∀ z. Lt(x,n) → BetaAt(b,c,x,y) → BetaAt(fpb_target_code_balance_reindex,fpb_target_scale_balance_reindex,x,z) → ModEq(p,a · y,z))))Exact native replay line
have hreindex : exists fpb_map_code_balance_reindex fpb_map_scale_balance_reindex fpb_target_code_balance_reindex fpb_target_scale_balance_reindex. ((forall fp_i_fpb_balance_reindex_data_bounded. (exists fp_gap_fpb_balance_reindex_data_bounded_index. fp_gap_fpb_balance_reindex_data_bounded_index + S fp_i_fpb_balance_reindex_data_bounded = n) -> exists fp_value_fpb_balance_reindex_data_bounded. ((((exists ff_h_fpb_balance_reindex_data_bounded_entry. ff_h_fpb_balance_reindex_data_bounded_entry + S (fp_value_fpb_balance_reindex_data_bounded) = S ((S (fp_i_fpb_balance_reindex_data_bounded)) * fpb_map_scale_balance_reindex)) /\ exists ff_q_fpb_balance_reindex_data_bounded_entry. fpb_map_code_balance_reindex = ff_q_fpb_balance_reindex_data_bounded_entry * S ((S (fp_i_fpb_balance_reindex_data_bounded)) * fpb_map_scale_balance_reindex) + (fp_value_fpb_balance_reindex_data_bounded))) /\ (exists fp_gap_fpb_balance_reindex_data_bounded_value. fp_gap_fpb_balance_reindex_data_bounded_value + S fp_value_fpb_balance_reindex_data_bounded = n))) /\ ((forall fp_i_fpb_balance_reindex_data_injective fp_j_fpb_balance_reindex_data_injective fp_value_fpb_balance_reindex_data_injective. (exists fp_gap_fpb_balance_reindex_data_injective_i. fp_gap_fpb_balance_reindex_data_injective_i + S fp_i_fpb_balance_reindex_data_injective = n) -> (exists fp_gap_fpb_balance_reindex_data_injective_j. fp_gap_fpb_balance_reindex_data_injective_j + S fp_j_fpb_balance_reindex_data_injective = n) -> (((exists ff_h_fpb_balance_reindex_data_injective_left. ff_h_fpb_balance_reindex_data_injective_left + S (fp_value_fpb_balance_reindex_data_injective) = S ((S (fp_i_fpb_balance_reindex_data_injective)) * fpb_map_scale_balance_reindex)) /\ exists ff_q_fpb_balance_reindex_data_injective_left. fpb_map_code_balance_reindex = ff_q_fpb_balance_reindex_data_injective_left * S ((S (fp_i_fpb_balance_reindex_data_injective)) * fpb_map_scale_balance_reindex) + (fp_value_fpb_balance_reindex_data_injective))) -> (((exists ff_h_fpb_balance_reindex_data_injective_right. ff_h_fpb_balance_reindex_data_injective_right + S (fp_value_fpb_balance_reindex_data_injective) = S ((S (fp_j_fpb_balance_reindex_data_injective)) * fpb_map_scale_balance_reindex)) /\ exists ff_q_fpb_balance_reindex_data_injective_right. fpb_map_code_balance_reindex = ff_q_fpb_balance_reindex_data_injective_right * S ((S (fp_j_fpb_balance_reindex_data_injective)) * fpb_map_scale_balance_reindex) + (fp_value_fpb_balance_reindex_data_injective))) -> fp_i_fpb_balance_reindex_data_injective = fp_j_fpb_balance_reindex_data_injective) /\ ((forall fpr_i_fpb_balance_reindex_data_aligned fpr_j_fpb_balance_reindex_data_aligned fpr_x_fpb_balance_reindex_data_aligned. (exists fpr_h_fpb_balance_reindex_data_aligned. fpr_h_fpb_balance_reindex_data_aligned + S fpr_i_fpb_balance_reindex_data_aligned = n) -> (((exists ff_h_fpb_balance_reindex_data_aligned_map. ff_h_fpb_balance_reindex_data_aligned_map + S (fpr_j_fpb_balance_reindex_data_aligned) = S ((S (fpr_i_fpb_balance_reindex_data_aligned)) * fpb_map_scale_balance_reindex)) /\ exists ff_q_fpb_balance_reindex_data_aligned_map. fpb_map_code_balance_reindex = ff_q_fpb_balance_reindex_data_aligned_map * S ((S (fpr_i_fpb_balance_reindex_data_aligned)) * fpb_map_scale_balance_reindex) + (fpr_j_fpb_balance_reindex_data_aligned))) -> (((exists ff_h_fpb_balance_reindex_data_aligned_source. ff_h_fpb_balance_reindex_data_aligned_source + S (fpr_x_fpb_balance_reindex_data_aligned) = S ((S (fpr_j_fpb_balance_reindex_data_aligned)) * c)) /\ exists ff_q_fpb_balance_reindex_data_aligned_source. b = ff_q_fpb_balance_reindex_data_aligned_source * S ((S (fpr_j_fpb_balance_reindex_data_aligned)) * c) + (fpr_x_fpb_balance_reindex_data_aligned))) -> (((exists ff_h_fpb_balance_reindex_data_aligned_target. ff_h_fpb_balance_reindex_data_aligned_target + S (fpr_x_fpb_balance_reindex_data_aligned) = S ((S (fpr_i_fpb_balance_reindex_data_aligned)) * fpb_target_scale_balance_reindex)) /\ exists ff_q_fpb_balance_reindex_data_aligned_target. fpb_target_code_balance_reindex = ff_q_fpb_balance_reindex_data_aligned_target * S ((S (fpr_i_fpb_balance_reindex_data_aligned)) * fpb_target_scale_balance_reindex) + (fpr_x_fpb_balance_reindex_data_aligned)))) /\ (forall fsp_index_fpb_balance_reindex_data_scaled fsp_source_fpb_balance_reindex_data_scaled fsp_target_fpb_balance_reindex_data_scaled. (exists fsp_gap_fpb_balance_reindex_data_scaled. fsp_gap_fpb_balance_reindex_data_scaled + S fsp_index_fpb_balance_reindex_data_scaled = n) -> (((exists fsp_source_height_fpb_balance_reindex_data_scaled. fsp_source_height_fpb_balance_reindex_data_scaled + S (fsp_source_fpb_balance_reindex_data_scaled) = S ((S (fsp_index_fpb_balance_reindex_data_scaled)) * c)) /\ exists fsp_source_quotient_fpb_balance_reindex_data_scaled. b = fsp_source_quotient_fpb_balance_reindex_data_scaled * S ((S (fsp_index_fpb_balance_reindex_data_scaled)) * c) + (fsp_source_fpb_balance_reindex_data_scaled))) -> (((exists fsp_target_height_fpb_balance_reindex_data_scaled. fsp_target_height_fpb_balance_reindex_data_scaled + S (fsp_target_fpb_balance_reindex_data_scaled) = S ((S (fsp_index_fpb_balance_reindex_data_scaled)) * fpb_target_scale_balance_reindex)) /\ exists fsp_target_quotient_fpb_balance_reindex_data_scaled. fpb_target_code_balance_reindex = fsp_target_quotient_fpb_balance_reindex_data_scaled * S ((S (fsp_index_fpb_balance_reindex_data_scaled)) * fpb_target_scale_balance_reindex) + (fsp_target_fpb_balance_reindex_data_scaled))) -> (exists fsp_mod_left_fpb_balance_reindex_data_scaled fsp_mod_right_fpb_balance_reindex_data_scaled. a * fsp_source_fpb_balance_reindex_data_scaled + p * fsp_mod_left_fpb_balance_reindex_data_scaled = fsp_target_fpb_balance_reindex_data_scaled + p * fsp_mod_right_fpb_balance_reindex_data_scaled))))) - 0015
specialize prime_mul_residue_reindex_exists p - 0016
specialize prime_mul_residue_reindex_exists n - 0017
specialize prime_mul_residue_reindex_exists a - 0018
specialize prime_mul_residue_reindex_exists b - 0019
specialize prime_mul_residue_reindex_exists c - 0020
apply prime_mul_residue_reindex_exists - 0021
exact hpn - 0022
exact hp - 0023
exact hnotdiv - 0024
exact hrange - 0025
cases hreindex - 0026
cases hreindex_witness - 0027
cases hreindex_witness_witness - 0028
cases hreindex_witness_witness_witness - 0029
cases hreindex_witness_witness_witness_witness - 0030
cases hreindex_witness_witness_witness_witness_right - 0031
cases hreindex_witness_witness_witness_witness_right_right - 0032
have htarget_product_exists : ∃ Q. Product(x2,x3,n,Q)Exact native replay line
have htarget_product_exists : exists Q. (exists ff_u_balance_target_exists ff_v_balance_target_exists. ((((exists ff_h_balance_target_exists_start. ff_h_balance_target_exists_start + S (1) = S ((S (0)) * ff_v_balance_target_exists)) /\ exists ff_q_balance_target_exists_start. ff_u_balance_target_exists = ff_q_balance_target_exists_start * S ((S (0)) * ff_v_balance_target_exists) + (1))) /\ ((((exists ff_h_balance_target_exists_terminal. ff_h_balance_target_exists_terminal + S (Q) = S ((S (n)) * ff_v_balance_target_exists)) /\ exists ff_q_balance_target_exists_terminal. ff_u_balance_target_exists = ff_q_balance_target_exists_terminal * S ((S (n)) * ff_v_balance_target_exists) + (Q))) /\ forall ff_i_balance_target_exists. (exists ff_lt_balance_target_exists_bound. ff_lt_balance_target_exists_bound + S ff_i_balance_target_exists = n) -> exists ff_p_balance_target_exists ff_r_balance_target_exists ff_s_balance_target_exists. ((((exists ff_h_balance_target_exists_factor. ff_h_balance_target_exists_factor + S (ff_p_balance_target_exists) = S ((S (ff_i_balance_target_exists)) * x3)) /\ exists ff_q_balance_target_exists_factor. x2 = ff_q_balance_target_exists_factor * S ((S (ff_i_balance_target_exists)) * x3) + (ff_p_balance_target_exists))) /\ ((((exists ff_h_balance_target_exists_partial. ff_h_balance_target_exists_partial + S (ff_r_balance_target_exists) = S ((S (ff_i_balance_target_exists)) * ff_v_balance_target_exists)) /\ exists ff_q_balance_target_exists_partial. ff_u_balance_target_exists = ff_q_balance_target_exists_partial * S ((S (ff_i_balance_target_exists)) * ff_v_balance_target_exists) + (ff_r_balance_target_exists))) /\ ((((exists ff_h_balance_target_exists_successor. ff_h_balance_target_exists_successor + S (ff_s_balance_target_exists) = S ((S (S ff_i_balance_target_exists)) * ff_v_balance_target_exists)) /\ exists ff_q_balance_target_exists_successor. ff_u_balance_target_exists = ff_q_balance_target_exists_successor * S ((S (S ff_i_balance_target_exists)) * ff_v_balance_target_exists) + (ff_s_balance_target_exists))) /\ ff_s_balance_target_exists = ff_r_balance_target_exists * ff_p_balance_target_exists)))))) - 0033
specialize beta_product_exists x2 - 0034
specialize beta_product_exists x3 - 0035
specialize beta_product_exists n - 0036
exact beta_product_exists - 0037
cases htarget_product_exists - 0038
have hFQ : F = x4 - 0039
specialize beta_product_permutation_invariant n - 0040
specialize beta_product_permutation_invariant x - 0041
specialize beta_product_permutation_invariant x1 - 0042
specialize beta_product_permutation_invariant b - 0043
specialize beta_product_permutation_invariant c - 0044
specialize beta_product_permutation_invariant x2 - 0045
specialize beta_product_permutation_invariant x3 - 0046
specialize beta_product_permutation_invariant F - 0047
specialize beta_product_permutation_invariant x4 - 0048
apply beta_product_permutation_invariant - 0049
exact hreindex_witness_witness_witness_witness_left - 0050
exact hreindex_witness_witness_witness_witness_right_left - 0051
exact hreindex_witness_witness_witness_witness_right_right_left - 0052
exact hF - 0053
exact htarget_product_exists_witness - 0054
have hscale : ModEq(p,A · F,x4)Exact native replay line
have hscale : exists fsp_product_mod_left_balance_scaled_product fsp_product_mod_right_balance_scaled_product. (A * F) + p * fsp_product_mod_left_balance_scaled_product = x4 + p * fsp_product_mod_right_balance_scaled_product - 0055
specialize beta_product_pointwise_scale_mod p - 0056
specialize beta_product_pointwise_scale_mod a - 0057
specialize beta_product_pointwise_scale_mod b - 0058
specialize beta_product_pointwise_scale_mod c - 0059
specialize beta_product_pointwise_scale_mod x2 - 0060
specialize beta_product_pointwise_scale_mod x3 - 0061
specialize beta_product_pointwise_scale_mod n - 0062
specialize beta_product_pointwise_scale_mod F - 0063
specialize beta_product_pointwise_scale_mod x4 - 0064
specialize beta_product_pointwise_scale_mod A - 0065
apply beta_product_pointwise_scale_mod - 0066
exact hreindex_witness_witness_witness_witness_right_right_right - 0067
exact hF - 0068
exact htarget_product_exists_witness - 0069
exact hA - 0070
rewrite <- hFQ at hscale - 0071
exact hscale