PA00CY

beta_magnitude_sum_permutation_exact

Alpha v16 checked-use theorem · independently closed; not Stable

A positive magnitude permutation has exactly the canonical half-range Sum.

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 = M

Structural 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

Direct 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.

  1. 0001intro b
  2. 0002intro c
  3. 0003intro mb
  4. 0004intro mc
  5. 0005intro rb
  6. 0006intro rc
  7. 0007intro h
  8. 0008intro X
  9. 0009intro M
  10. 0010intro hhalf
  11. 0011intro hrange
  12. 0012intro hinjective
  13. 0013intro hrecode
  14. 0014intro hhalf_sum
  15. 0015intro hmagnitude_sum
  16. 0016have 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))
  17. 0017specialize beta_magnitude_predecessor_recode_bounded mb
  18. 0018specialize beta_magnitude_predecessor_recode_bounded mc
  19. 0019specialize beta_magnitude_predecessor_recode_bounded rb
  20. 0020specialize beta_magnitude_predecessor_recode_bounded rc
  21. 0021specialize beta_magnitude_predecessor_recode_bounded h
  22. 0022apply beta_magnitude_predecessor_recode_bounded
  23. 0023exact hrange
  24. 0024exact hrecode
  25. 0025have 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
  26. 0026specialize beta_magnitude_predecessor_recode_injective mb
  27. 0027specialize beta_magnitude_predecessor_recode_injective mc
  28. 0028specialize beta_magnitude_predecessor_recode_injective rb
  29. 0029specialize beta_magnitude_predecessor_recode_injective rc
  30. 0030specialize beta_magnitude_predecessor_recode_injective h
  31. 0031apply beta_magnitude_predecessor_recode_injective
  32. 0032exact hrange
  33. 0033exact hinjective
  34. 0034exact hrecode
  35. 0035have 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)))
  36. 0036specialize beta_magnitude_predecessor_recode_aligned_half_range b
  37. 0037specialize beta_magnitude_predecessor_recode_aligned_half_range c
  38. 0038specialize beta_magnitude_predecessor_recode_aligned_half_range mb
  39. 0039specialize beta_magnitude_predecessor_recode_aligned_half_range mc
  40. 0040specialize beta_magnitude_predecessor_recode_aligned_half_range rb
  41. 0041specialize beta_magnitude_predecessor_recode_aligned_half_range rc
  42. 0042specialize beta_magnitude_predecessor_recode_aligned_half_range h
  43. 0043apply beta_magnitude_predecessor_recode_aligned_half_range
  44. 0044exact hhalf
  45. 0045exact hrange
  46. 0046exact hrecode
  47. 0047specialize beta_sum_permutation_invariant h
  48. 0048specialize beta_sum_permutation_invariant rb
  49. 0049specialize beta_sum_permutation_invariant rc
  50. 0050specialize beta_sum_permutation_invariant b
  51. 0051specialize beta_sum_permutation_invariant c
  52. 0052specialize beta_sum_permutation_invariant mb
  53. 0053specialize beta_sum_permutation_invariant mc
  54. 0054specialize beta_sum_permutation_invariant X
  55. 0055specialize beta_sum_permutation_invariant M
  56. 0056apply beta_sum_permutation_invariant
  57. 0057exact hbounded
  58. 0058exact hrecode_injective
  59. 0059exact haligned
  60. 0060exact hhalf_sum
  61. 0061exact hmagnitude_sum