PA007O

beta_pointwise_mul_product_exists

Alpha v34 checked-use theorem · independently closed; not Stable

The pointwise-product code has a Product equal to the product of the two source Products.

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 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)))

Structural proof guide

Generated structural guide

The pointwise-product code has a Product equal to the product of the two source Products.

Use the direct prerequisites beta_pointwise_mul_prefix_exists, beta_product_exists, beta_product_pointwise_mul_exact as previously established PA formulas.

The proof proceeds by case analysis (3), intermediate claims (3).

Referenced ingredients

Proof neighborhood

Direct dependencies

Direct 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

48 script commands · 12 reading checkpoints · 3 local claims

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)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–9

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro mb
  2. L2
    intro mc
  3. L3
    intro sb
  4. L4
    intro sc
  5. L5
    intro l
  6. L6
    intro M
  7. L7
    intro Sprod
  8. L8
    intro hM
  9. L9
    intro hS
02Establish halignment_existsL10–16

Establish this local claim before using it. It is not an additional assumption.

  1. 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: LtBetaAt
  2. L11
    specialize beta_pointwise_mul_prefix_exists mb
  3. L12
    specialize beta_pointwise_mul_prefix_exists mc
  4. L13
    specialize beta_pointwise_mul_prefix_exists sb
  5. L14
    specialize beta_pointwise_mul_prefix_exists sc
  6. L15
    specialize beta_pointwise_mul_prefix_exists l
  7. L16
    exact beta_pointwise_mul_prefix_exists
03Separate the logical casesL17–18

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L17
    cases halignment_exists
  2. L18
    cases halignment_exists_witness
04Establish htarget_product_existsL19–23

Establish this local claim before using it. It is not an additional assumption.

  1. L19
    have htarget_product_exists : ∃ T. Product(x,x1,l,T)Definitions: Product
  2. L20
    specialize beta_product_exists x
  3. L21
    specialize beta_product_exists x1
  4. L22
    specialize beta_product_exists l
  5. L23
    exact beta_product_exists
05Separate the logical casesL24–24

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L24
    cases htarget_product_exists
06Establish hequalL25–34

Establish this local claim before using it. It is not an additional assumption.

  1. L25
    have hequal : x2 = M * Sprod
  2. L26
    specialize beta_product_pointwise_mul_exact mb
  3. L27
    specialize beta_product_pointwise_mul_exact mc
  4. L28
    specialize beta_product_pointwise_mul_exact sb
  5. L29
    specialize beta_product_pointwise_mul_exact sc
  6. L30
    specialize beta_product_pointwise_mul_exact x
  7. L31
    specialize beta_product_pointwise_mul_exact x1
  8. L32
    specialize beta_product_pointwise_mul_exact l
  9. L33
    specialize beta_product_pointwise_mul_exact M
  10. L34
    specialize beta_product_pointwise_mul_exact Sprod
07Use earlier factsL35–40

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L35
    specialize beta_product_pointwise_mul_exact x2
  2. L36
    apply beta_product_pointwise_mul_exact
  3. L37
    exact halignment_exists_witness_witness
  4. L38
    exact hM
  5. L39
    exact hS
  6. L40
    exact htarget_product_exists_witness
08Construct an explicit witnessL41–43

Supply the displayed value, then prove that it has the required property.

  1. L41
    exists x
  2. L42
    exists x1
  3. L43
    exists x2
09Separate the logical casesL44–44

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L44
    split
10Use earlier factsL45–45

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L45
    exact halignment_exists_witness_witness
11Separate the logical casesL46–46

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L46
    split
12Use earlier factsL47–48

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L47
    exact htarget_product_exists_witness
  2. L48
    exact hequal

Library-wide reading audit

Original exact command ledger · 48 lines
  1. 0001intro mb
  2. 0002intro mc
  3. 0003intro sb
  4. 0004intro sc
  5. 0005intro l
  6. 0006intro M
  7. 0007intro Sprod
  8. 0008intro hM
  9. 0009intro hS
  10. 0010have 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)
  11. 0011specialize beta_pointwise_mul_prefix_exists mb
  12. 0012specialize beta_pointwise_mul_prefix_exists mc
  13. 0013specialize beta_pointwise_mul_prefix_exists sb
  14. 0014specialize beta_pointwise_mul_prefix_exists sc
  15. 0015specialize beta_pointwise_mul_prefix_exists l
  16. 0016exact beta_pointwise_mul_prefix_exists
  17. 0017cases halignment_exists
  18. 0018cases halignment_exists_witness
  19. 0019have 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))))))
  20. 0020specialize beta_product_exists x
  21. 0021specialize beta_product_exists x1
  22. 0022specialize beta_product_exists l
  23. 0023exact beta_product_exists
  24. 0024cases htarget_product_exists
  25. 0025have hequal : x2 = M * Sprod
  26. 0026specialize beta_product_pointwise_mul_exact mb
  27. 0027specialize beta_product_pointwise_mul_exact mc
  28. 0028specialize beta_product_pointwise_mul_exact sb
  29. 0029specialize beta_product_pointwise_mul_exact sc
  30. 0030specialize beta_product_pointwise_mul_exact x
  31. 0031specialize beta_product_pointwise_mul_exact x1
  32. 0032specialize beta_product_pointwise_mul_exact l
  33. 0033specialize beta_product_pointwise_mul_exact M
  34. 0034specialize beta_product_pointwise_mul_exact Sprod
  35. 0035specialize beta_product_pointwise_mul_exact x2
  36. 0036apply beta_product_pointwise_mul_exact
  37. 0037exact halignment_exists_witness_witness
  38. 0038exact hM
  39. 0039exact hS
  40. 0040exact htarget_product_exists_witness
  41. 0041exists x
  42. 0042exists x1
  43. 0043exists x2
  44. 0044split
  45. 0045exact halignment_exists_witness_witness
  46. 0046split
  47. 0047exact htarget_product_exists_witness
  48. 0048exact hequal