BT00TV

factorial_length_eq_transport

Alpha v34 checked-use theorem · independently kernel and Lean verified; not Stable

Relational factorial transports along equality of its length.

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 n m z. n = m -> (exists ff_b_bcflet_source ff_c_bcflet_source. ((forall ff_i_bcflet_source_range. (exists ff_lt_bcflet_source_range_bound. ff_lt_bcflet_source_range_bound + S ff_i_bcflet_source_range = n) -> (((exists ff_h_bcflet_source_range_decoded. ff_h_bcflet_source_range_decoded + S (1 + ff_i_bcflet_source_range) = S ((S (ff_i_bcflet_source_range)) * ff_c_bcflet_source)) /\ exists ff_q_bcflet_source_range_decoded. ff_b_bcflet_source = ff_q_bcflet_source_range_decoded * S ((S (ff_i_bcflet_source_range)) * ff_c_bcflet_source) + (1 + ff_i_bcflet_source_range)))) /\ (exists ff_u_bcflet_source_product ff_v_bcflet_source_product. ((((exists ff_h_bcflet_source_product_start. ff_h_bcflet_source_product_start + S (1) = S ((S (0)) * ff_v_bcflet_source_product)) /\ exists ff_q_bcflet_source_product_start. ff_u_bcflet_source_product = ff_q_bcflet_source_product_start * S ((S (0)) * ff_v_bcflet_source_product) + (1))) /\ ((((exists ff_h_bcflet_source_product_terminal. ff_h_bcflet_source_product_terminal + S (z) = S ((S (n)) * ff_v_bcflet_source_product)) /\ exists ff_q_bcflet_source_product_terminal. ff_u_bcflet_source_product = ff_q_bcflet_source_product_terminal * S ((S (n)) * ff_v_bcflet_source_product) + (z))) /\ forall ff_i_bcflet_source_product. (exists ff_lt_bcflet_source_product_bound. ff_lt_bcflet_source_product_bound + S ff_i_bcflet_source_product = n) -> exists ff_p_bcflet_source_product ff_r_bcflet_source_product ff_s_bcflet_source_product. ((((exists ff_h_bcflet_source_product_factor. ff_h_bcflet_source_product_factor + S (ff_p_bcflet_source_product) = S ((S (ff_i_bcflet_source_product)) * ff_c_bcflet_source)) /\ exists ff_q_bcflet_source_product_factor. ff_b_bcflet_source = ff_q_bcflet_source_product_factor * S ((S (ff_i_bcflet_source_product)) * ff_c_bcflet_source) + (ff_p_bcflet_source_product))) /\ ((((exists ff_h_bcflet_source_product_partial. ff_h_bcflet_source_product_partial + S (ff_r_bcflet_source_product) = S ((S (ff_i_bcflet_source_product)) * ff_v_bcflet_source_product)) /\ exists ff_q_bcflet_source_product_partial. ff_u_bcflet_source_product = ff_q_bcflet_source_product_partial * S ((S (ff_i_bcflet_source_product)) * ff_v_bcflet_source_product) + (ff_r_bcflet_source_product))) /\ ((((exists ff_h_bcflet_source_product_successor. ff_h_bcflet_source_product_successor + S (ff_s_bcflet_source_product) = S ((S (S ff_i_bcflet_source_product)) * ff_v_bcflet_source_product)) /\ exists ff_q_bcflet_source_product_successor. ff_u_bcflet_source_product = ff_q_bcflet_source_product_successor * S ((S (S ff_i_bcflet_source_product)) * ff_v_bcflet_source_product) + (ff_s_bcflet_source_product))) /\ ff_s_bcflet_source_product = ff_r_bcflet_source_product * ff_p_bcflet_source_product)))))))) -> (exists ff_b_bcflet_target ff_c_bcflet_target. ((forall ff_i_bcflet_target_range. (exists ff_lt_bcflet_target_range_bound. ff_lt_bcflet_target_range_bound + S ff_i_bcflet_target_range = m) -> (((exists ff_h_bcflet_target_range_decoded. ff_h_bcflet_target_range_decoded + S (1 + ff_i_bcflet_target_range) = S ((S (ff_i_bcflet_target_range)) * ff_c_bcflet_target)) /\ exists ff_q_bcflet_target_range_decoded. ff_b_bcflet_target = ff_q_bcflet_target_range_decoded * S ((S (ff_i_bcflet_target_range)) * ff_c_bcflet_target) + (1 + ff_i_bcflet_target_range)))) /\ (exists ff_u_bcflet_target_product ff_v_bcflet_target_product. ((((exists ff_h_bcflet_target_product_start. ff_h_bcflet_target_product_start + S (1) = S ((S (0)) * ff_v_bcflet_target_product)) /\ exists ff_q_bcflet_target_product_start. ff_u_bcflet_target_product = ff_q_bcflet_target_product_start * S ((S (0)) * ff_v_bcflet_target_product) + (1))) /\ ((((exists ff_h_bcflet_target_product_terminal. ff_h_bcflet_target_product_terminal + S (z) = S ((S (m)) * ff_v_bcflet_target_product)) /\ exists ff_q_bcflet_target_product_terminal. ff_u_bcflet_target_product = ff_q_bcflet_target_product_terminal * S ((S (m)) * ff_v_bcflet_target_product) + (z))) /\ forall ff_i_bcflet_target_product. (exists ff_lt_bcflet_target_product_bound. ff_lt_bcflet_target_product_bound + S ff_i_bcflet_target_product = m) -> exists ff_p_bcflet_target_product ff_r_bcflet_target_product ff_s_bcflet_target_product. ((((exists ff_h_bcflet_target_product_factor. ff_h_bcflet_target_product_factor + S (ff_p_bcflet_target_product) = S ((S (ff_i_bcflet_target_product)) * ff_c_bcflet_target)) /\ exists ff_q_bcflet_target_product_factor. ff_b_bcflet_target = ff_q_bcflet_target_product_factor * S ((S (ff_i_bcflet_target_product)) * ff_c_bcflet_target) + (ff_p_bcflet_target_product))) /\ ((((exists ff_h_bcflet_target_product_partial. ff_h_bcflet_target_product_partial + S (ff_r_bcflet_target_product) = S ((S (ff_i_bcflet_target_product)) * ff_v_bcflet_target_product)) /\ exists ff_q_bcflet_target_product_partial. ff_u_bcflet_target_product = ff_q_bcflet_target_product_partial * S ((S (ff_i_bcflet_target_product)) * ff_v_bcflet_target_product) + (ff_r_bcflet_target_product))) /\ ((((exists ff_h_bcflet_target_product_successor. ff_h_bcflet_target_product_successor + S (ff_s_bcflet_target_product) = S ((S (S ff_i_bcflet_target_product)) * ff_v_bcflet_target_product)) /\ exists ff_q_bcflet_target_product_successor. ff_u_bcflet_target_product = ff_q_bcflet_target_product_successor * S ((S (S ff_i_bcflet_target_product)) * ff_v_bcflet_target_product) + (ff_s_bcflet_target_product))) /\ ff_s_bcflet_target_product = ff_r_bcflet_target_product * ff_p_bcflet_target_product))))))))

