Exact expanded PA statement
forall p n u v b c l r. p = S n -> ((~(p = 1) /\ forall wip_prime_left_choose_orbit_prime wip_prime_right_choose_orbit_prime. p = wip_prime_left_choose_orbit_prime * wip_prime_right_choose_orbit_prime -> wip_prime_left_choose_orbit_prime = 1 \/ wip_prime_right_choose_orbit_prime = 1)) -> (forall wip_index_choose_orbit_full_prefix. (exists wip_gap_choose_orbit_full_prefix_prefix_bound. wip_gap_choose_orbit_full_prefix_prefix_bound + S wip_index_choose_orbit_full_prefix = n) -> exists wip_mate_choose_orbit_full_prefix. ((((exists wip_beta_height_choose_orbit_full_prefix_decoded. wip_beta_height_choose_orbit_full_prefix_decoded + S (wip_mate_choose_orbit_full_prefix) = S ((S (wip_index_choose_orbit_full_prefix)) * v)) /\ exists wip_beta_quotient_choose_orbit_full_prefix_decoded. u = wip_beta_quotient_choose_orbit_full_prefix_decoded * S ((S (wip_index_choose_orbit_full_prefix)) * v) + (wip_mate_choose_orbit_full_prefix))) /\ ((exists wip_gap_choose_orbit_full_prefix_inverse_index_bound. wip_gap_choose_orbit_full_prefix_inverse_index_bound + S wip_index_choose_orbit_full_prefix = n) /\ ((exists wip_gap_choose_orbit_full_prefix_inverse_mate_bound. wip_gap_choose_orbit_full_prefix_inverse_mate_bound + S wip_mate_choose_orbit_full_prefix = n) /\ (exists wip_mod_left_choose_orbit_full_prefix_inverse_mod wip_mod_right_choose_orbit_full_prefix_inverse_mod. ((S wip_index_choose_orbit_full_prefix) * S wip_mate_choose_orbit_full_prefix) + p * wip_mod_left_choose_orbit_full_prefix_inverse_mod = 1 + p * wip_mod_right_choose_orbit_full_prefix_inverse_mod))))) -> n = S r -> (exists h. h + S (S (S l)) = n) -> (forall wpo_position_step_closed_before wpo_source_step_closed_before wpo_mate_step_closed_before. (exists wpo_gap_step_closed_before_position_bound. wpo_gap_step_closed_before_position_bound + S (wpo_position_step_closed_before) = l) -> (((exists wpo_beta_height_step_closed_before_source_entry. wpo_beta_height_step_closed_before_source_entry + S (wpo_source_step_closed_before) = S ((S (wpo_position_step_closed_before)) * c)) /\ exists wpo_beta_quotient_step_closed_before_source_entry. b = wpo_beta_quotient_step_closed_before_source_entry * S ((S (wpo_position_step_closed_before)) * c) + (wpo_source_step_closed_before))) -> (((exists wpo_beta_height_step_closed_before_inverse_entry. wpo_beta_height_step_closed_before_inverse_entry + S (wpo_mate_step_closed_before) = S ((S (wpo_source_step_closed_before)) * v)) /\ exists wpo_beta_quotient_step_closed_before_inverse_entry. u = wpo_beta_quotient_step_closed_before_inverse_entry * S ((S (wpo_source_step_closed_before)) * v) + (wpo_mate_step_closed_before))) -> exists wpo_mate_position_step_closed_before. ((exists wpo_gap_step_closed_before_mate_bound. wpo_gap_step_closed_before_mate_bound + S (wpo_mate_position_step_closed_before) = l) /\ (((exists wpo_beta_height_step_closed_before_mate_entry. wpo_beta_height_step_closed_before_mate_entry + S (wpo_mate_step_closed_before) = S ((S (wpo_mate_position_step_closed_before)) * c)) /\ exists wpo_beta_quotient_step_closed_before_mate_entry. b = wpo_beta_quotient_step_closed_before_mate_entry * S ((S (wpo_mate_position_step_closed_before)) * c) + (wpo_mate_step_closed_before))))) -> (forall wpo_position_step_nonendpoint_before wpo_value_step_nonendpoint_before. (exists wpo_gap_step_nonendpoint_before_position_bound. wpo_gap_step_nonendpoint_before_position_bound + S (wpo_position_step_nonendpoint_before) = l) -> (((exists wpo_beta_height_step_nonendpoint_before_entry. wpo_beta_height_step_nonendpoint_before_entry + S (wpo_value_step_nonendpoint_before) = S ((S (wpo_position_step_nonendpoint_before)) * c)) /\ exists wpo_beta_quotient_step_nonendpoint_before_entry. b = wpo_beta_quotient_step_nonendpoint_before_entry * S ((S (wpo_position_step_nonendpoint_before)) * c) + (wpo_value_step_nonendpoint_before))) -> (~(wpo_value_step_nonendpoint_before = 0) /\ ~((S wpo_value_step_nonendpoint_before) = n))) -> (exists z d i j. ((((((exists wpo_beta_height_step_trace_first. wpo_beta_height_step_trace_first + S (i) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_step_trace_first. z = wpo_beta_quotient_step_trace_first * S ((S (l)) * d) + (i))) /\ ((((exists wpo_beta_height_step_trace_second. wpo_beta_height_step_trace_second + S (j) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_step_trace_second. z = wpo_beta_quotient_step_trace_second * S ((S (S (l))) * d) + (j))) /\ (forall wpo_old_index_step_trace wpo_old_value_step_trace. (exists wpo_gap_step_trace_old_bound. wpo_gap_step_trace_old_bound + S (wpo_old_index_step_trace) = l) -> (((exists wpo_beta_height_step_trace_old_entry. wpo_beta_height_step_trace_old_entry + S (wpo_old_value_step_trace) = S ((S (wpo_old_index_step_trace)) * c)) /\ exists wpo_beta_quotient_step_trace_old_entry. b = wpo_beta_quotient_step_trace_old_entry * S ((S (wpo_old_index_step_trace)) * c) + (wpo_old_value_step_trace))) -> (((exists wpo_beta_height_step_trace_new_entry. wpo_beta_height_step_trace_new_entry + S (wpo_old_value_step_trace) = S ((S (wpo_old_index_step_trace)) * d)) /\ exists wpo_beta_quotient_step_trace_new_entry. z = wpo_beta_quotient_step_trace_new_entry * S ((S (wpo_old_index_step_trace)) * d) + (wpo_old_value_step_trace))))))) /\ ((exists wpo_gap_choose_orbit_source_bound. wpo_gap_choose_orbit_source_bound + S (i) = n) /\ ((~(i = 0) /\ ~((S i) = n)) /\ ((~(exists wpo_index_choose_orbit_source_omit_contains. ((exists wpo_gap_choose_orbit_source_omit_contains_bound. wpo_gap_choose_orbit_source_omit_contains_bound + S (wpo_index_choose_orbit_source_omit_contains) = l) /\ (((exists wpo_beta_height_choose_orbit_source_omit_contains_entry. wpo_beta_height_choose_orbit_source_omit_contains_entry + S (i) = S ((S (wpo_index_choose_orbit_source_omit_contains)) * c)) /\ exists wpo_beta_quotient_choose_orbit_source_omit_contains_entry. b = wpo_beta_quotient_choose_orbit_source_omit_contains_entry * S ((S (wpo_index_choose_orbit_source_omit_contains)) * c) + (i)))))) /\ ((((exists wpo_beta_height_choose_orbit_forward. wpo_beta_height_choose_orbit_forward + S (j) = S ((S (i)) * v)) /\ exists wpo_beta_quotient_choose_orbit_forward. u = wpo_beta_quotient_choose_orbit_forward * S ((S (i)) * v) + (j))) /\ ((exists wpo_gap_choose_orbit_mate_bound. wpo_gap_choose_orbit_mate_bound + S (j) = n) /\ ((~(j = 0) /\ ~((S j) = n)) /\ (~(i = j) /\ ((((exists wpo_beta_height_choose_orbit_back. wpo_beta_height_choose_orbit_back + S (i) = S ((S (j)) * v)) /\ exists wpo_beta_quotient_choose_orbit_back. u = wpo_beta_quotient_choose_orbit_back * S ((S (j)) * v) + (i))) /\ ((~(exists wpo_index_step_mate_omit_contains. ((exists wpo_gap_step_mate_omit_contains_bound. wpo_gap_step_mate_omit_contains_bound + S (wpo_index_step_mate_omit_contains) = l) /\ (((exists wpo_beta_height_step_mate_omit_contains_entry. wpo_beta_height_step_mate_omit_contains_entry + S (j) = S ((S (wpo_index_step_mate_omit_contains)) * c)) /\ exists wpo_beta_quotient_step_mate_omit_contains_entry. b = wpo_beta_quotient_step_mate_omit_contains_entry * S ((S (wpo_index_step_mate_omit_contains)) * c) + (j)))))) /\ ((forall wpo_position_step_closed_after wpo_source_step_closed_after wpo_mate_step_closed_after. (exists wpo_gap_step_closed_after_position_bound. wpo_gap_step_closed_after_position_bound + S (wpo_position_step_closed_after) = S (S l)) -> (((exists wpo_beta_height_step_closed_after_source_entry. wpo_beta_height_step_closed_after_source_entry + S (wpo_source_step_closed_after) = S ((S (wpo_position_step_closed_after)) * d)) /\ exists wpo_beta_quotient_step_closed_after_source_entry. z = wpo_beta_quotient_step_closed_after_source_entry * S ((S (wpo_position_step_closed_after)) * d) + (wpo_source_step_closed_after))) -> (((exists wpo_beta_height_step_closed_after_inverse_entry. wpo_beta_height_step_closed_after_inverse_entry + S (wpo_mate_step_closed_after) = S ((S (wpo_source_step_closed_after)) * v)) /\ exists wpo_beta_quotient_step_closed_after_inverse_entry. u = wpo_beta_quotient_step_closed_after_inverse_entry * S ((S (wpo_source_step_closed_after)) * v) + (wpo_mate_step_closed_after))) -> exists wpo_mate_position_step_closed_after. ((exists wpo_gap_step_closed_after_mate_bound. wpo_gap_step_closed_after_mate_bound + S (wpo_mate_position_step_closed_after) = S (S l)) /\ (((exists wpo_beta_height_step_closed_after_mate_entry. wpo_beta_height_step_closed_after_mate_entry + S (wpo_mate_step_closed_after) = S ((S (wpo_mate_position_step_closed_after)) * d)) /\ exists wpo_beta_quotient_step_closed_after_mate_entry. z = wpo_beta_quotient_step_closed_after_mate_entry * S ((S (wpo_mate_position_step_closed_after)) * d) + (wpo_mate_step_closed_after))))) /\ (forall wpo_position_step_nonendpoint_after wpo_value_step_nonendpoint_after. (exists wpo_gap_step_nonendpoint_after_position_bound. wpo_gap_step_nonendpoint_after_position_bound + S (wpo_position_step_nonendpoint_after) = S (S l)) -> (((exists wpo_beta_height_step_nonendpoint_after_entry. wpo_beta_height_step_nonendpoint_after_entry + S (wpo_value_step_nonendpoint_after) = S ((S (wpo_position_step_nonendpoint_after)) * d)) /\ exists wpo_beta_quotient_step_nonendpoint_after_entry. z = wpo_beta_quotient_step_nonendpoint_after_entry * S ((S (wpo_position_step_nonendpoint_after)) * d) + (wpo_value_step_nonendpoint_after))) -> (~(wpo_value_step_nonendpoint_after = 0) /\ ~((S wpo_value_step_nonendpoint_after) = n)))))))))))))))Structural proof guide
Generated structural guide
Constructively choose one unused inverse orbit, append its two directions adjacently, and preserve the orbit-closed nonendpoint prefix invariants.
Use the direct prerequisites prime_choose_unused_nonendpoint_orbit, orbit_closed_unused_mate, beta_prefix_append_two_exists, beta_prefix_append_two_orbit_closed, beta_prefix_append_two_nonendpoint as previously established PA formulas.
The proof proceeds by case analysis (11), intermediate claims (5).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00AR prime_choose_unused_nonendpoint_orbit PA00AS orbit_closed_unused_mate PA009K beta_prefix_append_two_exists PA00AT beta_prefix_append_two_orbit_closed PA00AU beta_prefix_append_two_nonendpointDirect 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 p - 0002
intro n - 0003
intro u - 0004
intro v - 0005
intro b - 0006
intro c - 0007
intro l - 0008
intro r - 0009
intro hpn - 0010
intro hp - 0011
intro hprefix - 0012
intro hnr - 0013
intro hshort - 0014
intro hclosed - 0015
intro hnonendpoint - 0016
have horbit : exists i j. ((exists wpo_gap_choose_orbit_source_bound. wpo_gap_choose_orbit_source_bound + S (i) = n) /\ ((~(i = 0) /\ ~((S i) = n)) /\ ((~(exists wpo_index_choose_orbit_source_omit_contains. ((exists wpo_gap_choose_orbit_source_omit_contains_bound. wpo_gap_choose_orbit_source_omit_contains_bound + S (wpo_index_choose_orbit_source_omit_contains) = l) /\ (((exists wpo_beta_height_choose_orbit_source_omit_contains_entry. wpo_beta_height_choose_orbit_source_omit_contains_entry + S (i) = S ((S (wpo_index_choose_orbit_source_omit_contains)) * c)) /\ exists wpo_beta_quotient_choose_orbit_source_omit_contains_entry. b = wpo_beta_quotient_choose_orbit_source_omit_contains_entry * S ((S (wpo_index_choose_orbit_source_omit_contains)) * c) + (i)))))) /\ ((((exists wpo_beta_height_choose_orbit_forward. wpo_beta_height_choose_orbit_forward + S (j) = S ((S (i)) * v)) /\ exists wpo_beta_quotient_choose_orbit_forward. u = wpo_beta_quotient_choose_orbit_forward * S ((S (i)) * v) + (j))) /\ ((exists wpo_gap_choose_orbit_mate_bound. wpo_gap_choose_orbit_mate_bound + S (j) = n) /\ ((~(j = 0) /\ ~((S j) = n)) /\ (~(i = j) /\ (((exists wpo_beta_height_choose_orbit_back. wpo_beta_height_choose_orbit_back + S (i) = S ((S (j)) * v)) /\ exists wpo_beta_quotient_choose_orbit_back. u = wpo_beta_quotient_choose_orbit_back * S ((S (j)) * v) + (i)))))))))) - 0017
specialize prime_choose_unused_nonendpoint_orbit p - 0018
specialize prime_choose_unused_nonendpoint_orbit n - 0019
specialize prime_choose_unused_nonendpoint_orbit u - 0020
specialize prime_choose_unused_nonendpoint_orbit v - 0021
specialize prime_choose_unused_nonendpoint_orbit b - 0022
specialize prime_choose_unused_nonendpoint_orbit c - 0023
specialize prime_choose_unused_nonendpoint_orbit l - 0024
specialize prime_choose_unused_nonendpoint_orbit r - 0025
apply prime_choose_unused_nonendpoint_orbit - 0026
exact hpn - 0027
exact hp - 0028
exact hprefix - 0029
exact hnr - 0030
exact hshort - 0031
cases horbit - 0032
cases horbit_witness - 0033
cases horbit_witness_witness - 0034
cases horbit_witness_witness_right - 0035
cases horbit_witness_witness_right_right - 0036
cases horbit_witness_witness_right_right_right - 0037
cases horbit_witness_witness_right_right_right_right - 0038
cases horbit_witness_witness_right_right_right_right_right - 0039
cases horbit_witness_witness_right_right_right_right_right_right - 0040
have hmate_omit : ~(exists wpo_index_step_mate_omit_x1_contains. ((exists wpo_gap_step_mate_omit_x1_contains_bound. wpo_gap_step_mate_omit_x1_contains_bound + S (wpo_index_step_mate_omit_x1_contains) = l) /\ (((exists wpo_beta_height_step_mate_omit_x1_contains_entry. wpo_beta_height_step_mate_omit_x1_contains_entry + S (x1) = S ((S (wpo_index_step_mate_omit_x1_contains)) * c)) /\ exists wpo_beta_quotient_step_mate_omit_x1_contains_entry. b = wpo_beta_quotient_step_mate_omit_x1_contains_entry * S ((S (wpo_index_step_mate_omit_x1_contains)) * c) + (x1))))) - 0041
intro hmate_contains - 0042
specialize orbit_closed_unused_mate u - 0043
specialize orbit_closed_unused_mate v - 0044
specialize orbit_closed_unused_mate b - 0045
specialize orbit_closed_unused_mate c - 0046
specialize orbit_closed_unused_mate l - 0047
specialize orbit_closed_unused_mate x - 0048
specialize orbit_closed_unused_mate x1 - 0049
apply orbit_closed_unused_mate - 0050
exact hclosed - 0051
exact horbit_witness_witness_right_right_left - 0052
exact horbit_witness_witness_right_right_right_right_right_right_right - 0053
exact hmate_contains - 0054
have happend : exists z d. ((((exists wpo_beta_height_step_append_x_first. wpo_beta_height_step_append_x_first + S (x) = S ((S (l)) * d)) /\ exists wpo_beta_quotient_step_append_x_first. z = wpo_beta_quotient_step_append_x_first * S ((S (l)) * d) + (x))) /\ ((((exists wpo_beta_height_step_append_x_second. wpo_beta_height_step_append_x_second + S (x1) = S ((S (S (l))) * d)) /\ exists wpo_beta_quotient_step_append_x_second. z = wpo_beta_quotient_step_append_x_second * S ((S (S (l))) * d) + (x1))) /\ (forall wpo_old_index_step_append_x wpo_old_value_step_append_x. (exists wpo_gap_step_append_x_old_bound. wpo_gap_step_append_x_old_bound + S (wpo_old_index_step_append_x) = l) -> (((exists wpo_beta_height_step_append_x_old_entry. wpo_beta_height_step_append_x_old_entry + S (wpo_old_value_step_append_x) = S ((S (wpo_old_index_step_append_x)) * c)) /\ exists wpo_beta_quotient_step_append_x_old_entry. b = wpo_beta_quotient_step_append_x_old_entry * S ((S (wpo_old_index_step_append_x)) * c) + (wpo_old_value_step_append_x))) -> (((exists wpo_beta_height_step_append_x_new_entry. wpo_beta_height_step_append_x_new_entry + S (wpo_old_value_step_append_x) = S ((S (wpo_old_index_step_append_x)) * d)) /\ exists wpo_beta_quotient_step_append_x_new_entry. z = wpo_beta_quotient_step_append_x_new_entry * S ((S (wpo_old_index_step_append_x)) * d) + (wpo_old_value_step_append_x)))))) - 0055
specialize beta_prefix_append_two_exists b - 0056
specialize beta_prefix_append_two_exists c - 0057
specialize beta_prefix_append_two_exists l - 0058
specialize beta_prefix_append_two_exists x - 0059
specialize beta_prefix_append_two_exists x1 - 0060
exact beta_prefix_append_two_exists - 0061
cases happend - 0062
cases happend_witness - 0063
have hclosed_after : forall wpo_position_step_closed_after_x wpo_source_step_closed_after_x wpo_mate_step_closed_after_x. (exists wpo_gap_step_closed_after_x_position_bound. wpo_gap_step_closed_after_x_position_bound + S (wpo_position_step_closed_after_x) = S (S l)) -> (((exists wpo_beta_height_step_closed_after_x_source_entry. wpo_beta_height_step_closed_after_x_source_entry + S (wpo_source_step_closed_after_x) = S ((S (wpo_position_step_closed_after_x)) * x3)) /\ exists wpo_beta_quotient_step_closed_after_x_source_entry. x2 = wpo_beta_quotient_step_closed_after_x_source_entry * S ((S (wpo_position_step_closed_after_x)) * x3) + (wpo_source_step_closed_after_x))) -> (((exists wpo_beta_height_step_closed_after_x_inverse_entry. wpo_beta_height_step_closed_after_x_inverse_entry + S (wpo_mate_step_closed_after_x) = S ((S (wpo_source_step_closed_after_x)) * v)) /\ exists wpo_beta_quotient_step_closed_after_x_inverse_entry. u = wpo_beta_quotient_step_closed_after_x_inverse_entry * S ((S (wpo_source_step_closed_after_x)) * v) + (wpo_mate_step_closed_after_x))) -> exists wpo_mate_position_step_closed_after_x. ((exists wpo_gap_step_closed_after_x_mate_bound. wpo_gap_step_closed_after_x_mate_bound + S (wpo_mate_position_step_closed_after_x) = S (S l)) /\ (((exists wpo_beta_height_step_closed_after_x_mate_entry. wpo_beta_height_step_closed_after_x_mate_entry + S (wpo_mate_step_closed_after_x) = S ((S (wpo_mate_position_step_closed_after_x)) * x3)) /\ exists wpo_beta_quotient_step_closed_after_x_mate_entry. x2 = wpo_beta_quotient_step_closed_after_x_mate_entry * S ((S (wpo_mate_position_step_closed_after_x)) * x3) + (wpo_mate_step_closed_after_x)))) - 0064
specialize beta_prefix_append_two_orbit_closed u - 0065
specialize beta_prefix_append_two_orbit_closed v - 0066
specialize beta_prefix_append_two_orbit_closed b - 0067
specialize beta_prefix_append_two_orbit_closed c - 0068
specialize beta_prefix_append_two_orbit_closed x2 - 0069
specialize beta_prefix_append_two_orbit_closed x3 - 0070
specialize beta_prefix_append_two_orbit_closed l - 0071
specialize beta_prefix_append_two_orbit_closed x - 0072
specialize beta_prefix_append_two_orbit_closed x1 - 0073
apply beta_prefix_append_two_orbit_closed - 0074
exact happend_witness_witness - 0075
exact hclosed - 0076
exact horbit_witness_witness_right_right_right_left - 0077
exact horbit_witness_witness_right_right_right_right_right_right_right - 0078
have hnonendpoint_after : forall wpo_position_step_nonendpoint_after_x wpo_value_step_nonendpoint_after_x. (exists wpo_gap_step_nonendpoint_after_x_position_bound. wpo_gap_step_nonendpoint_after_x_position_bound + S (wpo_position_step_nonendpoint_after_x) = S (S l)) -> (((exists wpo_beta_height_step_nonendpoint_after_x_entry. wpo_beta_height_step_nonendpoint_after_x_entry + S (wpo_value_step_nonendpoint_after_x) = S ((S (wpo_position_step_nonendpoint_after_x)) * x3)) /\ exists wpo_beta_quotient_step_nonendpoint_after_x_entry. x2 = wpo_beta_quotient_step_nonendpoint_after_x_entry * S ((S (wpo_position_step_nonendpoint_after_x)) * x3) + (wpo_value_step_nonendpoint_after_x))) -> (~(wpo_value_step_nonendpoint_after_x = 0) /\ ~((S wpo_value_step_nonendpoint_after_x) = n)) - 0079
specialize beta_prefix_append_two_nonendpoint b - 0080
specialize beta_prefix_append_two_nonendpoint c - 0081
specialize beta_prefix_append_two_nonendpoint x2 - 0082
specialize beta_prefix_append_two_nonendpoint x3 - 0083
specialize beta_prefix_append_two_nonendpoint l - 0084
specialize beta_prefix_append_two_nonendpoint n - 0085
specialize beta_prefix_append_two_nonendpoint x - 0086
specialize beta_prefix_append_two_nonendpoint x1 - 0087
apply beta_prefix_append_two_nonendpoint - 0088
exact happend_witness_witness - 0089
exact hnonendpoint - 0090
exact horbit_witness_witness_right_left - 0091
exact horbit_witness_witness_right_right_right_right_right_left - 0092
exists x2 - 0093
exists x3 - 0094
exists x - 0095
exists x1 - 0096
split - 0097
exact happend_witness_witness - 0098
split - 0099
exact horbit_witness_witness_left - 0100
split - 0101
exact horbit_witness_witness_right_left - 0102
split - 0103
exact horbit_witness_witness_right_right_left - 0104
split - 0105
exact horbit_witness_witness_right_right_right_left - 0106
split - 0107
exact horbit_witness_witness_right_right_right_right_left - 0108
split - 0109
exact horbit_witness_witness_right_right_right_right_right_left - 0110
split - 0111
exact horbit_witness_witness_right_right_right_right_right_right_left - 0112
split - 0113
exact horbit_witness_witness_right_right_right_right_right_right_right - 0114
split - 0115
exact hmate_omit - 0116
split - 0117
exact hclosed_after - 0118
exact hnonendpoint_after