Exact expanded PA statement
forall p h a b c mb mc sb sc l. (forall gsp_index_bits_source. (exists gsp_lt_gap_bits_source_index_bound. gsp_lt_gap_bits_source_index_bound + S gsp_index_bits_source = l) -> (exists gsp_value_bits_source_entry gsp_magnitude_bits_source_entry gsp_sign_bits_source_entry. (((exists ff_h_gsp_bits_source_entry_source. ff_h_gsp_bits_source_entry_source + S (gsp_value_bits_source_entry) = S ((S (gsp_index_bits_source)) * c)) /\ exists ff_q_gsp_bits_source_entry_source. b = ff_q_gsp_bits_source_entry_source * S ((S (gsp_index_bits_source)) * c) + (gsp_value_bits_source_entry))) /\ ((((exists ff_h_gsp_bits_source_entry_magnitude. ff_h_gsp_bits_source_entry_magnitude + S (gsp_magnitude_bits_source_entry) = S ((S (gsp_index_bits_source)) * mc)) /\ exists ff_q_gsp_bits_source_entry_magnitude. mb = ff_q_gsp_bits_source_entry_magnitude * S ((S (gsp_index_bits_source)) * mc) + (gsp_magnitude_bits_source_entry))) /\ ((((exists ff_h_gsp_bits_source_entry_sign. ff_h_gsp_bits_source_entry_sign + S (gsp_sign_bits_source_entry) = S ((S (gsp_index_bits_source)) * sc)) /\ exists ff_q_gsp_bits_source_entry_sign. sb = ff_q_gsp_bits_source_entry_sign * S ((S (gsp_index_bits_source)) * sc) + (gsp_sign_bits_source_entry))) /\ ((exists gsp_lt_gap_bits_source_entry_positive. gsp_lt_gap_bits_source_entry_positive + S 0 = gsp_magnitude_bits_source_entry) /\ ((exists gsp_le_gap_bits_source_entry_bounded. gsp_le_gap_bits_source_entry_bounded + gsp_magnitude_bits_source_entry = h) /\ ((gsp_sign_bits_source_entry = 0 \/ gsp_sign_bits_source_entry = 1) /\ (((gsp_sign_bits_source_entry = 0 /\ (exists gsp_mod_left_bits_source_entry_lower gsp_mod_right_bits_source_entry_lower. (a * gsp_value_bits_source_entry) + p * gsp_mod_left_bits_source_entry_lower = (gsp_magnitude_bits_source_entry) + p * gsp_mod_right_bits_source_entry_lower)) \/ (gsp_sign_bits_source_entry = 1 /\ (exists gsp_mod_left_bits_source_entry_reflected gsp_mod_right_bits_source_entry_reflected. (a * gsp_value_bits_source_entry) + p * gsp_mod_left_bits_source_entry_reflected = ((2 * h) * gsp_magnitude_bits_source_entry) + p * gsp_mod_right_bits_source_entry_reflected))))))))))) -> (forall ff_i_gsp_signs. (exists ff_lt_gsp_signs_bound. ff_lt_gsp_signs_bound + S ff_i_gsp_signs = l) -> exists ff_bit_gsp_signs. ((((exists ff_h_gsp_signs_decoded. ff_h_gsp_signs_decoded + S (ff_bit_gsp_signs) = S ((S (ff_i_gsp_signs)) * sc)) /\ exists ff_q_gsp_signs_decoded. sb = ff_q_gsp_signs_decoded * S ((S (ff_i_gsp_signs)) * sc) + (ff_bit_gsp_signs))) /\ (ff_bit_gsp_signs = 0 \/ ff_bit_gsp_signs = 1)))Structural proof guide
Generated structural guide
The sign projection of every encoded signed-half prefix is an AllBits prefix.
This root lemma is proved directly from the PA rules and the hypotheses introduced by its statement.
The proof proceeds by case analysis (9), intermediate claims (1).
Referenced ingredients
none
Proof neighborhood
Direct dependencies
none
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.
- 0001
intro p - 0002
intro h - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro mb - 0007
intro mc - 0008
intro sb - 0009
intro sc - 0010
intro l - 0011
intro hprefix - 0012
intro i - 0013
intro hi - 0014
have hentry : exists gsp_value_bits_entry gsp_magnitude_bits_entry gsp_sign_bits_entry. (((exists ff_h_gsp_bits_entry_source. ff_h_gsp_bits_entry_source + S (gsp_value_bits_entry) = S ((S (i)) * c)) /\ exists ff_q_gsp_bits_entry_source. b = ff_q_gsp_bits_entry_source * S ((S (i)) * c) + (gsp_value_bits_entry))) /\ ((((exists ff_h_gsp_bits_entry_magnitude. ff_h_gsp_bits_entry_magnitude + S (gsp_magnitude_bits_entry) = S ((S (i)) * mc)) /\ exists ff_q_gsp_bits_entry_magnitude. mb = ff_q_gsp_bits_entry_magnitude * S ((S (i)) * mc) + (gsp_magnitude_bits_entry))) /\ ((((exists ff_h_gsp_bits_entry_sign. ff_h_gsp_bits_entry_sign + S (gsp_sign_bits_entry) = S ((S (i)) * sc)) /\ exists ff_q_gsp_bits_entry_sign. sb = ff_q_gsp_bits_entry_sign * S ((S (i)) * sc) + (gsp_sign_bits_entry))) /\ ((exists gsp_lt_gap_bits_entry_positive. gsp_lt_gap_bits_entry_positive + S 0 = gsp_magnitude_bits_entry) /\ ((exists gsp_le_gap_bits_entry_bounded. gsp_le_gap_bits_entry_bounded + gsp_magnitude_bits_entry = h) /\ ((gsp_sign_bits_entry = 0 \/ gsp_sign_bits_entry = 1) /\ (((gsp_sign_bits_entry = 0 /\ (exists gsp_mod_left_bits_entry_lower gsp_mod_right_bits_entry_lower. (a * gsp_value_bits_entry) + p * gsp_mod_left_bits_entry_lower = (gsp_magnitude_bits_entry) + p * gsp_mod_right_bits_entry_lower)) \/ (gsp_sign_bits_entry = 1 /\ (exists gsp_mod_left_bits_entry_reflected gsp_mod_right_bits_entry_reflected. (a * gsp_value_bits_entry) + p * gsp_mod_left_bits_entry_reflected = ((2 * h) * gsp_magnitude_bits_entry) + p * gsp_mod_right_bits_entry_reflected))))))))) - 0015
specialize hprefix i - 0016
apply hprefix - 0017
exact hi - 0018
cases hentry - 0019
cases hentry_witness - 0020
cases hentry_witness_witness - 0021
cases hentry_witness_witness_witness - 0022
cases hentry_witness_witness_witness_right - 0023
cases hentry_witness_witness_witness_right_right - 0024
cases hentry_witness_witness_witness_right_right_right - 0025
cases hentry_witness_witness_witness_right_right_right_right - 0026
cases hentry_witness_witness_witness_right_right_right_right_right - 0027
exists x2 - 0028
split - 0029
exact hentry_witness_witness_witness_right_right_left - 0030
exact hentry_witness_witness_witness_right_right_right_right_right_left