Exact expanded PA statement
forall b c l n. (forall fom_value_search_cover. (exists fom_gap_search_cover_value_bound. fom_gap_search_cover_value_bound + S (fom_value_search_cover) = n) -> exists fom_index_search_cover. ((exists fom_gap_search_cover_index_bound. fom_gap_search_cover_index_bound + S (fom_index_search_cover) = l) /\ (((exists fom_beta_height_search_cover_entry. fom_beta_height_search_cover_entry + S (fom_value_search_cover) = S ((S (fom_index_search_cover)) * c)) /\ exists fom_beta_quotient_search_cover_entry. b = fom_beta_quotient_search_cover_entry * S ((S (fom_index_search_cover)) * c) + (fom_value_search_cover))))) \/ (exists fom_value_search_omit. ((exists fom_gap_search_omit_value_bound. fom_gap_search_omit_value_bound + S (fom_value_search_omit) = n) /\ ~(exists fom_index_search_omit. ((exists fom_gap_search_omit_index_bound. fom_gap_search_omit_index_bound + S (fom_index_search_omit) = l) /\ (((exists fom_beta_height_search_omit_entry. fom_beta_height_search_omit_entry + S (fom_value_search_omit) = S ((S (fom_index_search_omit)) * c)) /\ exists fom_beta_quotient_search_omit_entry. b = fom_beta_quotient_search_omit_entry * S ((S (fom_index_search_omit)) * c) + (fom_value_search_omit)))))))Structural proof guide
Generated structural guide
Bounded occurrence search either covers the target interval or returns an explicit omission.
Use the direct prerequisites add_eq_zero_right, succ_ne_zero, finite_contains_decidable, finite_lt_succ_eq_or_lt, le_succ, le_refl as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (6), intermediate claims (5), equality transport (2).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA004H finite_contains_decidable PA003D finite_lt_succ_eq_or_lt PA002O le_succ PA001A le_reflDirect 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
left - 0006
intro y - 0007
intro hy - 0008
exfalso - 0009
cases hy - 0010
have hsy : S y = 0 - 0011
specialize add_eq_zero_right x - 0012
specialize add_eq_zero_right (S y) - 0013
apply add_eq_zero_right - 0014
exact hy_witness - 0015
specialize succ_ne_zero y - 0016
apply succ_ne_zero - 0017
exact hsy - 0018
have hprevious : (forall fom_value_search_previous_cover. (exists fom_gap_search_previous_cover_value_bound. fom_gap_search_previous_cover_value_bound + S (fom_value_search_previous_cover) = n) -> exists fom_index_search_previous_cover. ((exists fom_gap_search_previous_cover_index_bound. fom_gap_search_previous_cover_index_bound + S (fom_index_search_previous_cover) = l) /\ (((exists fom_beta_height_search_previous_cover_entry. fom_beta_height_search_previous_cover_entry + S (fom_value_search_previous_cover) = S ((S (fom_index_search_previous_cover)) * c)) /\ exists fom_beta_quotient_search_previous_cover_entry. b = fom_beta_quotient_search_previous_cover_entry * S ((S (fom_index_search_previous_cover)) * c) + (fom_value_search_previous_cover))))) \/ (exists fom_value_search_previous_omit. ((exists fom_gap_search_previous_omit_value_bound. fom_gap_search_previous_omit_value_bound + S (fom_value_search_previous_omit) = n) /\ ~(exists fom_index_search_previous_omit. ((exists fom_gap_search_previous_omit_index_bound. fom_gap_search_previous_omit_index_bound + S (fom_index_search_previous_omit) = l) /\ (((exists fom_beta_height_search_previous_omit_entry. fom_beta_height_search_previous_omit_entry + S (fom_value_search_previous_omit) = S ((S (fom_index_search_previous_omit)) * c)) /\ exists fom_beta_quotient_search_previous_omit_entry. b = fom_beta_quotient_search_previous_omit_entry * S ((S (fom_index_search_previous_omit)) * c) + (fom_value_search_previous_omit))))))) - 0019
exact IH - 0020
cases hprevious - 0021
have htop : (exists fp_i_search_top_contains. ((exists fp_gap_search_top_contains_index. fp_gap_search_top_contains_index + S fp_i_search_top_contains = l) /\ (((exists ff_h_search_top_contains_entry. ff_h_search_top_contains_entry + S (n) = S ((S (fp_i_search_top_contains)) * c)) /\ exists ff_q_search_top_contains_entry. b = ff_q_search_top_contains_entry * S ((S (fp_i_search_top_contains)) * c) + (n))))) \/ ~(exists fp_i_search_top_contains. ((exists fp_gap_search_top_contains_index. fp_gap_search_top_contains_index + S fp_i_search_top_contains = l) /\ (((exists ff_h_search_top_contains_entry. ff_h_search_top_contains_entry + S (n) = S ((S (fp_i_search_top_contains)) * c)) /\ exists ff_q_search_top_contains_entry. b = ff_q_search_top_contains_entry * S ((S (fp_i_search_top_contains)) * c) + (n))))) - 0022
specialize finite_contains_decidable b - 0023
specialize finite_contains_decidable c - 0024
specialize finite_contains_decidable l - 0025
specialize finite_contains_decidable n - 0026
exact finite_contains_decidable - 0027
cases htop - 0028
left - 0029
have hsuccessor_cover : forall fom_value_search_successor_cover. (exists fom_gap_search_successor_cover_value_bound. fom_gap_search_successor_cover_value_bound + S (fom_value_search_successor_cover) = S n) -> exists fom_index_search_successor_cover. ((exists fom_gap_search_successor_cover_index_bound. fom_gap_search_successor_cover_index_bound + S (fom_index_search_successor_cover) = l) /\ (((exists fom_beta_height_search_successor_cover_entry. fom_beta_height_search_successor_cover_entry + S (fom_value_search_successor_cover) = S ((S (fom_index_search_successor_cover)) * c)) /\ exists fom_beta_quotient_search_successor_cover_entry. b = fom_beta_quotient_search_successor_cover_entry * S ((S (fom_index_search_successor_cover)) * c) + (fom_value_search_successor_cover)))) - 0030
intro y - 0031
intro hy - 0032
have hsplit : y = n \/ exists h. h + S y = n - 0033
specialize finite_lt_succ_eq_or_lt n - 0034
specialize finite_lt_succ_eq_or_lt y - 0035
apply finite_lt_succ_eq_or_lt - 0036
exact hy - 0037
cases hsplit - 0038
rewrite hsplit_left - 0039
rewrite hsplit_left - 0040
exact htop_left - 0041
specialize hprevious_left y - 0042
apply hprevious_left - 0043
exact hsplit_right - 0044
exact hsuccessor_cover - 0045
right - 0046
exists n - 0047
split - 0048
specialize le_refl (S n) - 0049
exact le_refl - 0050
exact htop_right - 0051
right - 0052
cases hprevious_right - 0053
cases hprevious_right_witness - 0054
exists x - 0055
split - 0056
specialize le_succ (S x) - 0057
specialize le_succ n - 0058
apply le_succ - 0059
exact hprevious_right_witness_left - 0060
exact hprevious_right_witness_right