Exact expanded PA statement
forall b c f g n Q F. (forall fom_index_enr_generic_bounded. (exists fom_gap_enr_generic_bounded_index_bound. fom_gap_enr_generic_bounded_index_bound + S (fom_index_enr_generic_bounded) = n) -> exists fom_value_enr_generic_bounded. ((((exists fom_beta_height_enr_generic_bounded_entry. fom_beta_height_enr_generic_bounded_entry + S (fom_value_enr_generic_bounded) = S ((S (fom_index_enr_generic_bounded)) * c)) /\ exists fom_beta_quotient_enr_generic_bounded_entry. b = fom_beta_quotient_enr_generic_bounded_entry * S ((S (fom_index_enr_generic_bounded)) * c) + (fom_value_enr_generic_bounded))) /\ (exists fom_gap_enr_generic_bounded_value_bound. fom_gap_enr_generic_bounded_value_bound + S (fom_value_enr_generic_bounded) = n))) -> (forall wpo_injective_left_enr_generic_injective wpo_injective_right_enr_generic_injective wpo_injective_value_enr_generic_injective. (exists wpo_gap_enr_generic_injective_left_bound. wpo_gap_enr_generic_injective_left_bound + S (wpo_injective_left_enr_generic_injective) = n) -> (exists wpo_gap_enr_generic_injective_right_bound. wpo_gap_enr_generic_injective_right_bound + S (wpo_injective_right_enr_generic_injective) = n) -> (((exists wpo_beta_height_enr_generic_injective_left_entry. wpo_beta_height_enr_generic_injective_left_entry + S (wpo_injective_value_enr_generic_injective) = S ((S (wpo_injective_left_enr_generic_injective)) * c)) /\ exists wpo_beta_quotient_enr_generic_injective_left_entry. b = wpo_beta_quotient_enr_generic_injective_left_entry * S ((S (wpo_injective_left_enr_generic_injective)) * c) + (wpo_injective_value_enr_generic_injective))) -> (((exists wpo_beta_height_enr_generic_injective_right_entry. wpo_beta_height_enr_generic_injective_right_entry + S (wpo_injective_value_enr_generic_injective) = S ((S (wpo_injective_right_enr_generic_injective)) * c)) /\ exists wpo_beta_quotient_enr_generic_injective_right_entry. b = wpo_beta_quotient_enr_generic_injective_right_entry * S ((S (wpo_injective_right_enr_generic_injective)) * c) + (wpo_injective_value_enr_generic_injective))) -> wpo_injective_left_enr_generic_injective = wpo_injective_right_enr_generic_injective) -> (forall wsl_index_enr_generic_lift wsl_value_enr_generic_lift. (exists wpo_gap_enr_generic_lift_bound. wpo_gap_enr_generic_lift_bound + S (wsl_index_enr_generic_lift) = n) -> (((exists wpo_beta_height_enr_generic_lift_source. wpo_beta_height_enr_generic_lift_source + S (wsl_value_enr_generic_lift) = S ((S (wsl_index_enr_generic_lift)) * c)) /\ exists wpo_beta_quotient_enr_generic_lift_source. b = wpo_beta_quotient_enr_generic_lift_source * S ((S (wsl_index_enr_generic_lift)) * c) + (wsl_value_enr_generic_lift))) -> (((exists wpo_beta_height_enr_generic_lift_target. wpo_beta_height_enr_generic_lift_target + S (S wsl_value_enr_generic_lift) = S ((S (wsl_index_enr_generic_lift)) * g)) /\ exists wpo_beta_quotient_enr_generic_lift_target. f = wpo_beta_quotient_enr_generic_lift_target * S ((S (wsl_index_enr_generic_lift)) * g) + (S wsl_value_enr_generic_lift)))) -> (exists ff_u_enr_lifted_product ff_v_enr_lifted_product. ((((exists ff_h_enr_lifted_product_start. ff_h_enr_lifted_product_start + S (1) = S ((S (0)) * ff_v_enr_lifted_product)) /\ exists ff_q_enr_lifted_product_start. ff_u_enr_lifted_product = ff_q_enr_lifted_product_start * S ((S (0)) * ff_v_enr_lifted_product) + (1))) /\ ((((exists ff_h_enr_lifted_product_terminal. ff_h_enr_lifted_product_terminal + S (Q) = S ((S (n)) * ff_v_enr_lifted_product)) /\ exists ff_q_enr_lifted_product_terminal. ff_u_enr_lifted_product = ff_q_enr_lifted_product_terminal * S ((S (n)) * ff_v_enr_lifted_product) + (Q))) /\ forall ff_i_enr_lifted_product. (exists ff_lt_enr_lifted_product_bound. ff_lt_enr_lifted_product_bound + S ff_i_enr_lifted_product = n) -> exists ff_p_enr_lifted_product ff_r_enr_lifted_product ff_s_enr_lifted_product. ((((exists ff_h_enr_lifted_product_factor. ff_h_enr_lifted_product_factor + S (ff_p_enr_lifted_product) = S ((S (ff_i_enr_lifted_product)) * g)) /\ exists ff_q_enr_lifted_product_factor. f = ff_q_enr_lifted_product_factor * S ((S (ff_i_enr_lifted_product)) * g) + (ff_p_enr_lifted_product))) /\ ((((exists ff_h_enr_lifted_product_partial. ff_h_enr_lifted_product_partial + S (ff_r_enr_lifted_product) = S ((S (ff_i_enr_lifted_product)) * ff_v_enr_lifted_product)) /\ exists ff_q_enr_lifted_product_partial. ff_u_enr_lifted_product = ff_q_enr_lifted_product_partial * S ((S (ff_i_enr_lifted_product)) * ff_v_enr_lifted_product) + (ff_r_enr_lifted_product))) /\ ((((exists ff_h_enr_lifted_product_successor. ff_h_enr_lifted_product_successor + S (ff_s_enr_lifted_product) = S ((S (S ff_i_enr_lifted_product)) * ff_v_enr_lifted_product)) /\ exists ff_q_enr_lifted_product_successor. ff_u_enr_lifted_product = ff_q_enr_lifted_product_successor * S ((S (S ff_i_enr_lifted_product)) * ff_v_enr_lifted_product) + (ff_s_enr_lifted_product))) /\ ff_s_enr_lifted_product = ff_r_enr_lifted_product * ff_p_enr_lifted_product)))))) -> (exists ff_b_enr_factorial ff_c_enr_factorial. ((forall ff_i_enr_factorial_range. (exists ff_lt_enr_factorial_range_bound. ff_lt_enr_factorial_range_bound + S ff_i_enr_factorial_range = n) -> (((exists ff_h_enr_factorial_range_decoded. ff_h_enr_factorial_range_decoded + S (1 + ff_i_enr_factorial_range) = S ((S (ff_i_enr_factorial_range)) * ff_c_enr_factorial)) /\ exists ff_q_enr_factorial_range_decoded. ff_b_enr_factorial = ff_q_enr_factorial_range_decoded * S ((S (ff_i_enr_factorial_range)) * ff_c_enr_factorial) + (1 + ff_i_enr_factorial_range)))) /\ (exists ff_u_enr_factorial_product ff_v_enr_factorial_product. ((((exists ff_h_enr_factorial_product_start. ff_h_enr_factorial_product_start + S (1) = S ((S (0)) * ff_v_enr_factorial_product)) /\ exists ff_q_enr_factorial_product_start. ff_u_enr_factorial_product = ff_q_enr_factorial_product_start * S ((S (0)) * ff_v_enr_factorial_product) + (1))) /\ ((((exists ff_h_enr_factorial_product_terminal. ff_h_enr_factorial_product_terminal + S (F) = S ((S (n)) * ff_v_enr_factorial_product)) /\ exists ff_q_enr_factorial_product_terminal. ff_u_enr_factorial_product = ff_q_enr_factorial_product_terminal * S ((S (n)) * ff_v_enr_factorial_product) + (F))) /\ forall ff_i_enr_factorial_product. (exists ff_lt_enr_factorial_product_bound. ff_lt_enr_factorial_product_bound + S ff_i_enr_factorial_product = n) -> exists ff_p_enr_factorial_product ff_r_enr_factorial_product ff_s_enr_factorial_product. ((((exists ff_h_enr_factorial_product_factor. ff_h_enr_factorial_product_factor + S (ff_p_enr_factorial_product) = S ((S (ff_i_enr_factorial_product)) * ff_c_enr_factorial)) /\ exists ff_q_enr_factorial_product_factor. ff_b_enr_factorial = ff_q_enr_factorial_product_factor * S ((S (ff_i_enr_factorial_product)) * ff_c_enr_factorial) + (ff_p_enr_factorial_product))) /\ ((((exists ff_h_enr_factorial_product_partial. ff_h_enr_factorial_product_partial + S (ff_r_enr_factorial_product) = S ((S (ff_i_enr_factorial_product)) * ff_v_enr_factorial_product)) /\ exists ff_q_enr_factorial_product_partial. ff_u_enr_factorial_product = ff_q_enr_factorial_product_partial * S ((S (ff_i_enr_factorial_product)) * ff_v_enr_factorial_product) + (ff_r_enr_factorial_product))) /\ ((((exists ff_h_enr_factorial_product_successor. ff_h_enr_factorial_product_successor + S (ff_s_enr_factorial_product) = S ((S (S ff_i_enr_factorial_product)) * ff_v_enr_factorial_product)) /\ exists ff_q_enr_factorial_product_successor. ff_u_enr_factorial_product = ff_q_enr_factorial_product_successor * S ((S (S ff_i_enr_factorial_product)) * ff_v_enr_factorial_product) + (ff_s_enr_factorial_product))) /\ ff_s_enr_factorial_product = ff_r_enr_factorial_product * ff_p_enr_factorial_product)))))))) -> Q = FStructural proof guide
Generated structural guide
A bounded injective order and its successor lift multiply to n factorial.
Use the direct prerequisites beta_at_unique, beta_range_entry_eq, beta_product_permutation_invariant, add_succ_left, zero_add as previously established PA formulas.
The proof proceeds by case analysis (5), intermediate claims (8), equality transport (5), certified simplification (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA002F beta_at_unique PA0032 beta_range_entry_eq PA007X beta_product_permutation_invariant PA000E add_succ_left PA0001 zero_addDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro b - 0002
intro c - 0003
intro f - 0004
intro g - 0005
intro n - 0006
intro Q - 0007
intro F - 0008
intro hbounded - 0009
intro hinjective - 0010
intro hlift - 0011
intro hproduct - 0012
intro hfactorial - 0013
cases hfactorial - 0014
cases hfactorial_witness - 0015
cases hfactorial_witness_witness - 0016
have haligned : forall fpr_i_enr_alignment_x fpr_j_enr_alignment_x fpr_x_enr_alignment_x. (exists fpr_h_enr_alignment_x. fpr_h_enr_alignment_x + S fpr_i_enr_alignment_x = n) -> (((exists ff_h_enr_alignment_x_map. ff_h_enr_alignment_x_map + S (fpr_j_enr_alignment_x) = S ((S (fpr_i_enr_alignment_x)) * c)) /\ exists ff_q_enr_alignment_x_map. b = ff_q_enr_alignment_x_map * S ((S (fpr_i_enr_alignment_x)) * c) + (fpr_j_enr_alignment_x))) -> (((exists ff_h_enr_alignment_x_source. ff_h_enr_alignment_x_source + S (fpr_x_enr_alignment_x) = S ((S (fpr_j_enr_alignment_x)) * x1)) /\ exists ff_q_enr_alignment_x_source. x = ff_q_enr_alignment_x_source * S ((S (fpr_j_enr_alignment_x)) * x1) + (fpr_x_enr_alignment_x))) -> (((exists ff_h_enr_alignment_x_target. ff_h_enr_alignment_x_target + S (fpr_x_enr_alignment_x) = S ((S (fpr_i_enr_alignment_x)) * g)) /\ exists ff_q_enr_alignment_x_target. f = ff_q_enr_alignment_x_target * S ((S (fpr_i_enr_alignment_x)) * g) + (fpr_x_enr_alignment_x))) - 0017
intro i - 0018
intro j - 0019
intro y - 0020
intro hi - 0021
intro hmap - 0022
intro hsource - 0023
have hbounded_data : exists w. (((exists ff_h_enr_generic_bounded_entry. ff_h_enr_generic_bounded_entry + S (w) = S ((S (i)) * c)) /\ exists ff_q_enr_generic_bounded_entry. b = ff_q_enr_generic_bounded_entry * S ((S (i)) * c) + (w))) /\ (exists wpo_gap_enr_generic_bounded_value. wpo_gap_enr_generic_bounded_value + S (w) = n) - 0024
specialize hbounded i - 0025
apply hbounded - 0026
exact hi - 0027
cases hbounded_data - 0028
cases hbounded_data_witness - 0029
have hj_eq : j = x2 - 0030
specialize beta_at_unique b - 0031
specialize beta_at_unique c - 0032
specialize beta_at_unique i - 0033
specialize beta_at_unique j - 0034
specialize beta_at_unique x2 - 0035
apply beta_at_unique - 0036
exact hmap - 0037
exact hbounded_data_witness_left - 0038
have hj_bound : exists gap. gap + S j = n - 0039
rewrite hj_eq - 0040
exact hbounded_data_witness_right - 0041
have hy_eq : y = 1 + j - 0042
specialize beta_range_entry_eq x - 0043
specialize beta_range_entry_eq x1 - 0044
specialize beta_range_entry_eq 1 - 0045
specialize beta_range_entry_eq n - 0046
specialize beta_range_entry_eq j - 0047
specialize beta_range_entry_eq y - 0048
apply beta_range_entry_eq - 0049
exact hfactorial_witness_witness_left - 0050
exact hj_bound - 0051
exact hsource - 0052
have hlifted : ((exists ff_h_enr_generic_lifted_at_i. ff_h_enr_generic_lifted_at_i + S (S j) = S ((S (i)) * g)) /\ exists ff_q_enr_generic_lifted_at_i. f = ff_q_enr_generic_lifted_at_i * S ((S (i)) * g) + (S j)) - 0053
specialize hlift i - 0054
specialize hlift j - 0055
apply hlift - 0056
exact hi - 0057
exact hmap - 0058
have hone : 1 + j = S j - 0059
simp [add_succ_left, zero_add] - 0060
rewrite hy_eq - 0061
rewrite hy_eq - 0062
rewrite hone - 0063
rewrite hone - 0064
exact hlifted - 0065
have hfactorial_eq : F = Q - 0066
specialize beta_product_permutation_invariant n - 0067
specialize beta_product_permutation_invariant b - 0068
specialize beta_product_permutation_invariant c - 0069
specialize beta_product_permutation_invariant x - 0070
specialize beta_product_permutation_invariant x1 - 0071
specialize beta_product_permutation_invariant f - 0072
specialize beta_product_permutation_invariant g - 0073
specialize beta_product_permutation_invariant F - 0074
specialize beta_product_permutation_invariant Q - 0075
apply beta_product_permutation_invariant - 0076
exact hbounded - 0077
exact hinjective - 0078
exact haligned - 0079
exact hfactorial_witness_witness_right - 0080
exact hproduct - 0081
symm - 0082
exact hfactorial_eq