PA00BD · theorem

pair_order_terminal_successor_product_eq_range_two

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

The lifted terminal product equals the product of the canonical nonendpoint range.

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.

Statement with defined notation

∀ b. ∀ c. ∀ r. ∀ s. ∀ z. ∀ d. ∀ f. ∀ g. ∀ l. ∀ P. ∀ Q. (∀ x. Lt(x,l) → ∃ y. BetaAt(b,c,x,y) ∧ (Lt(0,y)Le(y,l))) → InjectivePrefix(b,c,l) → (∀ x. ∀ y. Lt(x,l)BetaAt(b,c,x,S y)BetaAt(r,s,x,y)) → (∀ x. ∀ y. Lt(x,l)BetaAt(b,c,x,y)BetaAt(f,g,x,S y)) → Range(z,d,2,l)Product(z,d,l,P)Product(f,g,l,Q) → P = Q

Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.

Definitions used by this theorem

In the theorem statement

14 occurrences

In local proof propositions

6 occurrences

Exact expanded native-PA statement
forall b c r s z d f g l P Q. (forall gmp_index_wtp_alignment_range. (exists gsp_lt_gap_wtp_alignment_range_index_bound. gsp_lt_gap_wtp_alignment_range_index_bound + S gmp_index_wtp_alignment_range = l) -> exists gmp_magnitude_wtp_alignment_range. ((((exists ff_h_gmp_wtp_alignment_range_decoded. ff_h_gmp_wtp_alignment_range_decoded + S (gmp_magnitude_wtp_alignment_range) = S ((S (gmp_index_wtp_alignment_range)) * c)) /\ exists ff_q_gmp_wtp_alignment_range_decoded. b = ff_q_gmp_wtp_alignment_range_decoded * S ((S (gmp_index_wtp_alignment_range)) * c) + (gmp_magnitude_wtp_alignment_range))) /\ ((exists gsp_lt_gap_wtp_alignment_range_positive. gsp_lt_gap_wtp_alignment_range_positive + S 0 = gmp_magnitude_wtp_alignment_range) /\ (exists gsp_le_gap_wtp_alignment_range_bounded. gsp_le_gap_wtp_alignment_range_bounded + gmp_magnitude_wtp_alignment_range = l)))) -> (forall fp_i_wtp_source_injective fp_j_wtp_source_injective fp_value_wtp_source_injective. (exists fp_gap_wtp_source_injective_i. fp_gap_wtp_source_injective_i + S fp_i_wtp_source_injective = l) -> (exists fp_gap_wtp_source_injective_j. fp_gap_wtp_source_injective_j + S fp_j_wtp_source_injective = l) -> (((exists ff_h_wtp_source_injective_left. ff_h_wtp_source_injective_left + S (fp_value_wtp_source_injective) = S ((S (fp_i_wtp_source_injective)) * c)) /\ exists ff_q_wtp_source_injective_left. b = ff_q_wtp_source_injective_left * S ((S (fp_i_wtp_source_injective)) * c) + (fp_value_wtp_source_injective))) -> (((exists ff_h_wtp_source_injective_right. ff_h_wtp_source_injective_right + S (fp_value_wtp_source_injective) = S ((S (fp_j_wtp_source_injective)) * c)) /\ exists ff_q_wtp_source_injective_right. b = ff_q_wtp_source_injective_right * S ((S (fp_j_wtp_source_injective)) * c) + (fp_value_wtp_source_injective))) -> fp_i_wtp_source_injective = fp_j_wtp_source_injective) -> (forall gmp_index_wtp_alignment_recode gmp_predecessor_wtp_alignment_recode. (exists gsp_lt_gap_wtp_alignment_recode_index_bound. gsp_lt_gap_wtp_alignment_recode_index_bound + S gmp_index_wtp_alignment_recode = l) -> (((exists gsp_beta_height_gmp_wtp_alignment_recode_source. gsp_beta_height_gmp_wtp_alignment_recode_source + S (S gmp_predecessor_wtp_alignment_recode) = S ((S (gmp_index_wtp_alignment_recode)) * c)) /\ exists gsp_beta_quotient_gmp_wtp_alignment_recode_source. b = gsp_beta_quotient_gmp_wtp_alignment_recode_source * S ((S (gmp_index_wtp_alignment_recode)) * c) + (S gmp_predecessor_wtp_alignment_recode))) -> (((exists ff_h_gmp_wtp_alignment_recode_target. ff_h_gmp_wtp_alignment_recode_target + S (gmp_predecessor_wtp_alignment_recode) = S ((S (gmp_index_wtp_alignment_recode)) * s)) /\ exists ff_q_gmp_wtp_alignment_recode_target. r = ff_q_gmp_wtp_alignment_recode_target * S ((S (gmp_index_wtp_alignment_recode)) * s) + (gmp_predecessor_wtp_alignment_recode)))) -> (forall wsl_index_wtp_alignment_lift wsl_value_wtp_alignment_lift. (exists wpo_gap_wtp_alignment_lift_bound. wpo_gap_wtp_alignment_lift_bound + S (wsl_index_wtp_alignment_lift) = l) -> (((exists wpo_beta_height_wtp_alignment_lift_source. wpo_beta_height_wtp_alignment_lift_source + S (wsl_value_wtp_alignment_lift) = S ((S (wsl_index_wtp_alignment_lift)) * c)) /\ exists wpo_beta_quotient_wtp_alignment_lift_source. b = wpo_beta_quotient_wtp_alignment_lift_source * S ((S (wsl_index_wtp_alignment_lift)) * c) + (wsl_value_wtp_alignment_lift))) -> (((exists wpo_beta_height_wtp_alignment_lift_target. wpo_beta_height_wtp_alignment_lift_target + S (S wsl_value_wtp_alignment_lift) = S ((S (wsl_index_wtp_alignment_lift)) * g)) /\ exists wpo_beta_quotient_wtp_alignment_lift_target. f = wpo_beta_quotient_wtp_alignment_lift_target * S ((S (wsl_index_wtp_alignment_lift)) * g) + (S wsl_value_wtp_alignment_lift)))) -> (forall wtp_range_index_wtp_alignment_range_two. (exists wtp_range_gap_wtp_alignment_range_two. wtp_range_gap_wtp_alignment_range_two + S wtp_range_index_wtp_alignment_range_two = l) -> (((exists ff_h_wtp_alignment_range_two_decoded. ff_h_wtp_alignment_range_two_decoded + S (2 + wtp_range_index_wtp_alignment_range_two) = S ((S (wtp_range_index_wtp_alignment_range_two)) * d)) /\ exists ff_q_wtp_alignment_range_two_decoded. z = ff_q_wtp_alignment_range_two_decoded * S ((S (wtp_range_index_wtp_alignment_range_two)) * d) + (2 + wtp_range_index_wtp_alignment_range_two)))) -> (exists ff_u_wtp_canonical_product ff_v_wtp_canonical_product. ((((exists ff_h_wtp_canonical_product_start. ff_h_wtp_canonical_product_start + S (1) = S ((S (0)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_start. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_start * S ((S (0)) * ff_v_wtp_canonical_product) + (1))) /\ ((((exists ff_h_wtp_canonical_product_terminal. ff_h_wtp_canonical_product_terminal + S (P) = S ((S (l)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_terminal. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_terminal * S ((S (l)) * ff_v_wtp_canonical_product) + (P))) /\ forall ff_i_wtp_canonical_product. (exists ff_lt_wtp_canonical_product_bound. ff_lt_wtp_canonical_product_bound + S ff_i_wtp_canonical_product = l) -> exists ff_p_wtp_canonical_product ff_r_wtp_canonical_product ff_s_wtp_canonical_product. ((((exists ff_h_wtp_canonical_product_factor. ff_h_wtp_canonical_product_factor + S (ff_p_wtp_canonical_product) = S ((S (ff_i_wtp_canonical_product)) * d)) /\ exists ff_q_wtp_canonical_product_factor. z = ff_q_wtp_canonical_product_factor * S ((S (ff_i_wtp_canonical_product)) * d) + (ff_p_wtp_canonical_product))) /\ ((((exists ff_h_wtp_canonical_product_partial. ff_h_wtp_canonical_product_partial + S (ff_r_wtp_canonical_product) = S ((S (ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_partial. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_partial * S ((S (ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product) + (ff_r_wtp_canonical_product))) /\ ((((exists ff_h_wtp_canonical_product_successor. ff_h_wtp_canonical_product_successor + S (ff_s_wtp_canonical_product) = S ((S (S ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product)) /\ exists ff_q_wtp_canonical_product_successor. ff_u_wtp_canonical_product = ff_q_wtp_canonical_product_successor * S ((S (S ff_i_wtp_canonical_product)) * ff_v_wtp_canonical_product) + (ff_s_wtp_canonical_product))) /\ ff_s_wtp_canonical_product = ff_r_wtp_canonical_product * ff_p_wtp_canonical_product)))))) -> (exists ff_u_wtp_lifted_product ff_v_wtp_lifted_product. ((((exists ff_h_wtp_lifted_product_start. ff_h_wtp_lifted_product_start + S (1) = S ((S (0)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_start. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_start * S ((S (0)) * ff_v_wtp_lifted_product) + (1))) /\ ((((exists ff_h_wtp_lifted_product_terminal. ff_h_wtp_lifted_product_terminal + S (Q) = S ((S (l)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_terminal. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_terminal * S ((S (l)) * ff_v_wtp_lifted_product) + (Q))) /\ forall ff_i_wtp_lifted_product. (exists ff_lt_wtp_lifted_product_bound. ff_lt_wtp_lifted_product_bound + S ff_i_wtp_lifted_product = l) -> exists ff_p_wtp_lifted_product ff_r_wtp_lifted_product ff_s_wtp_lifted_product. ((((exists ff_h_wtp_lifted_product_factor. ff_h_wtp_lifted_product_factor + S (ff_p_wtp_lifted_product) = S ((S (ff_i_wtp_lifted_product)) * g)) /\ exists ff_q_wtp_lifted_product_factor. f = ff_q_wtp_lifted_product_factor * S ((S (ff_i_wtp_lifted_product)) * g) + (ff_p_wtp_lifted_product))) /\ ((((exists ff_h_wtp_lifted_product_partial. ff_h_wtp_lifted_product_partial + S (ff_r_wtp_lifted_product) = S ((S (ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_partial. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_partial * S ((S (ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product) + (ff_r_wtp_lifted_product))) /\ ((((exists ff_h_wtp_lifted_product_successor. ff_h_wtp_lifted_product_successor + S (ff_s_wtp_lifted_product) = S ((S (S ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product)) /\ exists ff_q_wtp_lifted_product_successor. ff_u_wtp_lifted_product = ff_q_wtp_lifted_product_successor * S ((S (S ff_i_wtp_lifted_product)) * ff_v_wtp_lifted_product) + (ff_s_wtp_lifted_product))) /\ ff_s_wtp_lifted_product = ff_r_wtp_lifted_product * ff_p_wtp_lifted_product)))))) -> P = Q

Proof neighborhood

Direct theorem prerequisites

Direct theorem dependents

Definition-aware tactic body

Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.

Read the argument

Proof checkpoints

67 script commands · 7 reading checkpoints · 3 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (4)
01Fix variables and assumptionsL1–10

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro r
  4. L4
    intro s
  5. L5
    intro z
  6. L6
    intro d
  7. L7
    intro f
  8. L8
    intro g
  9. L9
    intro l
  10. L10
    intro P
02Fix variables and assumptionsL11–18

Work with arbitrary variables or the premises of the current implication.

  1. L11
    intro Q
  2. L12
    intro hrange
  3. L13
    intro hinjective
  4. L14
    intro hrecode
  5. L15
    intro hlift
  6. L16
    intro hcanonical
  7. L17
    intro hcanonical_product
  8. L18
    intro hlifted_product
03Establish hboundedL19–27

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta magnitude predecessor recode bounded.

  1. L19
    have hbounded : BoundedPrefix(r,s,l)Definitions: BoundedPrefix(r,s,l)Original native command in the exact edition
  2. L20
    specialize beta_magnitude_predecessor_recode_bounded b
  3. L21
    specialize beta_magnitude_predecessor_recode_bounded c
  4. L22
    specialize beta_magnitude_predecessor_recode_bounded r
  5. L23
    specialize beta_magnitude_predecessor_recode_bounded s
  6. L24
    specialize beta_magnitude_predecessor_recode_bounded l
  7. L25
    apply beta_magnitude_predecessor_recode_bounded
  8. L26
    exact hrange
  9. L27
    exact hrecode
04Establish hmap_injectiveL28–37

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta magnitude predecessor recode injective.

  1. L28
    have hmap_injective : InjectivePrefix(r,s,l)Definitions: InjectivePrefix(r,s,l)Original native command in the exact edition
  2. L29
    specialize beta_magnitude_predecessor_recode_injective b
  3. L30
    specialize beta_magnitude_predecessor_recode_injective c
  4. L31
    specialize beta_magnitude_predecessor_recode_injective r
  5. L32
    specialize beta_magnitude_predecessor_recode_injective s
  6. L33
    specialize beta_magnitude_predecessor_recode_injective l
  7. L34
    apply beta_magnitude_predecessor_recode_injective
  8. L35
    exact hrange
  9. L36
    exact hinjective
  10. L37
    exact hrecode
05Establish halignedL38–47

Establish this local claim before using it. It is not an additional assumption.

  1. L38
    have haligned : ∀ fpr_i_wtp_alignment. ∀ fpr_j_wtp_alignment. ∀ fpr_x_wtp_alignment. Lt(fpr_i_wtp_alignment,l) → BetaAt(r,s,fpr_i_wtp_alignment,fpr_j_wtp_alignment) → BetaAt(z,d,fpr_j_wtp_alignment,fpr_x_wtp_alignment) → BetaAt(f,g,fpr_i_wtp_alignment,fpr_x_wtp_alignment)Definitions: Lt(fpr_i_wtp_alignment,l)BetaAt(r,s,fpr_i_wtp_alignment,fpr_j_wtp_alignment)BetaAt(z,d,fpr_j_wtp_alignment,fpr_x_wtp_alignment)BetaAt(f,g,fpr_i_wtp_alignment,fpr_x_wtp_alignment)Original native command in the exact edition
  2. L39
    specialize pair_order_predecessor_range_two_successor_lift_aligned b
  3. L40
    specialize pair_order_predecessor_range_two_successor_lift_aligned c
  4. L41
    specialize pair_order_predecessor_range_two_successor_lift_aligned r
  5. L42
    specialize pair_order_predecessor_range_two_successor_lift_aligned s
  6. L43
    specialize pair_order_predecessor_range_two_successor_lift_aligned z
  7. L44
    specialize pair_order_predecessor_range_two_successor_lift_aligned d
  8. L45
    specialize pair_order_predecessor_range_two_successor_lift_aligned f
  9. L46
    specialize pair_order_predecessor_range_two_successor_lift_aligned g
  10. L47
    specialize pair_order_predecessor_range_two_successor_lift_aligned l
06Use earlier factsL48–57

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L48
    apply pair_order_predecessor_range_two_successor_lift_aligned
  2. L49
    exact hrange
  3. L50
    exact hrecode
  4. L51
    exact hlift
  5. L52
    exact hcanonical
  6. L53
    specialize beta_product_permutation_invariant l
  7. L54
    specialize beta_product_permutation_invariant r
  8. L55
    specialize beta_product_permutation_invariant s
  9. L56
    specialize beta_product_permutation_invariant z
  10. L57
    specialize beta_product_permutation_invariant d
07Use earlier factsL58–67

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L58
    specialize beta_product_permutation_invariant f
  2. L59
    specialize beta_product_permutation_invariant g
  3. L60
    specialize beta_product_permutation_invariant P
  4. L61
    specialize beta_product_permutation_invariant Q
  5. L62
    apply beta_product_permutation_invariant
  6. L63
    exact hbounded
  7. L64
    exact hmap_injective
  8. L65
    exact haligned
  9. L66
    exact hcanonical_product
  10. L67
    exact hlifted_product

Library-wide reading audit

Original defined command ledger · 67 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro r
  4. 0004intro s
  5. 0005intro z
  6. 0006intro d
  7. 0007intro f
  8. 0008intro g
  9. 0009intro l
  10. 0010intro P
  11. 0011intro Q
  12. 0012intro hrange
  13. 0013intro hinjective
  14. 0014intro hrecode
  15. 0015intro hlift
  16. 0016intro hcanonical
  17. 0017intro hcanonical_product
  18. 0018intro hlifted_product
  19. 0019have hbounded : BoundedPrefix(r,s,l)
    Exact native replay linehave hbounded : forall fp_i_wtp_predecessor_bounded. (exists fp_gap_wtp_predecessor_bounded_index. fp_gap_wtp_predecessor_bounded_index + S fp_i_wtp_predecessor_bounded = l) -> exists fp_value_wtp_predecessor_bounded. ((((exists ff_h_wtp_predecessor_bounded_entry. ff_h_wtp_predecessor_bounded_entry + S (fp_value_wtp_predecessor_bounded) = S ((S (fp_i_wtp_predecessor_bounded)) * s)) /\ exists ff_q_wtp_predecessor_bounded_entry. r = ff_q_wtp_predecessor_bounded_entry * S ((S (fp_i_wtp_predecessor_bounded)) * s) + (fp_value_wtp_predecessor_bounded))) /\ (exists fp_gap_wtp_predecessor_bounded_value. fp_gap_wtp_predecessor_bounded_value + S fp_value_wtp_predecessor_bounded = l))
  20. 0020specialize beta_magnitude_predecessor_recode_bounded b
  21. 0021specialize beta_magnitude_predecessor_recode_bounded c
  22. 0022specialize beta_magnitude_predecessor_recode_bounded r
  23. 0023specialize beta_magnitude_predecessor_recode_bounded s
  24. 0024specialize beta_magnitude_predecessor_recode_bounded l
  25. 0025apply beta_magnitude_predecessor_recode_bounded
  26. 0026exact hrange
  27. 0027exact hrecode
  28. 0028have hmap_injective : InjectivePrefix(r,s,l)
    Exact native replay linehave hmap_injective : forall fp_i_wtp_predecessor_injective fp_j_wtp_predecessor_injective fp_value_wtp_predecessor_injective. (exists fp_gap_wtp_predecessor_injective_i. fp_gap_wtp_predecessor_injective_i + S fp_i_wtp_predecessor_injective = l) -> (exists fp_gap_wtp_predecessor_injective_j. fp_gap_wtp_predecessor_injective_j + S fp_j_wtp_predecessor_injective = l) -> (((exists ff_h_wtp_predecessor_injective_left. ff_h_wtp_predecessor_injective_left + S (fp_value_wtp_predecessor_injective) = S ((S (fp_i_wtp_predecessor_injective)) * s)) /\ exists ff_q_wtp_predecessor_injective_left. r = ff_q_wtp_predecessor_injective_left * S ((S (fp_i_wtp_predecessor_injective)) * s) + (fp_value_wtp_predecessor_injective))) -> (((exists ff_h_wtp_predecessor_injective_right. ff_h_wtp_predecessor_injective_right + S (fp_value_wtp_predecessor_injective) = S ((S (fp_j_wtp_predecessor_injective)) * s)) /\ exists ff_q_wtp_predecessor_injective_right. r = ff_q_wtp_predecessor_injective_right * S ((S (fp_j_wtp_predecessor_injective)) * s) + (fp_value_wtp_predecessor_injective))) -> fp_i_wtp_predecessor_injective = fp_j_wtp_predecessor_injective
  29. 0029specialize beta_magnitude_predecessor_recode_injective b
  30. 0030specialize beta_magnitude_predecessor_recode_injective c
  31. 0031specialize beta_magnitude_predecessor_recode_injective r
  32. 0032specialize beta_magnitude_predecessor_recode_injective s
  33. 0033specialize beta_magnitude_predecessor_recode_injective l
  34. 0034apply beta_magnitude_predecessor_recode_injective
  35. 0035exact hrange
  36. 0036exact hinjective
  37. 0037exact hrecode
  38. 0038have haligned : ∀ fpr_i_wtp_alignment. ∀ fpr_j_wtp_alignment. ∀ fpr_x_wtp_alignment. Lt(fpr_i_wtp_alignment,l)BetaAt(r,s,fpr_i_wtp_alignment,fpr_j_wtp_alignment)BetaAt(z,d,fpr_j_wtp_alignment,fpr_x_wtp_alignment)BetaAt(f,g,fpr_i_wtp_alignment,fpr_x_wtp_alignment)
    Exact native replay linehave haligned : forall fpr_i_wtp_alignment fpr_j_wtp_alignment fpr_x_wtp_alignment. (exists fpr_h_wtp_alignment. fpr_h_wtp_alignment + S fpr_i_wtp_alignment = l) -> (((exists ff_h_wtp_alignment_map. ff_h_wtp_alignment_map + S (fpr_j_wtp_alignment) = S ((S (fpr_i_wtp_alignment)) * s)) /\ exists ff_q_wtp_alignment_map. r = ff_q_wtp_alignment_map * S ((S (fpr_i_wtp_alignment)) * s) + (fpr_j_wtp_alignment))) -> (((exists ff_h_wtp_alignment_source. ff_h_wtp_alignment_source + S (fpr_x_wtp_alignment) = S ((S (fpr_j_wtp_alignment)) * d)) /\ exists ff_q_wtp_alignment_source. z = ff_q_wtp_alignment_source * S ((S (fpr_j_wtp_alignment)) * d) + (fpr_x_wtp_alignment))) -> (((exists ff_h_wtp_alignment_target. ff_h_wtp_alignment_target + S (fpr_x_wtp_alignment) = S ((S (fpr_i_wtp_alignment)) * g)) /\ exists ff_q_wtp_alignment_target. f = ff_q_wtp_alignment_target * S ((S (fpr_i_wtp_alignment)) * g) + (fpr_x_wtp_alignment)))
  39. 0039specialize pair_order_predecessor_range_two_successor_lift_aligned b
  40. 0040specialize pair_order_predecessor_range_two_successor_lift_aligned c
  41. 0041specialize pair_order_predecessor_range_two_successor_lift_aligned r
  42. 0042specialize pair_order_predecessor_range_two_successor_lift_aligned s
  43. 0043specialize pair_order_predecessor_range_two_successor_lift_aligned z
  44. 0044specialize pair_order_predecessor_range_two_successor_lift_aligned d
  45. 0045specialize pair_order_predecessor_range_two_successor_lift_aligned f
  46. 0046specialize pair_order_predecessor_range_two_successor_lift_aligned g
  47. 0047specialize pair_order_predecessor_range_two_successor_lift_aligned l
  48. 0048apply pair_order_predecessor_range_two_successor_lift_aligned
  49. 0049exact hrange
  50. 0050exact hrecode
  51. 0051exact hlift
  52. 0052exact hcanonical
  53. 0053specialize beta_product_permutation_invariant l
  54. 0054specialize beta_product_permutation_invariant r
  55. 0055specialize beta_product_permutation_invariant s
  56. 0056specialize beta_product_permutation_invariant z
  57. 0057specialize beta_product_permutation_invariant d
  58. 0058specialize beta_product_permutation_invariant f
  59. 0059specialize beta_product_permutation_invariant g
  60. 0060specialize beta_product_permutation_invariant P
  61. 0061specialize beta_product_permutation_invariant Q
  62. 0062apply beta_product_permutation_invariant
  63. 0063exact hbounded
  64. 0064exact hmap_injective
  65. 0065exact haligned
  66. 0066exact hcanonical_product
  67. 0067exact hlifted_product