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 p b c m Q. (forall wpp_pair_pairs wpp_left_pairs wpp_right_pairs. (exists wpp_gap_pairs_pair_bound. wpp_gap_pairs_pair_bound + S (wpp_pair_pairs) = m) -> (((exists wpp_beta_height_pairs_left_entry. wpp_beta_height_pairs_left_entry + S (wpp_left_pairs) = S ((S ((wpp_pair_pairs + wpp_pair_pairs))) * c)) /\ exists wpp_beta_quotient_pairs_left_entry. b = wpp_beta_quotient_pairs_left_entry * S ((S ((wpp_pair_pairs + wpp_pair_pairs))) * c) + (wpp_left_pairs))) -> (((exists wpp_beta_height_pairs_right_entry. wpp_beta_height_pairs_right_entry + S (wpp_right_pairs) = S ((S (S (wpp_pair_pairs + wpp_pair_pairs))) * c)) /\ exists wpp_beta_quotient_pairs_right_entry. b = wpp_beta_quotient_pairs_right_entry * S ((S (S (wpp_pair_pairs + wpp_pair_pairs))) * c) + (wpp_right_pairs))) -> (exists wpp_mod_left_pairs_pair_mod wpp_mod_right_pairs_pair_mod. (wpp_left_pairs * wpp_right_pairs) + p * wpp_mod_left_pairs_pair_mod = (1) + p * wpp_mod_right_pairs_pair_mod)) -> (exists wpp_trace_code_pair_product wpp_trace_scale_pair_product. ((((exists wpp_beta_height_pair_product_start. wpp_beta_height_pair_product_start + S (1) = S ((S (0)) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_start. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_start * S ((S (0)) * wpp_trace_scale_pair_product) + (1))) /\ ((((exists wpp_beta_height_pair_product_terminal. wpp_beta_height_pair_product_terminal + S (Q) = S ((S (m + m)) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_terminal. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_terminal * S ((S (m + m)) * wpp_trace_scale_pair_product) + (Q))) /\ forall wpp_index_pair_product. (exists wpp_gap_pair_product_bound. wpp_gap_pair_product_bound + S (wpp_index_pair_product) = m + m) -> exists wpp_factor_pair_product wpp_prefix_pair_product wpp_successor_pair_product. ((((exists wpp_beta_height_pair_product_factor. wpp_beta_height_pair_product_factor + S (wpp_factor_pair_product) = S ((S (wpp_index_pair_product)) * c)) /\ exists wpp_beta_quotient_pair_product_factor. b = wpp_beta_quotient_pair_product_factor * S ((S (wpp_index_pair_product)) * c) + (wpp_factor_pair_product))) /\ ((((exists wpp_beta_height_pair_product_prefix. wpp_beta_height_pair_product_prefix + S (wpp_prefix_pair_product) = S ((S (wpp_index_pair_product)) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_prefix. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_prefix * S ((S (wpp_index_pair_product)) * wpp_trace_scale_pair_product) + (wpp_prefix_pair_product))) /\ ((((exists wpp_beta_height_pair_product_successor. wpp_beta_height_pair_product_successor + S (wpp_successor_pair_product) = S ((S (S (wpp_index_pair_product))) * wpp_trace_scale_pair_product)) /\ exists wpp_beta_quotient_pair_product_successor. wpp_trace_code_pair_product = wpp_beta_quotient_pair_product_successor * S ((S (S (wpp_index_pair_product))) * wpp_trace_scale_pair_product) + (wpp_successor_pair_product))) /\ wpp_successor_pair_product = wpp_prefix_pair_product * wpp_factor_pair_product)))))) -> (exists wpp_mod_left_pair_result wpp_mod_right_pair_result. (Q) + p * wpp_mod_left_pair_result = (1) + p * wpp_mod_right_pair_result)Structural proof guide
Generated structural guide
Adjacent inverse pairs multiply to one across an exact beta-coded even prefix.
Use the direct prerequisites beta_product_double_succ_decompose, beta_product_zero, le_succ, le_refl, mod_eq_refl, mod_eq_mul, add_succ_left, mul_assoc, one_mul as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (6), intermediate claims (11), equality transport (7), certified simplification (2).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA009Y beta_product_double_succ_decompose PA0049 beta_product_zero PA002O le_succ PA001A le_refl PA0023 mod_eq_refl PA004E mod_eq_mul PA000E add_succ_left PA000B mul_assoc PA000M one_mulDirect 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 (8)
01Fix variables and assumptionsL1–3
02Induction on mL4–7
03Establish hzeroL8–12
04Establish hQL13–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product zero.
05Fix variables and assumptionsL23–25
06Establish hdoubleL26–27
07Establish hdecompositionL28–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product double succ decompose.
- L28
have hdecomposition : ∃ wpp_left_factor_successor_decomposition. ∃ wpp_right_factor_successor_decomposition. ∃ wpp_prefix_product_successor_decomposition. BetaAt(b,c,m + m,wpp_left_factor_successor_decomposition) ∧ (BetaAt(b,c,S (m + m),wpp_right_factor_successor_decomposition) ∧ (Product(b,c,m + m,wpp_prefix_product_successor_decomposition) ∧ Q = wpp_prefix_product_successor_decomposition · wpp_left_factor_successor_decomposition · wpp_right_factor_successor_decomposition))Definitions: BetaAtProduct - L29
specialize beta_product_double_succ_decompose b - L30
specialize beta_product_double_succ_decompose c - L31
specialize beta_product_double_succ_decompose (m + m) - L32
specialize beta_product_double_succ_decompose (S m + S m) - L33
specialize beta_product_double_succ_decompose Q - L34
apply beta_product_double_succ_decompose - L35
exact hdouble - L36
exact hproduct
08Separate the logical casesL37–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
09Establish hpairs_allL43–44
Establish this local claim before using it. It is not an additional assumption.
- L43
have hpairs_all : ∀ wpp_pair_all_successor_pairs. ∀ wpp_left_all_successor_pairs. ∀ wpp_right_all_successor_pairs. Lt(wpp_pair_all_successor_pairs,S m) → BetaAt(b,c,wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs,wpp_left_all_successor_pairs) → BetaAt(b,c,S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs),wpp_right_all_successor_pairs) → BalancedInverse(p,wpp_left_all_successor_pairs,wpp_right_all_successor_pairs)Definitions: LtBetaAtBalancedInverse - L44
exact hpairs
10Establish hpairs_prefixL45–54
Establish this local claim before using it. It is not an additional assumption.
- L45
have hpairs_prefix : ∀ wpp_pair_prefix_pairs. ∀ wpp_left_prefix_pairs. ∀ wpp_right_prefix_pairs. Lt(wpp_pair_prefix_pairs,m) → BetaAt(b,c,wpp_pair_prefix_pairs + wpp_pair_prefix_pairs,wpp_left_prefix_pairs) → BetaAt(b,c,S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs),wpp_right_prefix_pairs) → BalancedInverse(p,wpp_left_prefix_pairs,wpp_right_prefix_pairs)Definitions: LtBetaAtBalancedInverse - L46
intro t - L47
intro a - L48
intro d - L49
intro ht - L50
intro ha - L51
intro hd - L52
specialize hpairs_all t - L53
specialize hpairs_all a - L54
specialize hpairs_all d
11Use earlier factsL55–61
12Establish hprefixL62–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
13Establish hlastL67–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpairs.
- L67
have hlast : exists wpp_mod_left_last_pair_congruence wpp_mod_right_last_pair_congruence. (x * x1) + p * wpp_mod_left_last_pair_congruence = (1) + p * wpp_mod_right_last_pair_congruence - L68
specialize hpairs m - L69
specialize hpairs x - L70
specialize hpairs x1 - L71
apply hpairs - L72
specialize le_refl (S m) - L73
exact le_refl - L74
exact hdecomposition_witness_witness_witness_left - L75
exact hdecomposition_witness_witness_witness_right_left
14Establish hfoldL76–84
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul.
- L76
have hfold : exists wpp_mod_left_folded_congruence wpp_mod_right_folded_congruence. (x2 * (x * x1)) + p * wpp_mod_left_folded_congruence = (1 * 1) + p * wpp_mod_right_folded_congruence - L77
specialize mod_eq_mul p - L78
specialize mod_eq_mul x2 - L79
specialize mod_eq_mul 1 - L80
specialize mod_eq_mul (x * x1) - L81
specialize mod_eq_mul 1 - L82
apply mod_eq_mul - L83
exact hprefix - L84
exact hlast
15Establish honeL85–88
16Establish hassocL89–96
Establish this local claim before using it. It is not an additional assumption.
Original exact command ledger · 96 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
induction m - 0005
intro Q - 0006
intro hpairs - 0007
intro hproduct - 0008
have hzero : 0 + 0 = 0 - 0009
simp - 0010
rewrite hzero at hproduct - 0011
rewrite hzero at hproduct - 0012
rewrite hzero at hproduct - 0013
have hQ : Q = 1 - 0014
specialize beta_product_zero b - 0015
specialize beta_product_zero c - 0016
specialize beta_product_zero Q - 0017
apply beta_product_zero - 0018
exact hproduct - 0019
rewrite hQ - 0020
specialize mod_eq_refl p - 0021
specialize mod_eq_refl 1 - 0022
exact mod_eq_refl - 0023
intro Q - 0024
intro hpairs - 0025
intro hproduct - 0026
have hdouble : S m + S m = S (S (m + m)) - 0027
simp [add_succ_left] - 0028
have hdecomposition : exists wpp_left_factor_successor_decomposition wpp_right_factor_successor_decomposition wpp_prefix_product_successor_decomposition. (((exists wpp_beta_height_successor_decomposition_left_entry. wpp_beta_height_successor_decomposition_left_entry + S (wpp_left_factor_successor_decomposition) = S ((S (m + m)) * c)) /\ exists wpp_beta_quotient_successor_decomposition_left_entry. b = wpp_beta_quotient_successor_decomposition_left_entry * S ((S (m + m)) * c) + (wpp_left_factor_successor_decomposition))) /\ ((((exists wpp_beta_height_successor_decomposition_right_entry. wpp_beta_height_successor_decomposition_right_entry + S (wpp_right_factor_successor_decomposition) = S ((S (S (m + m))) * c)) /\ exists wpp_beta_quotient_successor_decomposition_right_entry. b = wpp_beta_quotient_successor_decomposition_right_entry * S ((S (S (m + m))) * c) + (wpp_right_factor_successor_decomposition))) /\ ((exists wpp_trace_code_successor_decomposition_prefix wpp_trace_scale_successor_decomposition_prefix. ((((exists wpp_beta_height_successor_decomposition_prefix_start. wpp_beta_height_successor_decomposition_prefix_start + S (1) = S ((S (0)) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_start. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_start * S ((S (0)) * wpp_trace_scale_successor_decomposition_prefix) + (1))) /\ ((((exists wpp_beta_height_successor_decomposition_prefix_terminal. wpp_beta_height_successor_decomposition_prefix_terminal + S (wpp_prefix_product_successor_decomposition) = S ((S (m + m)) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_terminal. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_terminal * S ((S (m + m)) * wpp_trace_scale_successor_decomposition_prefix) + (wpp_prefix_product_successor_decomposition))) /\ forall wpp_index_successor_decomposition_prefix. (exists wpp_gap_successor_decomposition_prefix_bound. wpp_gap_successor_decomposition_prefix_bound + S (wpp_index_successor_decomposition_prefix) = m + m) -> exists wpp_factor_successor_decomposition_prefix wpp_prefix_successor_decomposition_prefix wpp_successor_successor_decomposition_prefix. ((((exists wpp_beta_height_successor_decomposition_prefix_factor. wpp_beta_height_successor_decomposition_prefix_factor + S (wpp_factor_successor_decomposition_prefix) = S ((S (wpp_index_successor_decomposition_prefix)) * c)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_factor. b = wpp_beta_quotient_successor_decomposition_prefix_factor * S ((S (wpp_index_successor_decomposition_prefix)) * c) + (wpp_factor_successor_decomposition_prefix))) /\ ((((exists wpp_beta_height_successor_decomposition_prefix_prefix. wpp_beta_height_successor_decomposition_prefix_prefix + S (wpp_prefix_successor_decomposition_prefix) = S ((S (wpp_index_successor_decomposition_prefix)) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_prefix. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_prefix * S ((S (wpp_index_successor_decomposition_prefix)) * wpp_trace_scale_successor_decomposition_prefix) + (wpp_prefix_successor_decomposition_prefix))) /\ ((((exists wpp_beta_height_successor_decomposition_prefix_successor. wpp_beta_height_successor_decomposition_prefix_successor + S (wpp_successor_successor_decomposition_prefix) = S ((S (S (wpp_index_successor_decomposition_prefix))) * wpp_trace_scale_successor_decomposition_prefix)) /\ exists wpp_beta_quotient_successor_decomposition_prefix_successor. wpp_trace_code_successor_decomposition_prefix = wpp_beta_quotient_successor_decomposition_prefix_successor * S ((S (S (wpp_index_successor_decomposition_prefix))) * wpp_trace_scale_successor_decomposition_prefix) + (wpp_successor_successor_decomposition_prefix))) /\ wpp_successor_successor_decomposition_prefix = wpp_prefix_successor_decomposition_prefix * wpp_factor_successor_decomposition_prefix)))))) /\ Q = (wpp_prefix_product_successor_decomposition * wpp_left_factor_successor_decomposition) * wpp_right_factor_successor_decomposition)) - 0029
specialize beta_product_double_succ_decompose b - 0030
specialize beta_product_double_succ_decompose c - 0031
specialize beta_product_double_succ_decompose (m + m) - 0032
specialize beta_product_double_succ_decompose (S m + S m) - 0033
specialize beta_product_double_succ_decompose Q - 0034
apply beta_product_double_succ_decompose - 0035
exact hdouble - 0036
exact hproduct - 0037
cases hdecomposition - 0038
cases hdecomposition_witness - 0039
cases hdecomposition_witness_witness - 0040
cases hdecomposition_witness_witness_witness - 0041
cases hdecomposition_witness_witness_witness_right - 0042
cases hdecomposition_witness_witness_witness_right_right - 0043
have hpairs_all : forall wpp_pair_all_successor_pairs wpp_left_all_successor_pairs wpp_right_all_successor_pairs. (exists wpp_gap_all_successor_pairs_pair_bound. wpp_gap_all_successor_pairs_pair_bound + S (wpp_pair_all_successor_pairs) = S m) -> (((exists wpp_beta_height_all_successor_pairs_left_entry. wpp_beta_height_all_successor_pairs_left_entry + S (wpp_left_all_successor_pairs) = S ((S ((wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c)) /\ exists wpp_beta_quotient_all_successor_pairs_left_entry. b = wpp_beta_quotient_all_successor_pairs_left_entry * S ((S ((wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c) + (wpp_left_all_successor_pairs))) -> (((exists wpp_beta_height_all_successor_pairs_right_entry. wpp_beta_height_all_successor_pairs_right_entry + S (wpp_right_all_successor_pairs) = S ((S (S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c)) /\ exists wpp_beta_quotient_all_successor_pairs_right_entry. b = wpp_beta_quotient_all_successor_pairs_right_entry * S ((S (S (wpp_pair_all_successor_pairs + wpp_pair_all_successor_pairs))) * c) + (wpp_right_all_successor_pairs))) -> (exists wpp_mod_left_all_successor_pairs_pair_mod wpp_mod_right_all_successor_pairs_pair_mod. (wpp_left_all_successor_pairs * wpp_right_all_successor_pairs) + p * wpp_mod_left_all_successor_pairs_pair_mod = (1) + p * wpp_mod_right_all_successor_pairs_pair_mod) - 0044
exact hpairs - 0045
have hpairs_prefix : forall wpp_pair_prefix_pairs wpp_left_prefix_pairs wpp_right_prefix_pairs. (exists wpp_gap_prefix_pairs_pair_bound. wpp_gap_prefix_pairs_pair_bound + S (wpp_pair_prefix_pairs) = m) -> (((exists wpp_beta_height_prefix_pairs_left_entry. wpp_beta_height_prefix_pairs_left_entry + S (wpp_left_prefix_pairs) = S ((S ((wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c)) /\ exists wpp_beta_quotient_prefix_pairs_left_entry. b = wpp_beta_quotient_prefix_pairs_left_entry * S ((S ((wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c) + (wpp_left_prefix_pairs))) -> (((exists wpp_beta_height_prefix_pairs_right_entry. wpp_beta_height_prefix_pairs_right_entry + S (wpp_right_prefix_pairs) = S ((S (S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c)) /\ exists wpp_beta_quotient_prefix_pairs_right_entry. b = wpp_beta_quotient_prefix_pairs_right_entry * S ((S (S (wpp_pair_prefix_pairs + wpp_pair_prefix_pairs))) * c) + (wpp_right_prefix_pairs))) -> (exists wpp_mod_left_prefix_pairs_pair_mod wpp_mod_right_prefix_pairs_pair_mod. (wpp_left_prefix_pairs * wpp_right_prefix_pairs) + p * wpp_mod_left_prefix_pairs_pair_mod = (1) + p * wpp_mod_right_prefix_pairs_pair_mod) - 0046
intro t - 0047
intro a - 0048
intro d - 0049
intro ht - 0050
intro ha - 0051
intro hd - 0052
specialize hpairs_all t - 0053
specialize hpairs_all a - 0054
specialize hpairs_all d - 0055
apply hpairs_all - 0056
specialize le_succ (S t) - 0057
specialize le_succ m - 0058
apply le_succ - 0059
exact ht - 0060
exact ha - 0061
exact hd - 0062
have hprefix : exists wpp_mod_left_prefix_congruence wpp_mod_right_prefix_congruence. (x2) + p * wpp_mod_left_prefix_congruence = (1) + p * wpp_mod_right_prefix_congruence - 0063
specialize IH x2 - 0064
apply IH - 0065
exact hpairs_prefix - 0066
exact hdecomposition_witness_witness_witness_right_right_left - 0067
have hlast : exists wpp_mod_left_last_pair_congruence wpp_mod_right_last_pair_congruence. (x * x1) + p * wpp_mod_left_last_pair_congruence = (1) + p * wpp_mod_right_last_pair_congruence - 0068
specialize hpairs m - 0069
specialize hpairs x - 0070
specialize hpairs x1 - 0071
apply hpairs - 0072
specialize le_refl (S m) - 0073
exact le_refl - 0074
exact hdecomposition_witness_witness_witness_left - 0075
exact hdecomposition_witness_witness_witness_right_left - 0076
have hfold : exists wpp_mod_left_folded_congruence wpp_mod_right_folded_congruence. (x2 * (x * x1)) + p * wpp_mod_left_folded_congruence = (1 * 1) + p * wpp_mod_right_folded_congruence - 0077
specialize mod_eq_mul p - 0078
specialize mod_eq_mul x2 - 0079
specialize mod_eq_mul 1 - 0080
specialize mod_eq_mul (x * x1) - 0081
specialize mod_eq_mul 1 - 0082
apply mod_eq_mul - 0083
exact hprefix - 0084
exact hlast - 0085
have hone : 1 * 1 = 1 - 0086
specialize one_mul 1 - 0087
exact one_mul - 0088
rewrite hone at hfold - 0089
have hassoc : (x2 * x) * x1 = x2 * (x * x1) - 0090
specialize mul_assoc x2 - 0091
specialize mul_assoc x - 0092
specialize mul_assoc x1 - 0093
exact mul_assoc - 0094
rewrite hdecomposition_witness_witness_witness_right_right_right - 0095
rewrite hassoc - 0096
exact hfold