Exact expanded PA statement
forall b c mb mc rb rc h. (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 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)))) -> (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))))Structural proof guide
Generated structural guide
The magnitude-predecessor code aligns positive magnitudes with the canonical half range.
Use the direct prerequisites beta_magnitude_predecessor_recode_reflect, beta_at_unique, add_succ_left, zero_add as previously established PA formulas.
The proof proceeds by case analysis (3), intermediate claims (8), equality transport (3).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA007T beta_magnitude_predecessor_recode_reflect PA002F beta_at_unique 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 b - 0002
intro c - 0003
intro mb - 0004
intro mc - 0005
intro rb - 0006
intro rc - 0007
intro h - 0008
intro hhalf - 0009
intro hrange - 0010
intro hrecode - 0011
intro i - 0012
intro j - 0013
intro v - 0014
intro hi - 0015
intro hmap - 0016
intro hsource - 0017
have hmagnitude_succ : ((exists gsp_beta_height_ges_proof_magnitude_succ. gsp_beta_height_ges_proof_magnitude_succ + S (S j) = S ((S (i)) * mc)) /\ exists gsp_beta_quotient_ges_proof_magnitude_succ. mb = gsp_beta_quotient_ges_proof_magnitude_succ * S ((S (i)) * mc) + (S j)) - 0018
specialize beta_magnitude_predecessor_recode_reflect mb - 0019
specialize beta_magnitude_predecessor_recode_reflect mc - 0020
specialize beta_magnitude_predecessor_recode_reflect rb - 0021
specialize beta_magnitude_predecessor_recode_reflect rc - 0022
specialize beta_magnitude_predecessor_recode_reflect h - 0023
specialize beta_magnitude_predecessor_recode_reflect h - 0024
specialize beta_magnitude_predecessor_recode_reflect i - 0025
specialize beta_magnitude_predecessor_recode_reflect j - 0026
apply beta_magnitude_predecessor_recode_reflect - 0027
exact hrange - 0028
exact hrecode - 0029
exact hi - 0030
exact hmap - 0031
have hrange_i : exists m. (((exists ff_h_ges_proof_range_entry. ff_h_ges_proof_range_entry + S (m) = S ((S (i)) * mc)) /\ exists ff_q_ges_proof_range_entry. mb = ff_q_ges_proof_range_entry * S ((S (i)) * mc) + (m))) /\ ((exists g. g + S 0 = m) /\ exists g. g + m = h) - 0032
specialize hrange i - 0033
apply hrange - 0034
exact hi - 0035
cases hrange_i - 0036
cases hrange_i_witness - 0037
cases hrange_i_witness_right - 0038
have hmagnitude_eq : x = S j - 0039
specialize beta_at_unique mb - 0040
specialize beta_at_unique mc - 0041
specialize beta_at_unique i - 0042
specialize beta_at_unique x - 0043
specialize beta_at_unique (S j) - 0044
apply beta_at_unique - 0045
exact hrange_i_witness_left - 0046
exact hmagnitude_succ - 0047
have hj : exists g. g + S j = h - 0048
rewrite <- hmagnitude_eq - 0049
exact hrange_i_witness_right_right - 0050
have hcanonical : ((exists gsp_beta_height_ges_proof_canonical. gsp_beta_height_ges_proof_canonical + S (1 + j) = S ((S (j)) * c)) /\ exists gsp_beta_quotient_ges_proof_canonical. b = gsp_beta_quotient_ges_proof_canonical * S ((S (j)) * c) + (1 + j)) - 0051
specialize hhalf j - 0052
apply hhalf - 0053
exact hj - 0054
have hv : v = 1 + j - 0055
specialize beta_at_unique b - 0056
specialize beta_at_unique c - 0057
specialize beta_at_unique j - 0058
specialize beta_at_unique v - 0059
specialize beta_at_unique (1 + j) - 0060
apply beta_at_unique - 0061
exact hsource - 0062
exact hcanonical - 0063
have hone : 1 + j = S j - 0064
specialize add_succ_left 0 - 0065
specialize add_succ_left j - 0066
trans S (0 + j) - 0067
exact add_succ_left - 0068
congr - 0069
specialize zero_add j - 0070
exact zero_add - 0071
have hv_succ : v = S j - 0072
trans 1 + j - 0073
exact hv - 0074
exact hone - 0075
rewrite <- hv_succ at hmagnitude_succ - 0076
rewrite <- hv_succ at hmagnitude_succ - 0077
exact hmagnitude_succ