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.
Statement with defined notation
∀ mb. ∀ mc. ∀ rb. ∀ rc. ∀ b. ∀ c. ∀ h. ∀ P. ∀ Q. (∀ x. Lt(x,h) → ∃ y. BetaAt(mb,mc,x,y) ∧ (Lt(0,y) ∧ Le(y,h))) → InjectivePrefix(mb,mc,h) → (∀ x. ∀ y. Lt(x,h) → BetaAt(mb,mc,x,S y) → BetaAt(rb,rc,x,y)) → Range(b,c,1,h) → Product(b,c,h,P) → Product(mb,mc,h,Q) → P = QEvery purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
11 occurrences
In local proof propositions
6 occurrences
Exact expanded native-PA statement
forall mb mc rb rc b c h P Q. (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 fp_i_product_magnitude_injective fp_j_product_magnitude_injective fp_value_product_magnitude_injective. (exists fp_gap_product_magnitude_injective_i. fp_gap_product_magnitude_injective_i + S fp_i_product_magnitude_injective = h) -> (exists fp_gap_product_magnitude_injective_j. fp_gap_product_magnitude_injective_j + S fp_j_product_magnitude_injective = h) -> (((exists ff_h_product_magnitude_injective_left. ff_h_product_magnitude_injective_left + S (fp_value_product_magnitude_injective) = S ((S (fp_i_product_magnitude_injective)) * mc)) /\ exists ff_q_product_magnitude_injective_left. mb = ff_q_product_magnitude_injective_left * S ((S (fp_i_product_magnitude_injective)) * mc) + (fp_value_product_magnitude_injective))) -> (((exists ff_h_product_magnitude_injective_right. ff_h_product_magnitude_injective_right + S (fp_value_product_magnitude_injective) = S ((S (fp_j_product_magnitude_injective)) * mc)) /\ exists ff_q_product_magnitude_injective_right. mb = ff_q_product_magnitude_injective_right * S ((S (fp_j_product_magnitude_injective)) * mc) + (fp_value_product_magnitude_injective))) -> fp_i_product_magnitude_injective = fp_j_product_magnitude_injective) -> (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)))) -> (exists ff_u_product_canonical_product ff_v_product_canonical_product. ((((exists ff_h_product_canonical_product_start. ff_h_product_canonical_product_start + S (1) = S ((S (0)) * ff_v_product_canonical_product)) /\ exists ff_q_product_canonical_product_start. ff_u_product_canonical_product = ff_q_product_canonical_product_start * S ((S (0)) * ff_v_product_canonical_product) + (1))) /\ ((((exists ff_h_product_canonical_product_terminal. ff_h_product_canonical_product_terminal + S (P) = S ((S (h)) * ff_v_product_canonical_product)) /\ exists ff_q_product_canonical_product_terminal. ff_u_product_canonical_product = ff_q_product_canonical_product_terminal * S ((S (h)) * ff_v_product_canonical_product) + (P))) /\ forall ff_i_product_canonical_product. (exists ff_lt_product_canonical_product_bound. ff_lt_product_canonical_product_bound + S ff_i_product_canonical_product = h) -> exists ff_p_product_canonical_product ff_r_product_canonical_product ff_s_product_canonical_product. ((((exists ff_h_product_canonical_product_factor. ff_h_product_canonical_product_factor + S (ff_p_product_canonical_product) = S ((S (ff_i_product_canonical_product)) * c)) /\ exists ff_q_product_canonical_product_factor. b = ff_q_product_canonical_product_factor * S ((S (ff_i_product_canonical_product)) * c) + (ff_p_product_canonical_product))) /\ ((((exists ff_h_product_canonical_product_partial. ff_h_product_canonical_product_partial + S (ff_r_product_canonical_product) = S ((S (ff_i_product_canonical_product)) * ff_v_product_canonical_product)) /\ exists ff_q_product_canonical_product_partial. ff_u_product_canonical_product = ff_q_product_canonical_product_partial * S ((S (ff_i_product_canonical_product)) * ff_v_product_canonical_product) + (ff_r_product_canonical_product))) /\ ((((exists ff_h_product_canonical_product_successor. ff_h_product_canonical_product_successor + S (ff_s_product_canonical_product) = S ((S (S ff_i_product_canonical_product)) * ff_v_product_canonical_product)) /\ exists ff_q_product_canonical_product_successor. ff_u_product_canonical_product = ff_q_product_canonical_product_successor * S ((S (S ff_i_product_canonical_product)) * ff_v_product_canonical_product) + (ff_s_product_canonical_product))) /\ ff_s_product_canonical_product = ff_r_product_canonical_product * ff_p_product_canonical_product)))))) -> (exists ff_u_product_magnitude_product ff_v_product_magnitude_product. ((((exists ff_h_product_magnitude_product_start. ff_h_product_magnitude_product_start + S (1) = S ((S (0)) * ff_v_product_magnitude_product)) /\ exists ff_q_product_magnitude_product_start. ff_u_product_magnitude_product = ff_q_product_magnitude_product_start * S ((S (0)) * ff_v_product_magnitude_product) + (1))) /\ ((((exists ff_h_product_magnitude_product_terminal. ff_h_product_magnitude_product_terminal + S (Q) = S ((S (h)) * ff_v_product_magnitude_product)) /\ exists ff_q_product_magnitude_product_terminal. ff_u_product_magnitude_product = ff_q_product_magnitude_product_terminal * S ((S (h)) * ff_v_product_magnitude_product) + (Q))) /\ forall ff_i_product_magnitude_product. (exists ff_lt_product_magnitude_product_bound. ff_lt_product_magnitude_product_bound + S ff_i_product_magnitude_product = h) -> exists ff_p_product_magnitude_product ff_r_product_magnitude_product ff_s_product_magnitude_product. ((((exists ff_h_product_magnitude_product_factor. ff_h_product_magnitude_product_factor + S (ff_p_product_magnitude_product) = S ((S (ff_i_product_magnitude_product)) * mc)) /\ exists ff_q_product_magnitude_product_factor. mb = ff_q_product_magnitude_product_factor * S ((S (ff_i_product_magnitude_product)) * mc) + (ff_p_product_magnitude_product))) /\ ((((exists ff_h_product_magnitude_product_partial. ff_h_product_magnitude_product_partial + S (ff_r_product_magnitude_product) = S ((S (ff_i_product_magnitude_product)) * ff_v_product_magnitude_product)) /\ exists ff_q_product_magnitude_product_partial. ff_u_product_magnitude_product = ff_q_product_magnitude_product_partial * S ((S (ff_i_product_magnitude_product)) * ff_v_product_magnitude_product) + (ff_r_product_magnitude_product))) /\ ((((exists ff_h_product_magnitude_product_successor. ff_h_product_magnitude_product_successor + S (ff_s_product_magnitude_product) = S ((S (S ff_i_product_magnitude_product)) * ff_v_product_magnitude_product)) /\ exists ff_q_product_magnitude_product_successor. ff_u_product_magnitude_product = ff_q_product_magnitude_product_successor * S ((S (S ff_i_product_magnitude_product)) * ff_v_product_magnitude_product) + (ff_s_product_magnitude_product))) /\ ff_s_product_magnitude_product = ff_r_product_magnitude_product * ff_p_product_magnitude_product)))))) -> P = QProof neighborhood
Direct theorem prerequisites
PA007S beta_magnitude_predecessor_recode_bounded PA007U beta_magnitude_predecessor_recode_injective PA007V gauss_predecessor_half_range_aligned PA007X beta_product_permutation_invariantDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (4)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–15
03Establish hboundedL16–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta magnitude predecessor recode bounded.
- L16
have hbounded : BoundedPrefix(rb,rc,h)Definitions: BoundedPrefix(rb,rc,h)Original native command in the exact edition - L17
specialize beta_magnitude_predecessor_recode_bounded mb - L18
specialize beta_magnitude_predecessor_recode_bounded mc - L19
specialize beta_magnitude_predecessor_recode_bounded rb - L20
specialize beta_magnitude_predecessor_recode_bounded rc - L21
specialize beta_magnitude_predecessor_recode_bounded h - L22
apply beta_magnitude_predecessor_recode_bounded - L23
exact hrange - L24
exact hrecode
04Establish hinjectiveL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta magnitude predecessor recode injective.
- L25
have hinjective : InjectivePrefix(rb,rc,h)Definitions: InjectivePrefix(rb,rc,h)Original native command in the exact edition - L26
specialize beta_magnitude_predecessor_recode_injective mb - L27
specialize beta_magnitude_predecessor_recode_injective mc - L28
specialize beta_magnitude_predecessor_recode_injective rb - L29
specialize beta_magnitude_predecessor_recode_injective rc - L30
specialize beta_magnitude_predecessor_recode_injective h - L31
apply beta_magnitude_predecessor_recode_injective - L32
exact hrange - L33
exact hmagnitude_injective - L34
exact hrecode
05Establish halignedL35–44
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gauss predecessor half range aligned.
- L35
have haligned : ∀ fpr_i_product_alignment. ∀ fpr_j_product_alignment. ∀ fpr_x_product_alignment. Lt(fpr_i_product_alignment,h) → BetaAt(rb,rc,fpr_i_product_alignment,fpr_j_product_alignment) → BetaAt(b,c,fpr_j_product_alignment,fpr_x_product_alignment) → BetaAt(mb,mc,fpr_i_product_alignment,fpr_x_product_alignment)Definitions: Lt(fpr_i_product_alignment,h)BetaAt(rb,rc,fpr_i_product_alignment,fpr_j_product_alignment)BetaAt(b,c,fpr_j_product_alignment,fpr_x_product_alignment)BetaAt(mb,mc,fpr_i_product_alignment,fpr_x_product_alignment)Original native command in the exact edition - L36
specialize gauss_predecessor_half_range_aligned mb - L37
specialize gauss_predecessor_half_range_aligned mc - L38
specialize gauss_predecessor_half_range_aligned rb - L39
specialize gauss_predecessor_half_range_aligned rc - L40
specialize gauss_predecessor_half_range_aligned b - L41
specialize gauss_predecessor_half_range_aligned c - L42
specialize gauss_predecessor_half_range_aligned h - L43
apply gauss_predecessor_half_range_aligned - L44
exact hrange
06Use earlier factsL45–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
exact hrecode - L46
exact hhalf - L47
specialize beta_product_permutation_invariant h - L48
specialize beta_product_permutation_invariant rb - L49
specialize beta_product_permutation_invariant rc - L50
specialize beta_product_permutation_invariant b - L51
specialize beta_product_permutation_invariant c - L52
specialize beta_product_permutation_invariant mb - L53
specialize beta_product_permutation_invariant mc - L54
specialize beta_product_permutation_invariant P
07Use earlier factsL55–61
Original defined command ledger · 61 lines
- 0001
intro mb - 0002
intro mc - 0003
intro rb - 0004
intro rc - 0005
intro b - 0006
intro c - 0007
intro h - 0008
intro P - 0009
intro Q - 0010
intro hrange - 0011
intro hmagnitude_injective - 0012
intro hrecode - 0013
intro hhalf - 0014
intro hcanonical_product - 0015
intro hmagnitude_product - 0016
have hbounded : BoundedPrefix(rb,rc,h)Exact native replay line
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)) - 0017
specialize beta_magnitude_predecessor_recode_bounded mb - 0018
specialize beta_magnitude_predecessor_recode_bounded mc - 0019
specialize beta_magnitude_predecessor_recode_bounded rb - 0020
specialize beta_magnitude_predecessor_recode_bounded rc - 0021
specialize beta_magnitude_predecessor_recode_bounded h - 0022
apply beta_magnitude_predecessor_recode_bounded - 0023
exact hrange - 0024
exact hrecode - 0025
have hinjective : InjectivePrefix(rb,rc,h)Exact native replay line
have hinjective : forall fp_i_product_predecessor_injective fp_j_product_predecessor_injective fp_value_product_predecessor_injective. (exists fp_gap_product_predecessor_injective_i. fp_gap_product_predecessor_injective_i + S fp_i_product_predecessor_injective = h) -> (exists fp_gap_product_predecessor_injective_j. fp_gap_product_predecessor_injective_j + S fp_j_product_predecessor_injective = h) -> (((exists ff_h_product_predecessor_injective_left. ff_h_product_predecessor_injective_left + S (fp_value_product_predecessor_injective) = S ((S (fp_i_product_predecessor_injective)) * rc)) /\ exists ff_q_product_predecessor_injective_left. rb = ff_q_product_predecessor_injective_left * S ((S (fp_i_product_predecessor_injective)) * rc) + (fp_value_product_predecessor_injective))) -> (((exists ff_h_product_predecessor_injective_right. ff_h_product_predecessor_injective_right + S (fp_value_product_predecessor_injective) = S ((S (fp_j_product_predecessor_injective)) * rc)) /\ exists ff_q_product_predecessor_injective_right. rb = ff_q_product_predecessor_injective_right * S ((S (fp_j_product_predecessor_injective)) * rc) + (fp_value_product_predecessor_injective))) -> fp_i_product_predecessor_injective = fp_j_product_predecessor_injective - 0026
specialize beta_magnitude_predecessor_recode_injective mb - 0027
specialize beta_magnitude_predecessor_recode_injective mc - 0028
specialize beta_magnitude_predecessor_recode_injective rb - 0029
specialize beta_magnitude_predecessor_recode_injective rc - 0030
specialize beta_magnitude_predecessor_recode_injective h - 0031
apply beta_magnitude_predecessor_recode_injective - 0032
exact hrange - 0033
exact hmagnitude_injective - 0034
exact hrecode - 0035
have haligned : ∀ fpr_i_product_alignment. ∀ fpr_j_product_alignment. ∀ fpr_x_product_alignment. Lt(fpr_i_product_alignment,h) → BetaAt(rb,rc,fpr_i_product_alignment,fpr_j_product_alignment) → BetaAt(b,c,fpr_j_product_alignment,fpr_x_product_alignment) → BetaAt(mb,mc,fpr_i_product_alignment,fpr_x_product_alignment)Exact native replay line
have haligned : 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))) - 0036
specialize gauss_predecessor_half_range_aligned mb - 0037
specialize gauss_predecessor_half_range_aligned mc - 0038
specialize gauss_predecessor_half_range_aligned rb - 0039
specialize gauss_predecessor_half_range_aligned rc - 0040
specialize gauss_predecessor_half_range_aligned b - 0041
specialize gauss_predecessor_half_range_aligned c - 0042
specialize gauss_predecessor_half_range_aligned h - 0043
apply gauss_predecessor_half_range_aligned - 0044
exact hrange - 0045
exact hrecode - 0046
exact hhalf - 0047
specialize beta_product_permutation_invariant h - 0048
specialize beta_product_permutation_invariant rb - 0049
specialize beta_product_permutation_invariant rc - 0050
specialize beta_product_permutation_invariant b - 0051
specialize beta_product_permutation_invariant c - 0052
specialize beta_product_permutation_invariant mb - 0053
specialize beta_product_permutation_invariant mc - 0054
specialize beta_product_permutation_invariant P - 0055
specialize beta_product_permutation_invariant Q - 0056
apply beta_product_permutation_invariant - 0057
exact hbounded - 0058
exact hinjective - 0059
exact haligned - 0060
exact hcanonical_product - 0061
exact hmagnitude_product