Structural proof guide

Relational factorial transports along equality of its length.

Direct prerequisites: none. The authored body proceeds by equality transport (4).

Proof neighborhood

Direct dependencies

none

Direct dependents

Formal native tactic body

Dependencies are hypotheses of the historical Alpha-v12 body receipt. The complete historical Alpha-v18 proof bundle independently checks every dependency; current Alpha v25 preserves that checked theorem use without changing Stable membership.

Read the argument

Proof checkpoints

10 script commands · 3 reading checkpoints · 0 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.

01Fix variables and assumptionsL1–5

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

  1. L1
    intro n
  2. L2
    intro m
  3. L3
    intro z
  4. L4
    intro heq
  5. L5
    intro hfactorial
02Calculate and transport equalitiesL6–9

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L6
    rewrite heq at hfactorial
  2. L7
    rewrite heq at hfactorial
  3. L8
    rewrite heq at hfactorial
  4. L9
    rewrite heq at hfactorial
03Use earlier factsL10–10

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

  1. L10
    exact hfactorial

Library-wide reading audit

Original exact command ledger · 10 lines
  1. 0001intro n
  2. 0002intro m
  3. 0003intro z
  4. 0004intro heq
  5. 0005intro hfactorial
  6. 0006rewrite heq at hfactorial
  7. 0007rewrite heq at hfactorial
  8. 0008rewrite heq at hfactorial
  9. 0009rewrite heq at hfactorial
  10. 0010exact hfactorial