Exact expanded PA statement
forall b c r s z d f g l P Q. (forall gmp_index_wtp_alignment_range. (exists gsp_lt_gap_wtp_alignment_range_index_bound. gsp_lt_gap_wtp_alignment_range_index_bound + S gmp_index_wtp_alignment_range = l) -> exists gmp_magnitude_wtp_alignment_range. ((((exists ff_h_gmp_wtp_alignment_range_decoded. ff_h_gmp_wtp_alignment_range_decoded + S (gmp_magnitude_wtp_alignment_range) = S ((S (gmp_index_wtp_alignment_range)) * c)) /\ exists ff_q_gmp_wtp_alignment_range_decoded. b = ff_q_gmp_wtp_alignment_range_decoded * S ((S (gmp_index_wtp_alignment_range)) * c) + (gmp_magnitude_wtp_alignment_range))) /\ ((exists gsp_lt_gap_wtp_alignment_range_positive. gsp_lt_gap_wtp_alignment_range_positive + S 0 = gmp_magnitude_wtp_alignment_range) /\ (exists gsp_le_gap_wtp_alignment_range_bounded. gsp_le_gap_wtp_alignment_range_bounded + gmp_magnitude_wtp_alignment_range = l)))) -> (forall fp_i_wtp_source_injective fp_j_wtp_source_injective fp_value_wtp_source_injective. (exists fp_gap_wtp_source_injective_i. fp_gap_wtp_source_injective_i + S fp_i_wtp_source_injective = l) -> (exists fp_gap_wtp_source_injective_j. fp_gap_wtp_source_injective_j + S fp_j_wtp_source_injective = l) -> (((exists ff_h_wtp_source_injective_left. ff_h_wtp_source_injective_left + S (fp_value_wtp_source_injective) = S ((S (fp_i_wtp_source_injective)) * c)) /\ exists ff_q_wtp_source_injective_left. b = ff_q_wtp_source_injective_left * S ((S (fp_i_wtp_source_injective)) * c) + (fp_value_wtp_source_injective))) -> (((exists ff_h_wtp_source_injective_right. ff_h_wtp_source_injective_right + S (fp_value_wtp_source_injective) = S ((S (fp_j_wtp_source_injective)) * c)) /\ exists ff_q_wtp_source_injective_right. b = ff_q_wtp_source_injective_right * S ((S (fp_j_wtp_source_injective)) * c) + (fp_value_wtp_source_injective))) -> fp_i_wtp_source_injective = fp_j_wtp_source_injective) -> (forall gmp_index_wtp_alignment_recode gmp_predecessor_wtp_alignment_recode. (exists gsp_lt_gap_wtp_alignment_recode_index_bound. gsp_lt_gap_wtp_alignment_recode_index_bound + S gmp_index_wtp_alignment_recode = l) -> (((exists gsp_beta_height_gmp_wtp_alignment_recode_source. gsp_beta_height_gmp_wtp_alignment_recode_source + S (S gmp_predecessor_wtp_alignment_recode) = S ((S (gmp_index_wtp_alignment_recode)) * c)) /\ exists gsp_beta_quotient_gmp_wtp_alignment_recode_source. b = gsp_beta_quotient_gmp_wtp_alignment_recode_source * S ((S (gmp_index_wtp_alignment_recode)) * c) + (S gmp_predecessor_wtp_alignment_recode))) -> (((exists ff_h_gmp_wtp_alignment_recode_target. ff_h_gmp_wtp_alignment_recode_target + S (gmp_predecessor_wtp_alignment_recode) = S ((S (gmp_index_wtp_alignment_recode)) * s)) /\ exists ff_q_gmp_wtp_alignment_recode_target. r = ff_q_gmp_wtp_alignment_recode_target * S ((S (gmp_index_wtp_alignment_recode)) * s) + (gmp_predecessor_wtp_alignment_recode)))) -> (forall wsl_index_wtp_alignment_lift wsl_value_wtp_alignment_lift. (exists wpo_gap_wtp_alignment_lift_bound. wpo_gap_wtp_alignment_lift_bound + S (wsl_index_wtp_alignment_lift) = l) -> (((exists wpo_beta_height_wtp_alignment_lift_source. wpo_beta_height_wtp_alignment_lift_source + S (wsl_value_wtp_alignment_lift) = S ((S (wsl_index_wtp_alignment_lift)) * c)) /\ exists wpo_beta_quotient_wtp_alignment_lift_source. b = wpo_beta_quotient_wtp_alignment_lift_source * S ((S (wsl_index_wtp_alignment_lift)) * c) + (wsl_value_wtp_alignment_lift))) -> (((exists wpo_beta_height_wtp_alignment_lift_target. wpo_beta_height_wtp_alignment_lift_target + S (S wsl_value_wtp_alignment_lift) = S ((S (wsl_index_wtp_alignment_lift)) * g)) /\ exists wpo_beta_quotient_wtp_alignment_lift_target. f = wpo_beta_quotient_wtp_alignment_lift_target * S ((S (wsl_index_wtp_alignment_lift)) * g) + (S wsl_value_wtp_alignment_lift)))) -> (forall wtp_range_index_wtp_alignment_range_two. (exists wtp_range_gap_wtp_alignment_range_two. wtp_range_gap_wtp_alignment_range_two + S wtp_range_index_wtp_alignment_range_two = l) -> (((exists ff_h_wtp_alignment_range_two_decoded. ff_h_wtp_alignment_range_two_decoded + S (2 + wtp_range_index_wtp_alignment_range_two) = S ((S (wtp_range_index_wtp_alignment_range_two)) * d)) /\ exists ff_q_wtp_alignment_range_two_decoded. z = ff_q_wtp_alignment_range_two_decoded * S ((S (wtp_range_index_wtp_alignment_range_two)) * d) + (2 + wtp_range_index_wtp_alignment_range_two)))) -> (exists ff_u_wtp_canonical_product ff_v_wtp_canonical_product. ((((exists ff_h_wtp_canonical_product_start. ff_h_wtp_canonical_product_start + S (1) = S ((S (0)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_start. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_start * S ((S (0)) * ff_v_wtp_canonical_product) + (1))) /\ ((((exists ff_h_wtp_canonical_product_terminal. ff_h_wtp_canonical_product_terminal + S (P) = S ((S (l)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_terminal. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_terminal * S ((S (l)) * ff_v_wtp_canonical_product) + (P))) /\ forall ff_i_wtp_canonical_product. (exists ff_lt_wtp_canonical_product_bound. ff_lt_wtp_canonical_product_bound + S ff_i_wtp_canonical_product = l) -> exists ff_p_wtp_canonical_product ff_r_wtp_canonical_product ff_s_wtp_canonical_product. ((((exists ff_h_wtp_canonical_product_factor. ff_h_wtp_canonical_product_factor + S (ff_p_wtp_canonical_product) = S ((S (ff_i_wtp_canonical_product)) * d)) /\ exists ff_q_wtp_canonical_product_factor. z = ff_q_wtp_canonical_product_factor * S ((S (ff_i_wtp_canonical_product)) * d) + (ff_p_wtp_canonical_product))) /\ ((((exists ff_h_wtp_canonical_product_partial. ff_h_wtp_canonical_product_partial + S (ff_r_wtp_canonical_product) = S ((S (ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_partial. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_partial * S ((S (ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product) + (ff_r_wtp_canonical_product))) /\ ((((exists ff_h_wtp_canonical_product_successor. ff_h_wtp_canonical_product_successor + S (ff_s_wtp_canonical_product) = S ((S (S ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_successor. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_successor * S ((S (S ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product) + (ff_s_wtp_canonical_product))) /\ ff_s_wtp_canonical_product = ff_r_wtp_canonical_product * ff_p_wtp_canonical_product)))))) -> (exists ff_u_wtp_lifted_product ff_v_wtp_lifted_product. ((((exists ff_h_wtp_lifted_product_start. ff_h_wtp_lifted_product_start + S (1) = S ((S (0)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_start. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_start * S ((S (0)) * ff_v_wtp_lifted_product) + (1))) /\ ((((exists ff_h_wtp_lifted_product_terminal. ff_h_wtp_lifted_product_terminal + S (Q) = S ((S (l)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_terminal. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_terminal * S ((S (l)) * ff_v_wtp_lifted_product) + (Q))) /\ forall ff_i_wtp_lifted_product. (exists ff_lt_wtp_lifted_product_bound. ff_lt_wtp_lifted_product_bound + S ff_i_wtp_lifted_product = l) -> exists ff_p_wtp_lifted_product ff_r_wtp_lifted_product ff_s_wtp_lifted_product. ((((exists ff_h_wtp_lifted_product_factor. ff_h_wtp_lifted_product_factor + S (ff_p_wtp_lifted_product) = S ((S (ff_i_wtp_lifted_product)) * g)) /\ exists ff_q_wtp_lifted_product_factor. f = ff_q_wtp_lifted_product_factor * S ((S (ff_i_wtp_lifted_product)) * g) + (ff_p_wtp_lifted_product))) /\ ((((exists ff_h_wtp_lifted_product_partial. ff_h_wtp_lifted_product_partial + S (ff_r_wtp_lifted_product) = S ((S (ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_partial. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_partial * S ((S (ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product) + (ff_r_wtp_lifted_product))) /\ ((((exists ff_h_wtp_lifted_product_successor. ff_h_wtp_lifted_product_successor + S (ff_s_wtp_lifted_product) = S ((S (S ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_successor. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_successor * S ((S (S ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product) + (ff_s_wtp_lifted_product))) /\ ff_s_wtp_lifted_product = ff_r_wtp_lifted_product * ff_p_wtp_lifted_product)))))) -> P = QStructural proof guide
Generated structural guide
The lifted terminal product equals the product of the canonical nonendpoint range.
Use the direct prerequisites beta_magnitude_predecessor_recode_bounded, beta_magnitude_predecessor_recode_injective, pair_order_predecessor_range_two_successor_lift_aligned, beta_product_permutation_invariant as previously established PA formulas.
The proof proceeds by intermediate claims (3).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA007S beta_magnitude_predecessor_recode_bounded PA007U beta_magnitude_predecessor_recode_injective PA00BC pair_order_predecessor_range_two_successor_lift_aligned PA007X beta_product_permutation_invariantDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro b - 0002
intro c - 0003
intro r - 0004
intro s - 0005
intro z - 0006
intro d - 0007
intro f - 0008
intro g - 0009
intro l - 0010
intro P - 0011
intro Q - 0012
intro hrange - 0013
intro hinjective - 0014
intro hrecode - 0015
intro hlift - 0016
intro hcanonical - 0017
intro hcanonical_product - 0018
intro hlifted_product - 0019
have hbounded : forall fp_i_wtp_predecessor_bounded. (exists fp_gap_wtp_predecessor_bounded_index. fp_gap_wtp_predecessor_bounded_index + S fp_i_wtp_predecessor_bounded = l) -> exists fp_value_wtp_predecessor_bounded. ((((exists ff_h_wtp_predecessor_bounded_entry. ff_h_wtp_predecessor_bounded_entry + S (fp_value_wtp_predecessor_bounded) = S ((S (fp_i_wtp_predecessor_bounded)) * s)) /\ exists ff_q_wtp_predecessor_bounded_entry. r = ff_q_wtp_predecessor_bounded_entry * S ((S (fp_i_wtp_predecessor_bounded)) * s) + (fp_value_wtp_predecessor_bounded))) /\ (exists fp_gap_wtp_predecessor_bounded_value. fp_gap_wtp_predecessor_bounded_value + S fp_value_wtp_predecessor_bounded = l)) - 0020
specialize beta_magnitude_predecessor_recode_bounded b - 0021
specialize beta_magnitude_predecessor_recode_bounded c - 0022
specialize beta_magnitude_predecessor_recode_bounded r - 0023
specialize beta_magnitude_predecessor_recode_bounded s - 0024
specialize beta_magnitude_predecessor_recode_bounded l - 0025
apply beta_magnitude_predecessor_recode_bounded - 0026
exact hrange - 0027
exact hrecode - 0028
have hmap_injective : forall fp_i_wtp_predecessor_injective fp_j_wtp_predecessor_injective fp_value_wtp_predecessor_injective. (exists fp_gap_wtp_predecessor_injective_i. fp_gap_wtp_predecessor_injective_i + S fp_i_wtp_predecessor_injective = l) -> (exists fp_gap_wtp_predecessor_injective_j. fp_gap_wtp_predecessor_injective_j + S fp_j_wtp_predecessor_injective = l) -> (((exists ff_h_wtp_predecessor_injective_left. ff_h_wtp_predecessor_injective_left + S (fp_value_wtp_predecessor_injective) = S ((S (fp_i_wtp_predecessor_injective)) * s)) /\ exists ff_q_wtp_predecessor_injective_left. r = ff_q_wtp_predecessor_injective_left * S ((S (fp_i_wtp_predecessor_injective)) * s) + (fp_value_wtp_predecessor_injective))) -> (((exists ff_h_wtp_predecessor_injective_right. ff_h_wtp_predecessor_injective_right + S (fp_value_wtp_predecessor_injective) = S ((S (fp_j_wtp_predecessor_injective)) * s)) /\ exists ff_q_wtp_predecessor_injective_right. r = ff_q_wtp_predecessor_injective_right * S ((S (fp_j_wtp_predecessor_injective)) * s) + (fp_value_wtp_predecessor_injective))) -> fp_i_wtp_predecessor_injective = fp_j_wtp_predecessor_injective - 0029
specialize beta_magnitude_predecessor_recode_injective b - 0030
specialize beta_magnitude_predecessor_recode_injective c - 0031
specialize beta_magnitude_predecessor_recode_injective r - 0032
specialize beta_magnitude_predecessor_recode_injective s - 0033
specialize beta_magnitude_predecessor_recode_injective l - 0034
apply beta_magnitude_predecessor_recode_injective - 0035
exact hrange - 0036
exact hinjective - 0037
exact hrecode - 0038
have haligned : forall fpr_i_wtp_alignment fpr_j_wtp_alignment fpr_x_wtp_alignment. (exists fpr_h_wtp_alignment. fpr_h_wtp_alignment + S fpr_i_wtp_alignment = l) -> (((exists ff_h_wtp_alignment_map. ff_h_wtp_alignment_map + S (fpr_j_wtp_alignment) = S ((S (fpr_i_wtp_alignment)) * s)) /\ exists ff_q_wtp_alignment_map. r = ff_q_wtp_alignment_map * S ((S (fpr_i_wtp_alignment)) * s) + (fpr_j_wtp_alignment))) -> (((exists ff_h_wtp_alignment_source. ff_h_wtp_alignment_source + S (fpr_x_wtp_alignment) = S ((S (fpr_j_wtp_alignment)) * d)) /\ exists ff_q_wtp_alignment_source. z = ff_q_wtp_alignment_source * S ((S (fpr_j_wtp_alignment)) * d) + (fpr_x_wtp_alignment))) -> (((exists ff_h_wtp_alignment_target. ff_h_wtp_alignment_target + S (fpr_x_wtp_alignment) = S ((S (fpr_i_wtp_alignment)) * g)) /\ exists ff_q_wtp_alignment_target. f = ff_q_wtp_alignment_target * S ((S (fpr_i_wtp_alignment)) * g) + (fpr_x_wtp_alignment))) - 0039
specialize pair_order_predecessor_range_two_successor_lift_aligned b - 0040
specialize pair_order_predecessor_range_two_successor_lift_aligned c - 0041
specialize pair_order_predecessor_range_two_successor_lift_aligned r - 0042
specialize pair_order_predecessor_range_two_successor_lift_aligned s - 0043
specialize pair_order_predecessor_range_two_successor_lift_aligned z - 0044
specialize pair_order_predecessor_range_two_successor_lift_aligned d - 0045
specialize pair_order_predecessor_range_two_successor_lift_aligned f - 0046
specialize pair_order_predecessor_range_two_successor_lift_aligned g - 0047
specialize pair_order_predecessor_range_two_successor_lift_aligned l - 0048
apply pair_order_predecessor_range_two_successor_lift_aligned - 0049
exact hrange - 0050
exact hrecode - 0051
exact hlift - 0052
exact hcanonical - 0053
specialize beta_product_permutation_invariant l - 0054
specialize beta_product_permutation_invariant r - 0055
specialize beta_product_permutation_invariant s - 0056
specialize beta_product_permutation_invariant z - 0057
specialize beta_product_permutation_invariant d - 0058
specialize beta_product_permutation_invariant f - 0059
specialize beta_product_permutation_invariant g - 0060
specialize beta_product_permutation_invariant P - 0061
specialize beta_product_permutation_invariant Q - 0062
apply beta_product_permutation_invariant - 0063
exact hbounded - 0064
exact hmap_injective - 0065
exact haligned - 0066
exact hcanonical_product - 0067
exact hlifted_product