PA00BA

paired_pair_order_product_one_exists

Alpha v16 checked-use theorem · independently closed; not Stable

The complete successor-lifted nonendpoint factor product is one modulo p.

Exact expanded PA statement

forall p n u v b c m. (forall wip_index_wsl_inverse. (exists wip_gap_wsl_inverse_prefix_bound. wip_gap_wsl_inverse_prefix_bound + S wip_index_wsl_inverse = n) -> exists wip_mate_wsl_inverse. ((((exists wip_beta_height_wsl_inverse_decoded. wip_beta_height_wsl_inverse_decoded + S (wip_mate_wsl_inverse) = S ((S (wip_index_wsl_inverse)) * v)) /\ exists wip_beta_quotient_wsl_inverse_decoded. u = wip_beta_quotient_wsl_inverse_decoded * S ((S (wip_index_wsl_inverse)) * v) + (wip_mate_wsl_inverse))) /\ ((exists wip_gap_wsl_inverse_inverse_index_bound. wip_gap_wsl_inverse_inverse_index_bound + S wip_index_wsl_inverse = n) /\ ((exists wip_gap_wsl_inverse_inverse_mate_bound. wip_gap_wsl_inverse_inverse_mate_bound + S wip_mate_wsl_inverse = n) /\ (exists wip_mod_left_wsl_inverse_inverse_mod wip_mod_right_wsl_inverse_inverse_mod. ((S wip_index_wsl_inverse) * S wip_mate_wsl_inverse) + p * wip_mod_left_wsl_inverse_inverse_mod = 1 + p * wip_mod_right_wsl_inverse_inverse_mod))))) -> (forall fom_index_wsl_bounded. (exists fom_gap_wsl_bounded_index_bound. fom_gap_wsl_bounded_index_bound + S (fom_index_wsl_bounded) = m + m) -> exists fom_value_wsl_bounded. ((((exists fom_beta_height_wsl_bounded_entry. fom_beta_height_wsl_bounded_entry + S (fom_value_wsl_bounded) = S ((S (fom_index_wsl_bounded)) * c)) /\ exists fom_beta_quotient_wsl_bounded_entry. b = fom_beta_quotient_wsl_bounded_entry * S ((S (fom_index_wsl_bounded)) * c) + (fom_value_wsl_bounded))) /\ (exists fom_gap_wsl_bounded_value_bound. fom_gap_wsl_bounded_value_bound + S (fom_value_wsl_bounded) = n))) -> (forall wpop_pair_wsl_pairs. (exists wpo_gap_wsl_pairs_pair_bound. wpo_gap_wsl_pairs_pair_bound + S (wpop_pair_wsl_pairs) = m) -> exists wpop_left_wsl_pairs wpop_right_wsl_pairs. ((((exists wpo_beta_height_wsl_pairs_left_entry. wpo_beta_height_wsl_pairs_left_entry + S (wpop_left_wsl_pairs) = S ((S (wpop_pair_wsl_pairs + wpop_pair_wsl_pairs)) * c)) /\ exists wpo_beta_quotient_wsl_pairs_left_entry. b = wpo_beta_quotient_wsl_pairs_left_entry * S ((S (wpop_pair_wsl_pairs + wpop_pair_wsl_pairs)) * c) + (wpop_left_wsl_pairs))) /\ ((((exists wpo_beta_height_wsl_pairs_right_entry. wpo_beta_height_wsl_pairs_right_entry + S (wpop_right_wsl_pairs) = S ((S (S (wpop_pair_wsl_pairs + wpop_pair_wsl_pairs))) * c)) /\ exists wpo_beta_quotient_wsl_pairs_right_entry. b = wpo_beta_quotient_wsl_pairs_right_entry * S ((S (S (wpop_pair_wsl_pairs + wpop_pair_wsl_pairs))) * c) + (wpop_right_wsl_pairs))) /\ (((exists wpo_beta_height_wsl_pairs_inverse_entry. wpo_beta_height_wsl_pairs_inverse_entry + S (wpop_right_wsl_pairs) = S ((S (wpop_left_wsl_pairs)) * v)) /\ exists wpo_beta_quotient_wsl_pairs_inverse_entry. u = wpo_beta_quotient_wsl_pairs_inverse_entry * S ((S (wpop_left_wsl_pairs)) * v) + (wpop_right_wsl_pairs)))))) -> (exists f g Q. ((forall wsl_index_wsl_lift wsl_value_wsl_lift. (exists wpo_gap_wsl_lift_bound. wpo_gap_wsl_lift_bound + S (wsl_index_wsl_lift) = m + m) -> (((exists wpo_beta_height_wsl_lift_source. wpo_beta_height_wsl_lift_source + S (wsl_value_wsl_lift) = S ((S (wsl_index_wsl_lift)) * c)) /\ exists wpo_beta_quotient_wsl_lift_source. b = wpo_beta_quotient_wsl_lift_source * S ((S (wsl_index_wsl_lift)) * c) + (wsl_value_wsl_lift))) -> (((exists wpo_beta_height_wsl_lift_target. wpo_beta_height_wsl_lift_target + S (S wsl_value_wsl_lift) = S ((S (wsl_index_wsl_lift)) * g)) /\ exists wpo_beta_quotient_wsl_lift_target. f = wpo_beta_quotient_wsl_lift_target * S ((S (wsl_index_wsl_lift)) * g) + (S wsl_value_wsl_lift)))) /\ ((forall wpp_pair_wsl_adjacent wpp_left_wsl_adjacent wpp_right_wsl_adjacent. (exists wpp_gap_wsl_adjacent_pair_bound. wpp_gap_wsl_adjacent_pair_bound + S (wpp_pair_wsl_adjacent) = m) -> (((exists wpp_beta_height_wsl_adjacent_left_entry. wpp_beta_height_wsl_adjacent_left_entry + S (wpp_left_wsl_adjacent) = S ((S ((wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g)) /\ exists wpp_beta_quotient_wsl_adjacent_left_entry. f = wpp_beta_quotient_wsl_adjacent_left_entry * S ((S ((wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g) + (wpp_left_wsl_adjacent))) -> (((exists wpp_beta_height_wsl_adjacent_right_entry. wpp_beta_height_wsl_adjacent_right_entry + S (wpp_right_wsl_adjacent) = S ((S (S (wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g)) /\ exists wpp_beta_quotient_wsl_adjacent_right_entry. f = wpp_beta_quotient_wsl_adjacent_right_entry * S ((S (S (wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g) + (wpp_right_wsl_adjacent))) -> (exists wpp_mod_left_wsl_adjacent_pair_mod wpp_mod_right_wsl_adjacent_pair_mod. (wpp_left_wsl_adjacent * wpp_right_wsl_adjacent) + p * wpp_mod_left_wsl_adjacent_pair_mod = (1) + p * wpp_mod_right_wsl_adjacent_pair_mod)) /\ ((exists wpp_trace_code_wsl_product wpp_trace_scale_wsl_product. ((((exists wpp_beta_height_wsl_product_start. wpp_beta_height_wsl_product_start + S (1) = S ((S (0)) * wpp_trace_scale_wsl_product)) /\ exists wpp_beta_quotient_wsl_product_start. wpp_trace_code_wsl_product = wpp_beta_quotient_wsl_product_start * S ((S (0)) * wpp_trace_scale_wsl_product) + (1))) /\ ((((exists wpp_beta_height_wsl_product_terminal. wpp_beta_height_wsl_product_terminal + S (Q) = S ((S (m + m)) * wpp_trace_scale_wsl_product)) /\ exists wpp_beta_quotient_wsl_product_terminal. wpp_trace_code_wsl_product = wpp_beta_quotient_wsl_product_terminal * S ((S (m + m)) * wpp_trace_scale_wsl_product) + (Q))) /\ forall wpp_index_wsl_product. (exists wpp_gap_wsl_product_bound. wpp_gap_wsl_product_bound + S (wpp_index_wsl_product) = m + m) -> exists wpp_factor_wsl_product wpp_prefix_wsl_product wpp_successor_wsl_product. ((((exists wpp_beta_height_wsl_product_factor. wpp_beta_height_wsl_product_factor + S (wpp_factor_wsl_product) = S ((S (wpp_index_wsl_product)) * g)) /\ exists wpp_beta_quotient_wsl_product_factor. f = wpp_beta_quotient_wsl_product_factor * S ((S (wpp_index_wsl_product)) * g) + (wpp_factor_wsl_product))) /\ ((((exists wpp_beta_height_wsl_product_prefix. wpp_beta_height_wsl_product_prefix + S (wpp_prefix_wsl_product) = S ((S (wpp_index_wsl_product)) * wpp_trace_scale_wsl_product)) /\ exists wpp_beta_quotient_wsl_product_prefix. wpp_trace_code_wsl_product = wpp_beta_quotient_wsl_product_prefix * S ((S (wpp_index_wsl_product)) * wpp_trace_scale_wsl_product) + (wpp_prefix_wsl_product))) /\ ((((exists wpp_beta_height_wsl_product_successor. wpp_beta_height_wsl_product_successor + S (wpp_successor_wsl_product) = S ((S (S (wpp_index_wsl_product))) * wpp_trace_scale_wsl_product)) /\ exists wpp_beta_quotient_wsl_product_successor. wpp_trace_code_wsl_product = wpp_beta_quotient_wsl_product_successor * S ((S (S (wpp_index_wsl_product))) * wpp_trace_scale_wsl_product) + (wpp_successor_wsl_product))) /\ wpp_successor_wsl_product = wpp_prefix_wsl_product * wpp_factor_wsl_product)))))) /\ (exists wpp_mod_left_wsl_product_mod_one wpp_mod_right_wsl_product_mod_one. (Q) + p * wpp_mod_left_wsl_product_mod_one = (1) + p * wpp_mod_right_wsl_product_mod_one)))))

Structural proof guide

Generated structural guide

The complete successor-lifted nonendpoint factor product is one modulo p.

Use the direct prerequisites paired_pair_order_factor_code_exists, beta_product_exists, beta_adjacent_unit_pairs_product_one as previously established PA formulas.

The proof proceeds by case analysis (6), intermediate claims (1).

Referenced ingredients

Proof neighborhood

Direct dependencies

Direct 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.

  1. 0001intro p
  2. 0002intro n
  3. 0003intro u
  4. 0004intro v
  5. 0005intro b
  6. 0006intro c
  7. 0007intro m
  8. 0008intro hinverse
  9. 0009intro hbounded
  10. 0010intro hpairs
  11. 0011have hfactors : exists f g. ((forall wsl_index_wsl_lift wsl_value_wsl_lift. (exists wpo_gap_wsl_lift_bound. wpo_gap_wsl_lift_bound + S (wsl_index_wsl_lift) = m + m) -> (((exists wpo_beta_height_wsl_lift_source. wpo_beta_height_wsl_lift_source + S (wsl_value_wsl_lift) = S ((S (wsl_index_wsl_lift)) * c)) /\ exists wpo_beta_quotient_wsl_lift_source. b = wpo_beta_quotient_wsl_lift_source * S ((S (wsl_index_wsl_lift)) * c) + (wsl_value_wsl_lift))) -> (((exists wpo_beta_height_wsl_lift_target. wpo_beta_height_wsl_lift_target + S (S wsl_value_wsl_lift) = S ((S (wsl_index_wsl_lift)) * g)) /\ exists wpo_beta_quotient_wsl_lift_target. f = wpo_beta_quotient_wsl_lift_target * S ((S (wsl_index_wsl_lift)) * g) + (S wsl_value_wsl_lift)))) /\ (forall wpp_pair_wsl_adjacent wpp_left_wsl_adjacent wpp_right_wsl_adjacent. (exists wpp_gap_wsl_adjacent_pair_bound. wpp_gap_wsl_adjacent_pair_bound + S (wpp_pair_wsl_adjacent) = m) -> (((exists wpp_beta_height_wsl_adjacent_left_entry. wpp_beta_height_wsl_adjacent_left_entry + S (wpp_left_wsl_adjacent) = S ((S ((wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g)) /\ exists wpp_beta_quotient_wsl_adjacent_left_entry. f = wpp_beta_quotient_wsl_adjacent_left_entry * S ((S ((wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g) + (wpp_left_wsl_adjacent))) -> (((exists wpp_beta_height_wsl_adjacent_right_entry. wpp_beta_height_wsl_adjacent_right_entry + S (wpp_right_wsl_adjacent) = S ((S (S (wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g)) /\ exists wpp_beta_quotient_wsl_adjacent_right_entry. f = wpp_beta_quotient_wsl_adjacent_right_entry * S ((S (S (wpp_pair_wsl_adjacent + wpp_pair_wsl_adjacent))) * g) + (wpp_right_wsl_adjacent))) -> (exists wpp_mod_left_wsl_adjacent_pair_mod wpp_mod_right_wsl_adjacent_pair_mod. (wpp_left_wsl_adjacent * wpp_right_wsl_adjacent) + p * wpp_mod_left_wsl_adjacent_pair_mod = (1) + p * wpp_mod_right_wsl_adjacent_pair_mod)))
  12. 0012specialize paired_pair_order_factor_code_exists p
  13. 0013specialize paired_pair_order_factor_code_exists n
  14. 0014specialize paired_pair_order_factor_code_exists u
  15. 0015specialize paired_pair_order_factor_code_exists v
  16. 0016specialize paired_pair_order_factor_code_exists b
  17. 0017specialize paired_pair_order_factor_code_exists c
  18. 0018specialize paired_pair_order_factor_code_exists m
  19. 0019apply paired_pair_order_factor_code_exists
  20. 0020exact hinverse
  21. 0021exact hbounded
  22. 0022exact hpairs
  23. 0023cases hfactors
  24. 0024cases hfactors_witness
  25. 0025cases hfactors_witness_witness
  26. 0026specialize beta_product_exists x
  27. 0027specialize beta_product_exists x1
  28. 0028specialize beta_product_exists (m + m)
  29. 0029cases beta_product_exists
  30. 0030cases beta_product_exists_witness
  31. 0031cases beta_product_exists_witness_witness
  32. 0032exists x
  33. 0033exists x1
  34. 0034exists x2
  35. 0035split
  36. 0036exact hfactors_witness_witness_left
  37. 0037split
  38. 0038exact hfactors_witness_witness_right
  39. 0039split
  40. 0040exists x3
  41. 0041exists x4
  42. 0042exact beta_product_exists_witness_witness_witness
  43. 0043specialize beta_adjacent_unit_pairs_product_one p
  44. 0044specialize beta_adjacent_unit_pairs_product_one x
  45. 0045specialize beta_adjacent_unit_pairs_product_one x1
  46. 0046specialize beta_adjacent_unit_pairs_product_one m
  47. 0047specialize beta_adjacent_unit_pairs_product_one x2
  48. 0048apply beta_adjacent_unit_pairs_product_one
  49. 0049exact hfactors_witness_witness_right
  50. 0050exists x3
  51. 0051exists x4
  52. 0052exact beta_product_exists_witness_witness_witness