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. ∀ sb. ∀ sc. ∀ l. ∀ M. ∀ Sprod. Product(mb,mc,l,M) → Product(sb,sc,l,Sprod) → ∃ x. ∃ y. ∃ z. (∀ n. ∀ m. ∀ k. ∀ i. Lt(n,l) → BetaAt(mb,mc,n,m) → BetaAt(sb,sc,n,k) → BetaAt(x,y,n,i) → i = m · k) ∧ (Product(x,y,l,z) ∧ z = M · Sprod)Every 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
7 occurrences
In local proof propositions
5 occurrences
Exact expanded native-PA statement
forall mb mc sb sc l M Sprod. (exists ff_u_recode_package_left_product ff_v_recode_package_left_product. ((((exists ff_h_recode_package_left_product_start. ff_h_recode_package_left_product_start + S (1) = S ((S (0)) * ff_v_recode_package_left_product)) /\ exists ff_q_recode_package_left_product_start. ff_u_recode_package_left_product = ff_q_recode_package_left_product_start * S ((S (0)) * ff_v_recode_package_left_product) + (1))) /\ ((((exists ff_h_recode_package_left_product_terminal. ff_h_recode_package_left_product_terminal + S (M) = S ((S (l)) * ff_v_recode_package_left_product)) /\ exists ff_q_recode_package_left_product_terminal. ff_u_recode_package_left_product = ff_q_recode_package_left_product_terminal * S ((S (l)) * ff_v_recode_package_left_product) + (M))) /\ forall ff_i_recode_package_left_product. (exists ff_lt_recode_package_left_product_bound. ff_lt_recode_package_left_product_bound + S ff_i_recode_package_left_product = l) -> exists ff_p_recode_package_left_product ff_r_recode_package_left_product ff_s_recode_package_left_product. ((((exists ff_h_recode_package_left_product_factor. ff_h_recode_package_left_product_factor + S (ff_p_recode_package_left_product) = S ((S (ff_i_recode_package_left_product)) * mc)) /\ exists ff_q_recode_package_left_product_factor. mb = ff_q_recode_package_left_product_factor * S ((S (ff_i_recode_package_left_product)) * mc) + (ff_p_recode_package_left_product))) /\ ((((exists ff_h_recode_package_left_product_partial. ff_h_recode_package_left_product_partial + S (ff_r_recode_package_left_product) = S ((S (ff_i_recode_package_left_product)) * ff_v_recode_package_left_product)) /\ exists ff_q_recode_package_left_product_partial. ff_u_recode_package_left_product = ff_q_recode_package_left_product_partial * S ((S (ff_i_recode_package_left_product)) * ff_v_recode_package_left_product) + (ff_r_recode_package_left_product))) /\ ((((exists ff_h_recode_package_left_product_successor. ff_h_recode_package_left_product_successor + S (ff_s_recode_package_left_product) = S ((S (S ff_i_recode_package_left_product)) * ff_v_recode_package_left_product)) /\ exists ff_q_recode_package_left_product_successor. ff_u_recode_package_left_product = ff_q_recode_package_left_product_successor * S ((S (S ff_i_recode_package_left_product)) * ff_v_recode_package_left_product) + (ff_s_recode_package_left_product))) /\ ff_s_recode_package_left_product = ff_r_recode_package_left_product * ff_p_recode_package_left_product)))))) -> (exists ff_u_recode_package_right_product ff_v_recode_package_right_product. ((((exists ff_h_recode_package_right_product_start. ff_h_recode_package_right_product_start + S (1) = S ((S (0)) * ff_v_recode_package_right_product)) /\ exists ff_q_recode_package_right_product_start. ff_u_recode_package_right_product = ff_q_recode_package_right_product_start * S ((S (0)) * ff_v_recode_package_right_product) + (1))) /\ ((((exists ff_h_recode_package_right_product_terminal. ff_h_recode_package_right_product_terminal + S (Sprod) = S ((S (l)) * ff_v_recode_package_right_product)) /\ exists ff_q_recode_package_right_product_terminal. ff_u_recode_package_right_product = ff_q_recode_package_right_product_terminal * S ((S (l)) * ff_v_recode_package_right_product) + (Sprod))) /\ forall ff_i_recode_package_right_product. (exists ff_lt_recode_package_right_product_bound. ff_lt_recode_package_right_product_bound + S ff_i_recode_package_right_product = l) -> exists ff_p_recode_package_right_product ff_r_recode_package_right_product ff_s_recode_package_right_product. ((((exists ff_h_recode_package_right_product_factor. ff_h_recode_package_right_product_factor + S (ff_p_recode_package_right_product) = S ((S (ff_i_recode_package_right_product)) * sc)) /\ exists ff_q_recode_package_right_product_factor. sb = ff_q_recode_package_right_product_factor * S ((S (ff_i_recode_package_right_product)) * sc) + (ff_p_recode_package_right_product))) /\ ((((exists ff_h_recode_package_right_product_partial. ff_h_recode_package_right_product_partial + S (ff_r_recode_package_right_product) = S ((S (ff_i_recode_package_right_product)) * ff_v_recode_package_right_product)) /\ exists ff_q_recode_package_right_product_partial. ff_u_recode_package_right_product = ff_q_recode_package_right_product_partial * S ((S (ff_i_recode_package_right_product)) * ff_v_recode_package_right_product) + (ff_r_recode_package_right_product))) /\ ((((exists ff_h_recode_package_right_product_successor. ff_h_recode_package_right_product_successor + S (ff_s_recode_package_right_product) = S ((S (S ff_i_recode_package_right_product)) * ff_v_recode_package_right_product)) /\ exists ff_q_recode_package_right_product_successor. ff_u_recode_package_right_product = ff_q_recode_package_right_product_successor * S ((S (S ff_i_recode_package_right_product)) * ff_v_recode_package_right_product) + (ff_s_recode_package_right_product))) /\ ff_s_recode_package_right_product = ff_r_recode_package_right_product * ff_p_recode_package_right_product)))))) -> (exists tb tc T. ((forall fpmp_index_recode_package_alignment fpmp_left_recode_package_alignment fpmp_right_recode_package_alignment fpmp_target_recode_package_alignment. (exists fpmp_gap_recode_package_alignment. fpmp_gap_recode_package_alignment + S fpmp_index_recode_package_alignment = l) -> (((exists ff_h_fpmp_recode_package_alignment_left. ff_h_fpmp_recode_package_alignment_left + S (fpmp_left_recode_package_alignment) = S ((S (fpmp_index_recode_package_alignment)) * mc)) /\ exists ff_q_fpmp_recode_package_alignment_left. mb = ff_q_fpmp_recode_package_alignment_left * S ((S (fpmp_index_recode_package_alignment)) * mc) + (fpmp_left_recode_package_alignment))) -> (((exists ff_h_fpmp_recode_package_alignment_right. ff_h_fpmp_recode_package_alignment_right + S (fpmp_right_recode_package_alignment) = S ((S (fpmp_index_recode_package_alignment)) * sc)) /\ exists ff_q_fpmp_recode_package_alignment_right. sb = ff_q_fpmp_recode_package_alignment_right * S ((S (fpmp_index_recode_package_alignment)) * sc) + (fpmp_right_recode_package_alignment))) -> (((exists ff_h_fpmp_recode_package_alignment_target. ff_h_fpmp_recode_package_alignment_target + S (fpmp_target_recode_package_alignment) = S ((S (fpmp_index_recode_package_alignment)) * tc)) /\ exists ff_q_fpmp_recode_package_alignment_target. tb = ff_q_fpmp_recode_package_alignment_target * S ((S (fpmp_index_recode_package_alignment)) * tc) + (fpmp_target_recode_package_alignment))) -> fpmp_target_recode_package_alignment = fpmp_left_recode_package_alignment * fpmp_right_recode_package_alignment) /\ ((exists ff_u_recode_package_target_product ff_v_recode_package_target_product. ((((exists ff_h_recode_package_target_product_start. ff_h_recode_package_target_product_start + S (1) = S ((S (0)) * ff_v_recode_package_target_product)) /\ exists ff_q_recode_package_target_product_start. ff_u_recode_package_target_product = ff_q_recode_package_target_product_start * S ((S (0)) * ff_v_recode_package_target_product) + (1))) /\ ((((exists ff_h_recode_package_target_product_terminal. ff_h_recode_package_target_product_terminal + S (T) = S ((S (l)) * ff_v_recode_package_target_product)) /\ exists ff_q_recode_package_target_product_terminal. ff_u_recode_package_target_product = ff_q_recode_package_target_product_terminal * S ((S (l)) * ff_v_recode_package_target_product) + (T))) /\ forall ff_i_recode_package_target_product. (exists ff_lt_recode_package_target_product_bound. ff_lt_recode_package_target_product_bound + S ff_i_recode_package_target_product = l) -> exists ff_p_recode_package_target_product ff_r_recode_package_target_product ff_s_recode_package_target_product. ((((exists ff_h_recode_package_target_product_factor. ff_h_recode_package_target_product_factor + S (ff_p_recode_package_target_product) = S ((S (ff_i_recode_package_target_product)) * tc)) /\ exists ff_q_recode_package_target_product_factor. tb = ff_q_recode_package_target_product_factor * S ((S (ff_i_recode_package_target_product)) * tc) + (ff_p_recode_package_target_product))) /\ ((((exists ff_h_recode_package_target_product_partial. ff_h_recode_package_target_product_partial + S (ff_r_recode_package_target_product) = S ((S (ff_i_recode_package_target_product)) * ff_v_recode_package_target_product)) /\ exists ff_q_recode_package_target_product_partial. ff_u_recode_package_target_product = ff_q_recode_package_target_product_partial * S ((S (ff_i_recode_package_target_product)) * ff_v_recode_package_target_product) + (ff_r_recode_package_target_product))) /\ ((((exists ff_h_recode_package_target_product_successor. ff_h_recode_package_target_product_successor + S (ff_s_recode_package_target_product) = S ((S (S ff_i_recode_package_target_product)) * ff_v_recode_package_target_product)) /\ exists ff_q_recode_package_target_product_successor. ff_u_recode_package_target_product = ff_q_recode_package_target_product_successor * S ((S (S ff_i_recode_package_target_product)) * ff_v_recode_package_target_product) + (ff_s_recode_package_target_product))) /\ ff_s_recode_package_target_product = ff_r_recode_package_target_product * ff_p_recode_package_target_product)))))) /\ T = M * Sprod)))Proof neighborhood
Direct theorem prerequisites
PA007L beta_pointwise_mul_prefix_exists PA003X beta_product_exists PA007N beta_product_pointwise_mul_exactDirect 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 (3)
01Fix variables and assumptionsL1–9
02Establish halignment_existsL10–16
Establish this local claim before using it. It is not an additional assumption.
- L10
have halignment_exists : ∃ tb. ∃ tc. ∀ x. ∀ y. ∀ z. ∀ n. Lt(x,l) → BetaAt(mb,mc,x,y) → BetaAt(sb,sc,x,z) → BetaAt(tb,tc,x,n) → n = y · zDefinitions: Lt(x,l)BetaAt(mb,mc,x,y)BetaAt(sb,sc,x,z)BetaAt(tb,tc,x,n)Original native command in the exact edition - L11
specialize beta_pointwise_mul_prefix_exists mb - L12
specialize beta_pointwise_mul_prefix_exists mc - L13
specialize beta_pointwise_mul_prefix_exists sb - L14
specialize beta_pointwise_mul_prefix_exists sc - L15
specialize beta_pointwise_mul_prefix_exists l - L16
exact beta_pointwise_mul_prefix_exists
03Separate the logical casesL17–18
04Establish htarget_product_existsL19–23
Establish this local claim before using it. It is not an additional assumption.
- L19
have htarget_product_exists : ∃ T. Product(x,x1,l,T)Definitions: Product(x,x1,l,T)Original native command in the exact edition - L20
specialize beta_product_exists x - L21
specialize beta_product_exists x1 - L22
specialize beta_product_exists l - L23
exact beta_product_exists
05Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases htarget_product_exists
06Establish hequalL25–34
Establish this local claim before using it. It is not an additional assumption.
- L25
have hequal : x2 = M * Sprod - L26
specialize beta_product_pointwise_mul_exact mb - L27
specialize beta_product_pointwise_mul_exact mc - L28
specialize beta_product_pointwise_mul_exact sb - L29
specialize beta_product_pointwise_mul_exact sc - L30
specialize beta_product_pointwise_mul_exact x - L31
specialize beta_product_pointwise_mul_exact x1 - L32
specialize beta_product_pointwise_mul_exact l - L33
specialize beta_product_pointwise_mul_exact M - L34
specialize beta_product_pointwise_mul_exact Sprod
07Use earlier factsL35–40
08Construct an explicit witnessL41–43
09Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
split
10Use earlier factsL45–45
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
exact halignment_exists_witness_witness
11Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
split
Original defined command ledger · 48 lines
- 0001
intro mb - 0002
intro mc - 0003
intro sb - 0004
intro sc - 0005
intro l - 0006
intro M - 0007
intro Sprod - 0008
intro hM - 0009
intro hS - 0010
have halignment_exists : ∃ tb. ∃ tc. ∀ x. ∀ y. ∀ z. ∀ n. Lt(x,l) → BetaAt(mb,mc,x,y) → BetaAt(sb,sc,x,z) → BetaAt(tb,tc,x,n) → n = y · zExact native replay line
have halignment_exists : exists tb tc. (forall fpmp_index_recode_package_alignment_exists fpmp_left_recode_package_alignment_exists fpmp_right_recode_package_alignment_exists fpmp_target_recode_package_alignment_exists. (exists fpmp_gap_recode_package_alignment_exists. fpmp_gap_recode_package_alignment_exists + S fpmp_index_recode_package_alignment_exists = l) -> (((exists ff_h_fpmp_recode_package_alignment_exists_left. ff_h_fpmp_recode_package_alignment_exists_left + S (fpmp_left_recode_package_alignment_exists) = S ((S (fpmp_index_recode_package_alignment_exists)) * mc)) /\ exists ff_q_fpmp_recode_package_alignment_exists_left. mb = ff_q_fpmp_recode_package_alignment_exists_left * S ((S (fpmp_index_recode_package_alignment_exists)) * mc) + (fpmp_left_recode_package_alignment_exists))) -> (((exists ff_h_fpmp_recode_package_alignment_exists_right. ff_h_fpmp_recode_package_alignment_exists_right + S (fpmp_right_recode_package_alignment_exists) = S ((S (fpmp_index_recode_package_alignment_exists)) * sc)) /\ exists ff_q_fpmp_recode_package_alignment_exists_right. sb = ff_q_fpmp_recode_package_alignment_exists_right * S ((S (fpmp_index_recode_package_alignment_exists)) * sc) + (fpmp_right_recode_package_alignment_exists))) -> (((exists ff_h_fpmp_recode_package_alignment_exists_target. ff_h_fpmp_recode_package_alignment_exists_target + S (fpmp_target_recode_package_alignment_exists) = S ((S (fpmp_index_recode_package_alignment_exists)) * tc)) /\ exists ff_q_fpmp_recode_package_alignment_exists_target. tb = ff_q_fpmp_recode_package_alignment_exists_target * S ((S (fpmp_index_recode_package_alignment_exists)) * tc) + (fpmp_target_recode_package_alignment_exists))) -> fpmp_target_recode_package_alignment_exists = fpmp_left_recode_package_alignment_exists * fpmp_right_recode_package_alignment_exists) - 0011
specialize beta_pointwise_mul_prefix_exists mb - 0012
specialize beta_pointwise_mul_prefix_exists mc - 0013
specialize beta_pointwise_mul_prefix_exists sb - 0014
specialize beta_pointwise_mul_prefix_exists sc - 0015
specialize beta_pointwise_mul_prefix_exists l - 0016
exact beta_pointwise_mul_prefix_exists - 0017
cases halignment_exists - 0018
cases halignment_exists_witness - 0019
have htarget_product_exists : ∃ T. Product(x,x1,l,T)Exact native replay line
have htarget_product_exists : exists T. (exists ff_u_recode_package_target_exists ff_v_recode_package_target_exists. ((((exists ff_h_recode_package_target_exists_start. ff_h_recode_package_target_exists_start + S (1) = S ((S (0)) * ff_v_recode_package_target_exists)) /\ exists ff_q_recode_package_target_exists_start. ff_u_recode_package_target_exists = ff_q_recode_package_target_exists_start * S ((S (0)) * ff_v_recode_package_target_exists) + (1))) /\ ((((exists ff_h_recode_package_target_exists_terminal. ff_h_recode_package_target_exists_terminal + S (T) = S ((S (l)) * ff_v_recode_package_target_exists)) /\ exists ff_q_recode_package_target_exists_terminal. ff_u_recode_package_target_exists = ff_q_recode_package_target_exists_terminal * S ((S (l)) * ff_v_recode_package_target_exists) + (T))) /\ forall ff_i_recode_package_target_exists. (exists ff_lt_recode_package_target_exists_bound. ff_lt_recode_package_target_exists_bound + S ff_i_recode_package_target_exists = l) -> exists ff_p_recode_package_target_exists ff_r_recode_package_target_exists ff_s_recode_package_target_exists. ((((exists ff_h_recode_package_target_exists_factor. ff_h_recode_package_target_exists_factor + S (ff_p_recode_package_target_exists) = S ((S (ff_i_recode_package_target_exists)) * x1)) /\ exists ff_q_recode_package_target_exists_factor. x = ff_q_recode_package_target_exists_factor * S ((S (ff_i_recode_package_target_exists)) * x1) + (ff_p_recode_package_target_exists))) /\ ((((exists ff_h_recode_package_target_exists_partial. ff_h_recode_package_target_exists_partial + S (ff_r_recode_package_target_exists) = S ((S (ff_i_recode_package_target_exists)) * ff_v_recode_package_target_exists)) /\ exists ff_q_recode_package_target_exists_partial. ff_u_recode_package_target_exists = ff_q_recode_package_target_exists_partial * S ((S (ff_i_recode_package_target_exists)) * ff_v_recode_package_target_exists) + (ff_r_recode_package_target_exists))) /\ ((((exists ff_h_recode_package_target_exists_successor. ff_h_recode_package_target_exists_successor + S (ff_s_recode_package_target_exists) = S ((S (S ff_i_recode_package_target_exists)) * ff_v_recode_package_target_exists)) /\ exists ff_q_recode_package_target_exists_successor. ff_u_recode_package_target_exists = ff_q_recode_package_target_exists_successor * S ((S (S ff_i_recode_package_target_exists)) * ff_v_recode_package_target_exists) + (ff_s_recode_package_target_exists))) /\ ff_s_recode_package_target_exists = ff_r_recode_package_target_exists * ff_p_recode_package_target_exists)))))) - 0020
specialize beta_product_exists x - 0021
specialize beta_product_exists x1 - 0022
specialize beta_product_exists l - 0023
exact beta_product_exists - 0024
cases htarget_product_exists - 0025
have hequal : x2 = M * Sprod - 0026
specialize beta_product_pointwise_mul_exact mb - 0027
specialize beta_product_pointwise_mul_exact mc - 0028
specialize beta_product_pointwise_mul_exact sb - 0029
specialize beta_product_pointwise_mul_exact sc - 0030
specialize beta_product_pointwise_mul_exact x - 0031
specialize beta_product_pointwise_mul_exact x1 - 0032
specialize beta_product_pointwise_mul_exact l - 0033
specialize beta_product_pointwise_mul_exact M - 0034
specialize beta_product_pointwise_mul_exact Sprod - 0035
specialize beta_product_pointwise_mul_exact x2 - 0036
apply beta_product_pointwise_mul_exact - 0037
exact halignment_exists_witness_witness - 0038
exact hM - 0039
exact hS - 0040
exact htarget_product_exists_witness - 0041
exists x - 0042
exists x1 - 0043
exists x2 - 0044
split - 0045
exact halignment_exists_witness_witness - 0046
split - 0047
exact htarget_product_exists_witness - 0048
exact hequal