Exact expanded PA statement
forall b c mb mc rb rc h X M. (forall gsp_range_index_ges_half. (exists gsp_lt_gap_ges_half_range_bound. gsp_lt_gap_ges_half_range_bound + S gsp_range_index_ges_half = h) -> (((exists gsp_beta_height_ges_half_range_entry. gsp_beta_height_ges_half_range_entry + S (1 + gsp_range_index_ges_half) = S ((S (gsp_range_index_ges_half)) * c)) /\ exists gsp_beta_quotient_ges_half_range_entry. b = gsp_beta_quotient_ges_half_range_entry * S ((S (gsp_range_index_ges_half)) * c) + (1 + gsp_range_index_ges_half)))) -> (forall gmp_index_ges_magnitude_range. (exists gsp_lt_gap_ges_magnitude_range_index_bound. gsp_lt_gap_ges_magnitude_range_index_bound + S gmp_index_ges_magnitude_range = h) -> exists gmp_magnitude_ges_magnitude_range. ((((exists ff_h_gmp_ges_magnitude_range_decoded. ff_h_gmp_ges_magnitude_range_decoded + S (gmp_magnitude_ges_magnitude_range) = S ((S (gmp_index_ges_magnitude_range)) * mc)) /\ exists ff_q_gmp_ges_magnitude_range_decoded. mb = ff_q_gmp_ges_magnitude_range_decoded * S ((S (gmp_index_ges_magnitude_range)) * mc) + (gmp_magnitude_ges_magnitude_range))) /\ ((exists gsp_lt_gap_ges_magnitude_range_positive. gsp_lt_gap_ges_magnitude_range_positive + S 0 = gmp_magnitude_ges_magnitude_range) /\ (exists gsp_le_gap_ges_magnitude_range_bounded. gsp_le_gap_ges_magnitude_range_bounded + gmp_magnitude_ges_magnitude_range = h)))) -> (forall fp_i_ges_magnitude_injective fp_j_ges_magnitude_injective fp_value_ges_magnitude_injective. (exists fp_gap_ges_magnitude_injective_i. fp_gap_ges_magnitude_injective_i + S fp_i_ges_magnitude_injective = h) -> (exists fp_gap_ges_magnitude_injective_j. fp_gap_ges_magnitude_injective_j + S fp_j_ges_magnitude_injective = h) -> (((exists ff_h_ges_magnitude_injective_left. ff_h_ges_magnitude_injective_left + S (fp_value_ges_magnitude_injective) = S ((S (fp_i_ges_magnitude_injective)) * mc)) /\ exists ff_q_ges_magnitude_injective_left. mb = ff_q_ges_magnitude_injective_left * S ((S (fp_i_ges_magnitude_injective)) * mc) + (fp_value_ges_magnitude_injective))) -> (((exists ff_h_ges_magnitude_injective_right. ff_h_ges_magnitude_injective_right + S (fp_value_ges_magnitude_injective) = S ((S (fp_j_ges_magnitude_injective)) * mc)) /\ exists ff_q_ges_magnitude_injective_right. mb = ff_q_ges_magnitude_injective_right * S ((S (fp_j_ges_magnitude_injective)) * mc) + (fp_value_ges_magnitude_injective))) -> fp_i_ges_magnitude_injective = fp_j_ges_magnitude_injective) -> (forall gmp_index_ges_recode gmp_predecessor_ges_recode. (exists gsp_lt_gap_ges_recode_index_bound. gsp_lt_gap_ges_recode_index_bound + S gmp_index_ges_recode = h) -> (((exists gsp_beta_height_gmp_ges_recode_source. gsp_beta_height_gmp_ges_recode_source + S (S gmp_predecessor_ges_recode) = S ((S (gmp_index_ges_recode)) * mc)) /\ exists gsp_beta_quotient_gmp_ges_recode_source. mb = gsp_beta_quotient_gmp_ges_recode_source * S ((S (gmp_index_ges_recode)) * mc) + (S gmp_predecessor_ges_recode))) -> (((exists ff_h_gmp_ges_recode_target. ff_h_gmp_ges_recode_target + S (gmp_predecessor_ges_recode) = S ((S (gmp_index_ges_recode)) * rc)) /\ exists ff_q_gmp_ges_recode_target. rb = ff_q_gmp_ges_recode_target * S ((S (gmp_index_ges_recode)) * rc) + (gmp_predecessor_ges_recode)))) -> (exists ff_u_ges_half_sum ff_v_ges_half_sum. ((((exists ff_h_ges_half_sum_start. ff_h_ges_half_sum_start + S (0) = S ((S (0)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_start. ff_u_ges_half_sum = ff_q_ges_half_sum_start * S ((S (0)) * ff_v_ges_half_sum) + (0))) /\ ((((exists ff_h_ges_half_sum_terminal. ff_h_ges_half_sum_terminal + S (X) = S ((S (h)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_terminal. ff_u_ges_half_sum = ff_q_ges_half_sum_terminal * S ((S (h)) * ff_v_ges_half_sum) + (X))) /\ forall ff_i_ges_half_sum. (exists ff_lt_ges_half_sum_bound. ff_lt_ges_half_sum_bound + S ff_i_ges_half_sum = h) -> exists ff_a_ges_half_sum ff_r_ges_half_sum ff_s_ges_half_sum. ((((exists ff_h_ges_half_sum_summand. ff_h_ges_half_sum_summand + S (ff_a_ges_half_sum) = S ((S (ff_i_ges_half_sum)) * c)) /\ exists ff_q_ges_half_sum_summand. b = ff_q_ges_half_sum_summand * S ((S (ff_i_ges_half_sum)) * c) + (ff_a_ges_half_sum))) /\ ((((exists ff_h_ges_half_sum_partial. ff_h_ges_half_sum_partial + S (ff_r_ges_half_sum) = S ((S (ff_i_ges_half_sum)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_partial. ff_u_ges_half_sum = ff_q_ges_half_sum_partial * S ((S (ff_i_ges_half_sum)) * ff_v_ges_half_sum) + (ff_r_ges_half_sum))) /\ ((((exists ff_h_ges_half_sum_successor. ff_h_ges_half_sum_successor + S (ff_s_ges_half_sum) = S ((S (S ff_i_ges_half_sum)) * ff_v_ges_half_sum)) /\ exists ff_q_ges_half_sum_successor. ff_u_ges_half_sum = ff_q_ges_half_sum_successor * S ((S (S ff_i_ges_half_sum)) * ff_v_ges_half_sum) + (ff_s_ges_half_sum))) /\ ff_s_ges_half_sum = ff_r_ges_half_sum + ff_a_ges_half_sum)))))) -> (exists ff_u_ges_magnitude_sum ff_v_ges_magnitude_sum. ((((exists ff_h_ges_magnitude_sum_start. ff_h_ges_magnitude_sum_start + S (0) = S ((S (0)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_start. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_start * S ((S (0)) * ff_v_ges_magnitude_sum) + (0))) /\ ((((exists ff_h_ges_magnitude_sum_terminal. ff_h_ges_magnitude_sum_terminal + S (M) = S ((S (h)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_terminal. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_terminal * S ((S (h)) * ff_v_ges_magnitude_sum) + (M))) /\ forall ff_i_ges_magnitude_sum. (exists ff_lt_ges_magnitude_sum_bound. ff_lt_ges_magnitude_sum_bound + S ff_i_ges_magnitude_sum = h) -> exists ff_a_ges_magnitude_sum ff_r_ges_magnitude_sum ff_s_ges_magnitude_sum. ((((exists ff_h_ges_magnitude_sum_summand. ff_h_ges_magnitude_sum_summand + S (ff_a_ges_magnitude_sum) = S ((S (ff_i_ges_magnitude_sum)) * mc)) /\ exists ff_q_ges_magnitude_sum_summand. mb = ff_q_ges_magnitude_sum_summand * S ((S (ff_i_ges_magnitude_sum)) * mc) + (ff_a_ges_magnitude_sum))) /\ ((((exists ff_h_ges_magnitude_sum_partial. ff_h_ges_magnitude_sum_partial + S (ff_r_ges_magnitude_sum) = S ((S (ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_partial. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_partial * S ((S (ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum) + (ff_r_ges_magnitude_sum))) /\ ((((exists ff_h_ges_magnitude_sum_successor. ff_h_ges_magnitude_sum_successor + S (ff_s_ges_magnitude_sum) = S ((S (S ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum)) /\ exists ff_q_ges_magnitude_sum_successor. ff_u_ges_magnitude_sum = ff_q_ges_magnitude_sum_successor * S ((S (S ff_i_ges_magnitude_sum)) * ff_v_ges_magnitude_sum) + (ff_s_ges_magnitude_sum))) /\ ff_s_ges_magnitude_sum = ff_r_ges_magnitude_sum + ff_a_ges_magnitude_sum)))))) -> X = MStructural proof guide
Generated structural guide
A positive magnitude permutation has exactly the canonical half-range Sum.
Use the direct prerequisites beta_magnitude_predecessor_recode_bounded, beta_magnitude_predecessor_recode_injective, beta_magnitude_predecessor_recode_aligned_half_range, beta_sum_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 PA00CS beta_magnitude_predecessor_recode_aligned_half_range PA00CX beta_sum_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 mb - 0004
intro mc - 0005
intro rb - 0006
intro rc - 0007
intro h - 0008
intro X - 0009
intro M - 0010
intro hhalf - 0011
intro hrange - 0012
intro hinjective - 0013
intro hrecode - 0014
intro hhalf_sum - 0015
intro hmagnitude_sum - 0016
have hbounded : forall fp_i_ges_recode_bounded. (exists fp_gap_ges_recode_bounded_index. fp_gap_ges_recode_bounded_index + S fp_i_ges_recode_bounded = h) -> exists fp_value_ges_recode_bounded. ((((exists ff_h_ges_recode_bounded_entry. ff_h_ges_recode_bounded_entry + S (fp_value_ges_recode_bounded) = S ((S (fp_i_ges_recode_bounded)) * rc)) /\ exists ff_q_ges_recode_bounded_entry. rb = ff_q_ges_recode_bounded_entry * S ((S (fp_i_ges_recode_bounded)) * rc) + (fp_value_ges_recode_bounded))) /\ (exists fp_gap_ges_recode_bounded_value. fp_gap_ges_recode_bounded_value + S fp_value_ges_recode_bounded = h)) - 0017
specialize beta_magnitude_predecessor_recode_bounded mb - 0018
specialize beta_magnitude_predecessor_recode_bounded mc - 0019
specialize beta_magnitude_predecessor_recode_bounded rb - 0020
specialize beta_magnitude_predecessor_recode_bounded rc - 0021
specialize beta_magnitude_predecessor_recode_bounded h - 0022
apply beta_magnitude_predecessor_recode_bounded - 0023
exact hrange - 0024
exact hrecode - 0025
have hrecode_injective : forall fp_i_ges_recode_injective fp_j_ges_recode_injective fp_value_ges_recode_injective. (exists fp_gap_ges_recode_injective_i. fp_gap_ges_recode_injective_i + S fp_i_ges_recode_injective = h) -> (exists fp_gap_ges_recode_injective_j. fp_gap_ges_recode_injective_j + S fp_j_ges_recode_injective = h) -> (((exists ff_h_ges_recode_injective_left. ff_h_ges_recode_injective_left + S (fp_value_ges_recode_injective) = S ((S (fp_i_ges_recode_injective)) * rc)) /\ exists ff_q_ges_recode_injective_left. rb = ff_q_ges_recode_injective_left * S ((S (fp_i_ges_recode_injective)) * rc) + (fp_value_ges_recode_injective))) -> (((exists ff_h_ges_recode_injective_right. ff_h_ges_recode_injective_right + S (fp_value_ges_recode_injective) = S ((S (fp_j_ges_recode_injective)) * rc)) /\ exists ff_q_ges_recode_injective_right. rb = ff_q_ges_recode_injective_right * S ((S (fp_j_ges_recode_injective)) * rc) + (fp_value_ges_recode_injective))) -> fp_i_ges_recode_injective = fp_j_ges_recode_injective - 0026
specialize beta_magnitude_predecessor_recode_injective mb - 0027
specialize beta_magnitude_predecessor_recode_injective mc - 0028
specialize beta_magnitude_predecessor_recode_injective rb - 0029
specialize beta_magnitude_predecessor_recode_injective rc - 0030
specialize beta_magnitude_predecessor_recode_injective h - 0031
apply beta_magnitude_predecessor_recode_injective - 0032
exact hrange - 0033
exact hinjective - 0034
exact hrecode - 0035
have haligned : forall fpr_i_ges_alignment fpr_j_ges_alignment fpr_x_ges_alignment. (exists fpr_h_ges_alignment. fpr_h_ges_alignment + S fpr_i_ges_alignment = h) -> (((exists ff_h_ges_alignment_map. ff_h_ges_alignment_map + S (fpr_j_ges_alignment) = S ((S (fpr_i_ges_alignment)) * rc)) /\ exists ff_q_ges_alignment_map. rb = ff_q_ges_alignment_map * S ((S (fpr_i_ges_alignment)) * rc) + (fpr_j_ges_alignment))) -> (((exists ff_h_ges_alignment_source. ff_h_ges_alignment_source + S (fpr_x_ges_alignment) = S ((S (fpr_j_ges_alignment)) * c)) /\ exists ff_q_ges_alignment_source. b = ff_q_ges_alignment_source * S ((S (fpr_j_ges_alignment)) * c) + (fpr_x_ges_alignment))) -> (((exists ff_h_ges_alignment_target. ff_h_ges_alignment_target + S (fpr_x_ges_alignment) = S ((S (fpr_i_ges_alignment)) * mc)) /\ exists ff_q_ges_alignment_target. mb = ff_q_ges_alignment_target * S ((S (fpr_i_ges_alignment)) * mc) + (fpr_x_ges_alignment))) - 0036
specialize beta_magnitude_predecessor_recode_aligned_half_range b - 0037
specialize beta_magnitude_predecessor_recode_aligned_half_range c - 0038
specialize beta_magnitude_predecessor_recode_aligned_half_range mb - 0039
specialize beta_magnitude_predecessor_recode_aligned_half_range mc - 0040
specialize beta_magnitude_predecessor_recode_aligned_half_range rb - 0041
specialize beta_magnitude_predecessor_recode_aligned_half_range rc - 0042
specialize beta_magnitude_predecessor_recode_aligned_half_range h - 0043
apply beta_magnitude_predecessor_recode_aligned_half_range - 0044
exact hhalf - 0045
exact hrange - 0046
exact hrecode - 0047
specialize beta_sum_permutation_invariant h - 0048
specialize beta_sum_permutation_invariant rb - 0049
specialize beta_sum_permutation_invariant rc - 0050
specialize beta_sum_permutation_invariant b - 0051
specialize beta_sum_permutation_invariant c - 0052
specialize beta_sum_permutation_invariant mb - 0053
specialize beta_sum_permutation_invariant mc - 0054
specialize beta_sum_permutation_invariant X - 0055
specialize beta_sum_permutation_invariant M - 0056
apply beta_sum_permutation_invariant - 0057
exact hbounded - 0058
exact hrecode_injective - 0059
exact haligned - 0060
exact hhalf_sum - 0061
exact hmagnitude_sum