Exact expanded PA statement
forall b c l n. (forall fom_value_exists_cover. (exists fom_gap_exists_cover_value_bound. fom_gap_exists_cover_value_bound + S (fom_value_exists_cover) = n) -> exists fom_index_exists_cover. ((exists fom_gap_exists_cover_index_bound. fom_gap_exists_cover_index_bound + S (fom_index_exists_cover) = l) /\ (((exists fom_beta_height_exists_cover_entry. fom_beta_height_exists_cover_entry + S (fom_value_exists_cover) = S ((S (fom_index_exists_cover)) * c)) /\ exists fom_beta_quotient_exists_cover_entry. b = fom_beta_quotient_exists_cover_entry * S ((S (fom_index_exists_cover)) * c) + (fom_value_exists_cover))))) -> exists z d. (forall fom_value_exists_result. (exists fom_gap_exists_result_value_bound. fom_gap_exists_result_value_bound + S (fom_value_exists_result) = n) -> exists fom_index_exists_result. ((((exists fom_beta_height_exists_result_choice_entry. fom_beta_height_exists_result_choice_entry + S (fom_index_exists_result) = S ((S (fom_value_exists_result)) * d)) /\ exists fom_beta_quotient_exists_result_choice_entry. z = fom_beta_quotient_exists_result_choice_entry * S ((S (fom_value_exists_result)) * d) + (fom_index_exists_result))) /\ ((exists fom_gap_exists_result_index_bound. fom_gap_exists_result_index_bound + S (fom_index_exists_result) = l) /\ (((exists fom_beta_height_exists_result_source_entry. fom_beta_height_exists_result_source_entry + S (fom_value_exists_result) = S ((S (fom_index_exists_result)) * c)) /\ exists fom_beta_quotient_exists_result_source_entry. b = fom_beta_quotient_exists_result_source_entry * S ((S (fom_index_exists_result)) * c) + (fom_value_exists_result))))))Structural proof guide
Generated structural guide
Full finite coverage admits a beta-coded choice of one preimage for each target value.
Use the direct prerequisites add_eq_zero_right, succ_ne_zero, le_succ, le_refl, finite_inverse_choice_prefix_extend as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (3), intermediate claims (6).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA002O le_succ PA001A le_refl PA0093 finite_inverse_choice_prefix_extendDirect 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 l - 0004
induction n - 0005
intro hcover - 0006
exists 0 - 0007
exists 0 - 0008
intro y - 0009
intro hy - 0010
exfalso - 0011
cases hy - 0012
have hsy : S y = 0 - 0013
specialize add_eq_zero_right x - 0014
specialize add_eq_zero_right (S y) - 0015
apply add_eq_zero_right - 0016
exact hy_witness - 0017
specialize succ_ne_zero y - 0018
apply succ_ne_zero - 0019
exact hsy - 0020
intro hcover - 0021
have hcover_all : forall fom_value_exists_successor_cover. (exists fom_gap_exists_successor_cover_value_bound. fom_gap_exists_successor_cover_value_bound + S (fom_value_exists_successor_cover) = S n) -> exists fom_index_exists_successor_cover. ((exists fom_gap_exists_successor_cover_index_bound. fom_gap_exists_successor_cover_index_bound + S (fom_index_exists_successor_cover) = l) /\ (((exists fom_beta_height_exists_successor_cover_entry. fom_beta_height_exists_successor_cover_entry + S (fom_value_exists_successor_cover) = S ((S (fom_index_exists_successor_cover)) * c)) /\ exists fom_beta_quotient_exists_successor_cover_entry. b = fom_beta_quotient_exists_successor_cover_entry * S ((S (fom_index_exists_successor_cover)) * c) + (fom_value_exists_successor_cover)))) - 0022
exact hcover - 0023
have hpast : forall fom_value_exists_previous_cover. (exists fom_gap_exists_previous_cover_value_bound. fom_gap_exists_previous_cover_value_bound + S (fom_value_exists_previous_cover) = n) -> exists fom_index_exists_previous_cover. ((exists fom_gap_exists_previous_cover_index_bound. fom_gap_exists_previous_cover_index_bound + S (fom_index_exists_previous_cover) = l) /\ (((exists fom_beta_height_exists_previous_cover_entry. fom_beta_height_exists_previous_cover_entry + S (fom_value_exists_previous_cover) = S ((S (fom_index_exists_previous_cover)) * c)) /\ exists fom_beta_quotient_exists_previous_cover_entry. b = fom_beta_quotient_exists_previous_cover_entry * S ((S (fom_index_exists_previous_cover)) * c) + (fom_value_exists_previous_cover)))) - 0024
intro y - 0025
intro hy - 0026
specialize hcover_all y - 0027
apply hcover_all - 0028
specialize le_succ (S y) - 0029
specialize le_succ n - 0030
apply le_succ - 0031
exact hy - 0032
have hprevious : exists z d. (forall fom_value_exists_previous_choice. (exists fom_gap_exists_previous_choice_value_bound. fom_gap_exists_previous_choice_value_bound + S (fom_value_exists_previous_choice) = n) -> exists fom_index_exists_previous_choice. ((((exists fom_beta_height_exists_previous_choice_choice_entry. fom_beta_height_exists_previous_choice_choice_entry + S (fom_index_exists_previous_choice) = S ((S (fom_value_exists_previous_choice)) * d)) /\ exists fom_beta_quotient_exists_previous_choice_choice_entry. z = fom_beta_quotient_exists_previous_choice_choice_entry * S ((S (fom_value_exists_previous_choice)) * d) + (fom_index_exists_previous_choice))) /\ ((exists fom_gap_exists_previous_choice_index_bound. fom_gap_exists_previous_choice_index_bound + S (fom_index_exists_previous_choice) = l) /\ (((exists fom_beta_height_exists_previous_choice_source_entry. fom_beta_height_exists_previous_choice_source_entry + S (fom_value_exists_previous_choice) = S ((S (fom_index_exists_previous_choice)) * c)) /\ exists fom_beta_quotient_exists_previous_choice_source_entry. b = fom_beta_quotient_exists_previous_choice_source_entry * S ((S (fom_index_exists_previous_choice)) * c) + (fom_value_exists_previous_choice)))))) - 0033
apply IH - 0034
exact hpast - 0035
cases hprevious - 0036
cases hprevious_witness - 0037
have htop : exists fp_i_exists_top_contains. ((exists fp_gap_exists_top_contains_index. fp_gap_exists_top_contains_index + S fp_i_exists_top_contains = l) /\ (((exists ff_h_exists_top_contains_entry. ff_h_exists_top_contains_entry + S (n) = S ((S (fp_i_exists_top_contains)) * c)) /\ exists ff_q_exists_top_contains_entry. b = ff_q_exists_top_contains_entry * S ((S (fp_i_exists_top_contains)) * c) + (n)))) - 0038
specialize hcover n - 0039
apply hcover - 0040
specialize le_refl (S n) - 0041
exact le_refl - 0042
have hnext : exists z d. (forall fom_value_exists_successor_choice. (exists fom_gap_exists_successor_choice_value_bound. fom_gap_exists_successor_choice_value_bound + S (fom_value_exists_successor_choice) = S n) -> exists fom_index_exists_successor_choice. ((((exists fom_beta_height_exists_successor_choice_choice_entry. fom_beta_height_exists_successor_choice_choice_entry + S (fom_index_exists_successor_choice) = S ((S (fom_value_exists_successor_choice)) * d)) /\ exists fom_beta_quotient_exists_successor_choice_choice_entry. z = fom_beta_quotient_exists_successor_choice_choice_entry * S ((S (fom_value_exists_successor_choice)) * d) + (fom_index_exists_successor_choice))) /\ ((exists fom_gap_exists_successor_choice_index_bound. fom_gap_exists_successor_choice_index_bound + S (fom_index_exists_successor_choice) = l) /\ (((exists fom_beta_height_exists_successor_choice_source_entry. fom_beta_height_exists_successor_choice_source_entry + S (fom_value_exists_successor_choice) = S ((S (fom_index_exists_successor_choice)) * c)) /\ exists fom_beta_quotient_exists_successor_choice_source_entry. b = fom_beta_quotient_exists_successor_choice_source_entry * S ((S (fom_index_exists_successor_choice)) * c) + (fom_value_exists_successor_choice)))))) - 0043
specialize finite_inverse_choice_prefix_extend b - 0044
specialize finite_inverse_choice_prefix_extend c - 0045
specialize finite_inverse_choice_prefix_extend l - 0046
specialize finite_inverse_choice_prefix_extend x - 0047
specialize finite_inverse_choice_prefix_extend x1 - 0048
specialize finite_inverse_choice_prefix_extend n - 0049
apply finite_inverse_choice_prefix_extend - 0050
exact htop - 0051
exact hprevious_witness_witness - 0052
exact hnext