Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
Exact expanded PA statement
forall mb mc H l. (forall gmp_index_predecessor_recode_range. (exists gsp_lt_gap_predecessor_recode_range_index_bound. gsp_lt_gap_predecessor_recode_range_index_bound + S gmp_index_predecessor_recode_range = l) -> exists gmp_magnitude_predecessor_recode_range. ((((exists ff_h_gmp_predecessor_recode_range_decoded. ff_h_gmp_predecessor_recode_range_decoded + S (gmp_magnitude_predecessor_recode_range) = S ((S (gmp_index_predecessor_recode_range)) * mc)) /\ exists ff_q_gmp_predecessor_recode_range_decoded. mb = ff_q_gmp_predecessor_recode_range_decoded * S ((S (gmp_index_predecessor_recode_range)) * mc) + (gmp_magnitude_predecessor_recode_range))) /\ ((exists gsp_lt_gap_predecessor_recode_range_positive. gsp_lt_gap_predecessor_recode_range_positive + S 0 = gmp_magnitude_predecessor_recode_range) /\ (exists gsp_le_gap_predecessor_recode_range_bounded. gsp_le_gap_predecessor_recode_range_bounded + gmp_magnitude_predecessor_recode_range = H)))) -> (exists rb rc. (forall gmp_index_predecessor_recode_result gmp_predecessor_predecessor_recode_result. (exists gsp_lt_gap_predecessor_recode_result_index_bound. gsp_lt_gap_predecessor_recode_result_index_bound + S gmp_index_predecessor_recode_result = l) -> (((exists gsp_beta_height_gmp_predecessor_recode_result_source. gsp_beta_height_gmp_predecessor_recode_result_source + S (S gmp_predecessor_predecessor_recode_result) = S ((S (gmp_index_predecessor_recode_result)) * mc)) /\ exists gsp_beta_quotient_gmp_predecessor_recode_result_source. mb = gsp_beta_quotient_gmp_predecessor_recode_result_source * S ((S (gmp_index_predecessor_recode_result)) * mc) + (S gmp_predecessor_predecessor_recode_result))) -> (((exists ff_h_gmp_predecessor_recode_result_target. ff_h_gmp_predecessor_recode_result_target + S (gmp_predecessor_predecessor_recode_result) = S ((S (gmp_index_predecessor_recode_result)) * rc)) /\ exists ff_q_gmp_predecessor_recode_result_target. rb = ff_q_gmp_predecessor_recode_result_target * S ((S (gmp_index_predecessor_recode_result)) * rc) + (gmp_predecessor_predecessor_recode_result)))))Structural proof guide
Generated structural guide
Every positive bounded beta prefix can be recoded pointwise by removing one successor from each value.
Use the direct prerequisites add_eq_zero_right, succ_ne_zero, le_succ, le_refl, ne_zero_of_one_le, nonzero_is_succ, finite_lt_succ_eq_or_lt, beta_at_unique, succ_injective, beta_prefix_extend as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (11), intermediate claims (9), equality transport (6).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA002O le_succ PA001A le_refl PA003U ne_zero_of_one_le PA001V nonzero_is_succ PA003D finite_lt_succ_eq_or_lt PA002F beta_at_unique PA003V succ_injective PA002X beta_prefix_extendDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (10)
01Fix variables and assumptionsL1–3
02Induction on lL4–5
03Construct an explicit witnessL6–7
04Fix variables and assumptionsL8–11
05Separate the logical casesL12–13
06Establish hsiL14–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
07Establish hprevious_rangeL23–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hrange.
08Establish hpreviousL32–34
09Separate the logical casesL35–36
10Establish hlastL37–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hrange.
- L37
have hlast : exists m. (((exists ff_h_gmp_predecessor_recode_last_entry. ff_h_gmp_predecessor_recode_last_entry + S (m) = S ((S (l)) * mc)) /\ exists ff_q_gmp_predecessor_recode_last_entry. mb = ff_q_gmp_predecessor_recode_last_entry * S ((S (l)) * mc) + (m))) /\ ((exists gsp_lt_gap_predecessor_recode_last_positive. gsp_lt_gap_predecessor_recode_last_positive + S 0 = m) /\ (exists gsp_le_gap_predecessor_recode_last_bounded. gsp_le_gap_predecessor_recode_last_bounded + m = H)) - L38
specialize hrange l - L39
apply hrange - L40
specialize le_refl (S l) - L41
exact le_refl
11Separate the logical casesL42–44
12Establish hlast0L45–50
13Establish hlast_predecessorL51–54
14Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
cases hlast_predecessor
15Use earlier factsL56–59
16Separate the logical casesL60–62
17Construct an explicit witnessL63–64
18Fix variables and assumptionsL65–68
19Establish hsplitL69–73
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
20Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
cases hsplit
21Establish hsource_valueL75–84
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
22Use earlier factsL85–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L85
exact hlast_witness_left
23Establish hrvalueL86–95
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ injective.
24Calculate and transport equalitiesL96–96
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L96
rewrite hrvalue
25Use earlier factsL97–106
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L97
exact beta_prefix_extend_witness_witness_left - L98
specialize beta_prefix_extend_witness_witness_right i - L99
specialize beta_prefix_extend_witness_witness_right r - L100
apply beta_prefix_extend_witness_witness_right - L101
exact hsplit_right - L102
specialize hprevious_witness_witness i - L103
specialize hprevious_witness_witness r - L104
apply hprevious_witness_witness - L105
exact hsplit_right - L106
exact hsource
Original exact command ledger · 106 lines
- 0001
intro mb - 0002
intro mc - 0003
intro H - 0004
induction l - 0005
intro hrange - 0006
exists 0 - 0007
exists 0 - 0008
intro i - 0009
intro r - 0010
intro hi - 0011
intro hsource - 0012
exfalso - 0013
cases hi - 0014
have hsi : S i = 0 - 0015
specialize add_eq_zero_right x - 0016
specialize add_eq_zero_right (S i) - 0017
apply add_eq_zero_right - 0018
exact hi_witness - 0019
specialize succ_ne_zero i - 0020
apply succ_ne_zero - 0021
exact hsi - 0022
intro hrange - 0023
have hprevious_range : forall gmp_index_predecessor_recode_previous_range. (exists gsp_lt_gap_predecessor_recode_previous_range_index_bound. gsp_lt_gap_predecessor_recode_previous_range_index_bound + S gmp_index_predecessor_recode_previous_range = l) -> exists gmp_magnitude_predecessor_recode_previous_range. ((((exists ff_h_gmp_predecessor_recode_previous_range_decoded. ff_h_gmp_predecessor_recode_previous_range_decoded + S (gmp_magnitude_predecessor_recode_previous_range) = S ((S (gmp_index_predecessor_recode_previous_range)) * mc)) /\ exists ff_q_gmp_predecessor_recode_previous_range_decoded. mb = ff_q_gmp_predecessor_recode_previous_range_decoded * S ((S (gmp_index_predecessor_recode_previous_range)) * mc) + (gmp_magnitude_predecessor_recode_previous_range))) /\ ((exists gsp_lt_gap_predecessor_recode_previous_range_positive. gsp_lt_gap_predecessor_recode_previous_range_positive + S 0 = gmp_magnitude_predecessor_recode_previous_range) /\ (exists gsp_le_gap_predecessor_recode_previous_range_bounded. gsp_le_gap_predecessor_recode_previous_range_bounded + gmp_magnitude_predecessor_recode_previous_range = H))) - 0024
intro i - 0025
intro hi - 0026
specialize hrange i - 0027
apply hrange - 0028
specialize le_succ (S i) - 0029
specialize le_succ l - 0030
apply le_succ - 0031
exact hi - 0032
have hprevious : exists rb rc. (forall gmp_index_predecessor_recode_previous_result gmp_predecessor_predecessor_recode_previous_result. (exists gsp_lt_gap_predecessor_recode_previous_result_index_bound. gsp_lt_gap_predecessor_recode_previous_result_index_bound + S gmp_index_predecessor_recode_previous_result = l) -> (((exists gsp_beta_height_gmp_predecessor_recode_previous_result_source. gsp_beta_height_gmp_predecessor_recode_previous_result_source + S (S gmp_predecessor_predecessor_recode_previous_result) = S ((S (gmp_index_predecessor_recode_previous_result)) * mc)) /\ exists gsp_beta_quotient_gmp_predecessor_recode_previous_result_source. mb = gsp_beta_quotient_gmp_predecessor_recode_previous_result_source * S ((S (gmp_index_predecessor_recode_previous_result)) * mc) + (S gmp_predecessor_predecessor_recode_previous_result))) -> (((exists ff_h_gmp_predecessor_recode_previous_result_target. ff_h_gmp_predecessor_recode_previous_result_target + S (gmp_predecessor_predecessor_recode_previous_result) = S ((S (gmp_index_predecessor_recode_previous_result)) * rc)) /\ exists ff_q_gmp_predecessor_recode_previous_result_target. rb = ff_q_gmp_predecessor_recode_previous_result_target * S ((S (gmp_index_predecessor_recode_previous_result)) * rc) + (gmp_predecessor_predecessor_recode_previous_result)))) - 0033
apply IH - 0034
exact hprevious_range - 0035
cases hprevious - 0036
cases hprevious_witness - 0037
have hlast : exists m. (((exists ff_h_gmp_predecessor_recode_last_entry. ff_h_gmp_predecessor_recode_last_entry + S (m) = S ((S (l)) * mc)) /\ exists ff_q_gmp_predecessor_recode_last_entry. mb = ff_q_gmp_predecessor_recode_last_entry * S ((S (l)) * mc) + (m))) /\ ((exists gsp_lt_gap_predecessor_recode_last_positive. gsp_lt_gap_predecessor_recode_last_positive + S 0 = m) /\ (exists gsp_le_gap_predecessor_recode_last_bounded. gsp_le_gap_predecessor_recode_last_bounded + m = H)) - 0038
specialize hrange l - 0039
apply hrange - 0040
specialize le_refl (S l) - 0041
exact le_refl - 0042
cases hlast - 0043
cases hlast_witness - 0044
cases hlast_witness_right - 0045
have hlast0 : ~(x2 = 0) - 0046
intro hlastzero - 0047
specialize ne_zero_of_one_le x2 - 0048
apply ne_zero_of_one_le - 0049
exact hlast_witness_right_left - 0050
exact hlastzero - 0051
have hlast_predecessor : exists r. x2 = S r - 0052
specialize nonzero_is_succ x2 - 0053
apply nonzero_is_succ - 0054
exact hlast0 - 0055
cases hlast_predecessor - 0056
specialize beta_prefix_extend l - 0057
specialize beta_prefix_extend x - 0058
specialize beta_prefix_extend x1 - 0059
specialize beta_prefix_extend x3 - 0060
cases beta_prefix_extend - 0061
cases beta_prefix_extend_witness - 0062
cases beta_prefix_extend_witness_witness - 0063
exists x4 - 0064
exists x5 - 0065
intro i - 0066
intro r - 0067
intro hi - 0068
intro hsource - 0069
have hsplit : i = l \/ exists gap. gap + S i = l - 0070
specialize finite_lt_succ_eq_or_lt l - 0071
specialize finite_lt_succ_eq_or_lt i - 0072
apply finite_lt_succ_eq_or_lt - 0073
exact hi - 0074
cases hsplit - 0075
have hsource_value : S r = x2 - 0076
specialize beta_at_unique mb - 0077
specialize beta_at_unique mc - 0078
specialize beta_at_unique l - 0079
specialize beta_at_unique (S r) - 0080
specialize beta_at_unique x2 - 0081
apply beta_at_unique - 0082
rewrite hsplit_left at hsource - 0083
rewrite hsplit_left at hsource - 0084
exact hsource - 0085
exact hlast_witness_left - 0086
have hrvalue : r = x3 - 0087
specialize succ_injective r - 0088
specialize succ_injective x3 - 0089
apply succ_injective - 0090
trans x2 - 0091
exact hsource_value - 0092
exact hlast_predecessor_witness - 0093
rewrite hsplit_left - 0094
rewrite hsplit_left - 0095
rewrite hrvalue - 0096
rewrite hrvalue - 0097
exact beta_prefix_extend_witness_witness_left - 0098
specialize beta_prefix_extend_witness_witness_right i - 0099
specialize beta_prefix_extend_witness_witness_right r - 0100
apply beta_prefix_extend_witness_witness_right - 0101
exact hsplit_right - 0102
specialize hprevious_witness_witness i - 0103
specialize hprevious_witness_witness r - 0104
apply hprevious_witness_witness - 0105
exact hsplit_right - 0106
exact hsource