Exact expanded PA statement
forall mb mc rb rc b c h. (forall gmp_index_product_magnitude_range. (exists gsp_lt_gap_product_magnitude_range_index_bound. gsp_lt_gap_product_magnitude_range_index_bound + S gmp_index_product_magnitude_range = h) -> exists gmp_magnitude_product_magnitude_range. ((((exists ff_h_gmp_product_magnitude_range_decoded. ff_h_gmp_product_magnitude_range_decoded + S (gmp_magnitude_product_magnitude_range) = S ((S (gmp_index_product_magnitude_range)) * mc)) /\ exists ff_q_gmp_product_magnitude_range_decoded. mb = ff_q_gmp_product_magnitude_range_decoded * S ((S (gmp_index_product_magnitude_range)) * mc) + (gmp_magnitude_product_magnitude_range))) /\ ((exists gsp_lt_gap_product_magnitude_range_positive. gsp_lt_gap_product_magnitude_range_positive + S 0 = gmp_magnitude_product_magnitude_range) /\ (exists gsp_le_gap_product_magnitude_range_bounded. gsp_le_gap_product_magnitude_range_bounded + gmp_magnitude_product_magnitude_range = h)))) -> (forall gmp_index_product_predecessor_recode gmp_predecessor_product_predecessor_recode. (exists gsp_lt_gap_product_predecessor_recode_index_bound. gsp_lt_gap_product_predecessor_recode_index_bound + S gmp_index_product_predecessor_recode = h) -> (((exists gsp_beta_height_gmp_product_predecessor_recode_source. gsp_beta_height_gmp_product_predecessor_recode_source + S (S gmp_predecessor_product_predecessor_recode) = S ((S (gmp_index_product_predecessor_recode)) * mc)) /\ exists gsp_beta_quotient_gmp_product_predecessor_recode_source. mb = gsp_beta_quotient_gmp_product_predecessor_recode_source * S ((S (gmp_index_product_predecessor_recode)) * mc) + (S gmp_predecessor_product_predecessor_recode))) -> (((exists ff_h_gmp_product_predecessor_recode_target. ff_h_gmp_product_predecessor_recode_target + S (gmp_predecessor_product_predecessor_recode) = S ((S (gmp_index_product_predecessor_recode)) * rc)) /\ exists ff_q_gmp_product_predecessor_recode_target. rb = ff_q_gmp_product_predecessor_recode_target * S ((S (gmp_index_product_predecessor_recode)) * rc) + (gmp_predecessor_product_predecessor_recode)))) -> (forall gsp_range_index_product_canonical_half_range. (exists gsp_lt_gap_product_canonical_half_range_range_bound. gsp_lt_gap_product_canonical_half_range_range_bound + S gsp_range_index_product_canonical_half_range = h) -> (((exists gsp_beta_height_product_canonical_half_range_range_entry. gsp_beta_height_product_canonical_half_range_range_entry + S (1 + gsp_range_index_product_canonical_half_range) = S ((S (gsp_range_index_product_canonical_half_range)) * c)) /\ exists gsp_beta_quotient_product_canonical_half_range_range_entry. b = gsp_beta_quotient_product_canonical_half_range_range_entry * S ((S (gsp_range_index_product_canonical_half_range)) * c) + (1 + gsp_range_index_product_canonical_half_range)))) -> (forall fpr_i_product_alignment fpr_j_product_alignment fpr_x_product_alignment. (exists fpr_h_product_alignment. fpr_h_product_alignment + S fpr_i_product_alignment = h) -> (((exists ff_h_product_alignment_map. ff_h_product_alignment_map + S (fpr_j_product_alignment) = S ((S (fpr_i_product_alignment)) * rc)) /\ exists ff_q_product_alignment_map. rb = ff_q_product_alignment_map * S ((S (fpr_i_product_alignment)) * rc) + (fpr_j_product_alignment))) -> (((exists ff_h_product_alignment_source. ff_h_product_alignment_source + S (fpr_x_product_alignment) = S ((S (fpr_j_product_alignment)) * c)) /\ exists ff_q_product_alignment_source. b = ff_q_product_alignment_source * S ((S (fpr_j_product_alignment)) * c) + (fpr_x_product_alignment))) -> (((exists ff_h_product_alignment_target. ff_h_product_alignment_target + S (fpr_x_product_alignment) = S ((S (fpr_i_product_alignment)) * mc)) /\ exists ff_q_product_alignment_target. mb = ff_q_product_alignment_target * S ((S (fpr_i_product_alignment)) * mc) + (fpr_x_product_alignment))))Structural proof guide
Generated structural guide
The predecessor map aligns canonical factor 1+j with magnitude S j at every position.
Use the direct prerequisites beta_magnitude_predecessor_recode_bounded, beta_magnitude_predecessor_recode_reflect, beta_at_unique, beta_range_entry_eq, add_succ_left, zero_add as previously established PA formulas.
The proof proceeds by case analysis (2), intermediate claims (8), equality transport (3).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA007S beta_magnitude_predecessor_recode_bounded PA007T beta_magnitude_predecessor_recode_reflect PA002F beta_at_unique PA0032 beta_range_entry_eq PA000E add_succ_left PA0001 zero_addDirect 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 mb - 0002
intro mc - 0003
intro rb - 0004
intro rc - 0005
intro b - 0006
intro c - 0007
intro h - 0008
intro hrange - 0009
intro hrecode - 0010
intro hhalf - 0011
have hbounded : forall fp_i_product_predecessor_bounded. (exists fp_gap_product_predecessor_bounded_index. fp_gap_product_predecessor_bounded_index + S fp_i_product_predecessor_bounded = h) -> exists fp_value_product_predecessor_bounded. ((((exists ff_h_product_predecessor_bounded_entry. ff_h_product_predecessor_bounded_entry + S (fp_value_product_predecessor_bounded) = S ((S (fp_i_product_predecessor_bounded)) * rc)) /\ exists ff_q_product_predecessor_bounded_entry. rb = ff_q_product_predecessor_bounded_entry * S ((S (fp_i_product_predecessor_bounded)) * rc) + (fp_value_product_predecessor_bounded))) /\ (exists fp_gap_product_predecessor_bounded_value. fp_gap_product_predecessor_bounded_value + S fp_value_product_predecessor_bounded = h)) - 0012
specialize beta_magnitude_predecessor_recode_bounded mb - 0013
specialize beta_magnitude_predecessor_recode_bounded mc - 0014
specialize beta_magnitude_predecessor_recode_bounded rb - 0015
specialize beta_magnitude_predecessor_recode_bounded rc - 0016
specialize beta_magnitude_predecessor_recode_bounded h - 0017
apply beta_magnitude_predecessor_recode_bounded - 0018
exact hrange - 0019
exact hrecode - 0020
intro i - 0021
intro j - 0022
intro x - 0023
intro hi - 0024
intro hmap - 0025
intro hsource - 0026
have hjdata : exists y. ((((exists ff_h_product_alignment_bounded_entry. ff_h_product_alignment_bounded_entry + S (y) = S ((S (i)) * rc)) /\ exists ff_q_product_alignment_bounded_entry. rb = ff_q_product_alignment_bounded_entry * S ((S (i)) * rc) + (y))) /\ (exists gsp_lt_gap_product_alignment_bounded_value. gsp_lt_gap_product_alignment_bounded_value + S y = h)) - 0027
specialize hbounded i - 0028
apply hbounded - 0029
exact hi - 0030
cases hjdata - 0031
cases hjdata_witness - 0032
have hjy : j = x1 - 0033
specialize beta_at_unique rb - 0034
specialize beta_at_unique rc - 0035
specialize beta_at_unique i - 0036
specialize beta_at_unique j - 0037
specialize beta_at_unique x1 - 0038
apply beta_at_unique - 0039
exact hmap - 0040
exact hjdata_witness_left - 0041
have hj : exists gsp_lt_gap_product_alignment_j_bound. gsp_lt_gap_product_alignment_j_bound + S j = h - 0042
rewrite hjy - 0043
exact hjdata_witness_right - 0044
have hmagnitude : ((exists gsp_beta_height_product_alignment_magnitude_successor. gsp_beta_height_product_alignment_magnitude_successor + S (S j) = S ((S (i)) * mc)) /\ exists gsp_beta_quotient_product_alignment_magnitude_successor. mb = gsp_beta_quotient_product_alignment_magnitude_successor * S ((S (i)) * mc) + (S j)) - 0045
specialize beta_magnitude_predecessor_recode_reflect mb - 0046
specialize beta_magnitude_predecessor_recode_reflect mc - 0047
specialize beta_magnitude_predecessor_recode_reflect rb - 0048
specialize beta_magnitude_predecessor_recode_reflect rc - 0049
specialize beta_magnitude_predecessor_recode_reflect h - 0050
specialize beta_magnitude_predecessor_recode_reflect h - 0051
specialize beta_magnitude_predecessor_recode_reflect i - 0052
specialize beta_magnitude_predecessor_recode_reflect j - 0053
apply beta_magnitude_predecessor_recode_reflect - 0054
exact hrange - 0055
exact hrecode - 0056
exact hi - 0057
exact hmap - 0058
have hxraw : x = 1 + j - 0059
specialize beta_range_entry_eq b - 0060
specialize beta_range_entry_eq c - 0061
specialize beta_range_entry_eq 1 - 0062
specialize beta_range_entry_eq h - 0063
specialize beta_range_entry_eq j - 0064
specialize beta_range_entry_eq x - 0065
apply beta_range_entry_eq - 0066
exact hhalf - 0067
exact hj - 0068
exact hsource - 0069
have hone : 1 + j = S j - 0070
trans S (0 + j) - 0071
specialize add_succ_left 0 - 0072
specialize add_succ_left j - 0073
exact add_succ_left - 0074
congr - 0075
specialize zero_add j - 0076
exact zero_add - 0077
have hxsucc : x = S j - 0078
trans 1 + j - 0079
exact hxraw - 0080
exact hone - 0081
rewrite hxsucc - 0082
rewrite hxsucc - 0083
exact hmagnitude