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
∀ p. ∀ q. ∀ h. ∀ k. ∀ i. p = 2 · h + 1 → q = 2 · k + 1 → Prime(p) → Prime(q) → ¬p = q → Lt(i,h) → ∃ x. ∃ y. ∃ z. (∀ n. Lt(n,k) → ∃ m. BetaAt(x,y,n,m) ∧ (m = 0 ∧ (Lt(q · S i,p · S n) ∧ ¬Lt(p · S n,q · S i)) ∨ m = 1 ∧ (Lt(p · S n,q · S i) ∧ ¬Lt(q · S i,p · S n)))) ∧ BitCount(x,y,k,z)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
10 occurrences
In local proof propositions
13 occurrences
Exact expanded native-PA statement
forall p q h k i. p = 2 * h + 1 -> q = 2 * k + 1 -> ((~(p = 1) /\ forall frp_prime_left_row_indicator_prime_p frp_prime_right_row_indicator_prime_p. p = frp_prime_left_row_indicator_prime_p * frp_prime_right_row_indicator_prime_p -> frp_prime_left_row_indicator_prime_p = 1 \/ frp_prime_right_row_indicator_prime_p = 1)) -> ((~(q = 1) /\ forall frp_prime_left_row_indicator_prime_q frp_prime_right_row_indicator_prime_q. q = frp_prime_left_row_indicator_prime_q * frp_prime_right_row_indicator_prime_q -> frp_prime_left_row_indicator_prime_q = 1 \/ frp_prime_right_row_indicator_prime_q = 1)) -> ~(p = q) -> (exists eri_gap_row_indicator_i_bound. eri_gap_row_indicator_i_bound + S (i) = h) -> (exists rb rc n. ((forall eri_column_row_indicator_counted_prefix. (exists eri_gap_row_indicator_counted_prefix_bound. eri_gap_row_indicator_counted_prefix_bound + S (eri_column_row_indicator_counted_prefix) = k) -> exists eri_bit_row_indicator_counted_prefix. ((((exists ff_h_eri_row_indicator_counted_prefix_decoded. ff_h_eri_row_indicator_counted_prefix_decoded + S (eri_bit_row_indicator_counted_prefix) = S ((S (eri_column_row_indicator_counted_prefix)) * rc)) /\ exists ff_q_eri_row_indicator_counted_prefix_decoded. rb = ff_q_eri_row_indicator_counted_prefix_decoded * S ((S (eri_column_row_indicator_counted_prefix)) * rc) + (eri_bit_row_indicator_counted_prefix))) /\ (((eri_bit_row_indicator_counted_prefix = 0 /\ ((exists eri_gap_row_indicator_counted_prefix_choice_left. eri_gap_row_indicator_counted_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_counted_prefix) /\ ~(exists eri_gap_row_indicator_counted_prefix_choice_right. eri_gap_row_indicator_counted_prefix_choice_right + S (p * S eri_column_row_indicator_counted_prefix) = q * S i))) \/ (eri_bit_row_indicator_counted_prefix = 1 /\ ((exists eri_gap_row_indicator_counted_prefix_choice_right. eri_gap_row_indicator_counted_prefix_choice_right + S (p * S eri_column_row_indicator_counted_prefix) = q * S i) /\ ~(exists eri_gap_row_indicator_counted_prefix_choice_left. eri_gap_row_indicator_counted_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_counted_prefix))))))) /\ (((exists ff_u_row_indicator_count_relation_sum ff_v_row_indicator_count_relation_sum. ((((exists ff_h_row_indicator_count_relation_sum_start. ff_h_row_indicator_count_relation_sum_start + S (0) = S ((S (0)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_start. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_start * S ((S (0)) * ff_v_row_indicator_count_relation_sum) + (0))) /\ ((((exists ff_h_row_indicator_count_relation_sum_terminal. ff_h_row_indicator_count_relation_sum_terminal + S (n) = S ((S (k)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_terminal. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_terminal * S ((S (k)) * ff_v_row_indicator_count_relation_sum) + (n))) /\ forall ff_i_row_indicator_count_relation_sum. (exists ff_lt_row_indicator_count_relation_sum_bound. ff_lt_row_indicator_count_relation_sum_bound + S ff_i_row_indicator_count_relation_sum = k) -> exists ff_a_row_indicator_count_relation_sum ff_r_row_indicator_count_relation_sum ff_s_row_indicator_count_relation_sum. ((((exists ff_h_row_indicator_count_relation_sum_summand. ff_h_row_indicator_count_relation_sum_summand + S (ff_a_row_indicator_count_relation_sum) = S ((S (ff_i_row_indicator_count_relation_sum)) * rc)) /\ exists ff_q_row_indicator_count_relation_sum_summand. rb = ff_q_row_indicator_count_relation_sum_summand * S ((S (ff_i_row_indicator_count_relation_sum)) * rc) + (ff_a_row_indicator_count_relation_sum))) /\ ((((exists ff_h_row_indicator_count_relation_sum_partial. ff_h_row_indicator_count_relation_sum_partial + S (ff_r_row_indicator_count_relation_sum) = S ((S (ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_partial. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_partial * S ((S (ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum) + (ff_r_row_indicator_count_relation_sum))) /\ ((((exists ff_h_row_indicator_count_relation_sum_successor. ff_h_row_indicator_count_relation_sum_successor + S (ff_s_row_indicator_count_relation_sum) = S ((S (S ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum)) /\ exists ff_q_row_indicator_count_relation_sum_successor. ff_u_row_indicator_count_relation_sum = ff_q_row_indicator_count_relation_sum_successor * S ((S (S ff_i_row_indicator_count_relation_sum)) * ff_v_row_indicator_count_relation_sum) + (ff_s_row_indicator_count_relation_sum))) /\ ff_s_row_indicator_count_relation_sum = ff_r_row_indicator_count_relation_sum + ff_a_row_indicator_count_relation_sum)))))) /\ (forall ff_i_row_indicator_count_relation_bits. (exists ff_lt_row_indicator_count_relation_bits_bound. ff_lt_row_indicator_count_relation_bits_bound + S ff_i_row_indicator_count_relation_bits = k) -> exists ff_bit_row_indicator_count_relation_bits. ((((exists ff_h_row_indicator_count_relation_bits_decoded. ff_h_row_indicator_count_relation_bits_decoded + S (ff_bit_row_indicator_count_relation_bits) = S ((S (ff_i_row_indicator_count_relation_bits)) * rc)) /\ exists ff_q_row_indicator_count_relation_bits_decoded. rb = ff_q_row_indicator_count_relation_bits_decoded * S ((S (ff_i_row_indicator_count_relation_bits)) * rc) + (ff_bit_row_indicator_count_relation_bits))) /\ (ff_bit_row_indicator_count_relation_bits = 0 \/ ff_bit_row_indicator_count_relation_bits = 1)))))))Proof neighborhood
Direct theorem prerequisites
PA00DB distinct_odd_prime_half_row_indicator_choices PA00DD eisenstein_row_indicator_prefix_exists PA00DE eisenstein_row_indicator_prefix_all_bits PA003I bit_count_existsDirect 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
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.
Named ingredients (4)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hi
03Establish hchoicesL12–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply distinct odd prime half row indicator choices.
- L12
have hchoices : ∀ eri_column_row_indicator_concrete_choices. Lt(eri_column_row_indicator_concrete_choices,k) → ∃ x. x = 0 ∧ (Lt(q · S i,p · S eri_column_row_indicator_concrete_choices) ∧ ¬Lt(p · S eri_column_row_indicator_concrete_choices,q · S i)) ∨ x = 1 ∧ (Lt(p · S eri_column_row_indicator_concrete_choices,q · S i) ∧ ¬Lt(q · S i,p · S eri_column_row_indicator_concrete_choices))Definitions: Lt(eri_column_row_indicator_concrete_choices,k)Lt(q · S i,p · S eri_column_row_indicator_concrete_choices)Lt(p · S eri_column_row_indicator_concrete_choices,q · S i)Original native command in the exact edition - L13
specialize distinct_odd_prime_half_row_indicator_choices p - L14
specialize distinct_odd_prime_half_row_indicator_choices q - L15
specialize distinct_odd_prime_half_row_indicator_choices h - L16
specialize distinct_odd_prime_half_row_indicator_choices k - L17
specialize distinct_odd_prime_half_row_indicator_choices i - L18
apply distinct_odd_prime_half_row_indicator_choices - L19
exact hpodd - L20
exact hqodd - L21
exact hp
04Use earlier factsL22–24
05Establish hprefix_existsL25–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein row indicator prefix exists.
- L25
have hprefix_exists : ∃ rb. ∃ rc. ∀ x. Lt(x,k) → ∃ y. BetaAt(rb,rc,x,y) ∧ (y = 0 ∧ (Lt(q · S i,p · S x) ∧ ¬Lt(p · S x,q · S i)) ∨ y = 1 ∧ (Lt(p · S x,q · S i) ∧ ¬Lt(q · S i,p · S x)))Definitions: Lt(x,k)BetaAt(rb,rc,x,y)Lt(q · S i,p · S x)Lt(p · S x,q · S i)Original native command in the exact edition - L26
specialize eisenstein_row_indicator_prefix_exists p - L27
specialize eisenstein_row_indicator_prefix_exists q - L28
specialize eisenstein_row_indicator_prefix_exists i - L29
specialize eisenstein_row_indicator_prefix_exists k - L30
apply eisenstein_row_indicator_prefix_exists - L31
exact hchoices
06Separate the logical casesL32–33
07Establish hbitsL34–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein row indicator prefix all bits.
- L34
have hbits : AllBits(x,x1,k)Definitions: AllBits(x,x1,k)Original native command in the exact edition - L35
specialize eisenstein_row_indicator_prefix_all_bits p - L36
specialize eisenstein_row_indicator_prefix_all_bits q - L37
specialize eisenstein_row_indicator_prefix_all_bits i - L38
specialize eisenstein_row_indicator_prefix_all_bits x - L39
specialize eisenstein_row_indicator_prefix_all_bits x1 - L40
specialize eisenstein_row_indicator_prefix_all_bits k - L41
apply eisenstein_row_indicator_prefix_all_bits - L42
exact hprefix_exists_witness_witness
08Establish hcountL43–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count exists.
- L43
have hcount : ∃ n. BitCount(x,x1,k,n)Definitions: BitCount(x,x1,k,n)Original native command in the exact edition - L44
specialize bit_count_exists x - L45
specialize bit_count_exists x1 - L46
specialize bit_count_exists k - L47
apply bit_count_exists - L48
exact hbits
09Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases hcount
10Construct an explicit witnessL50–52
11Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
split
Original defined command ledger · 55 lines
- 0001
intro p - 0002
intro q - 0003
intro h - 0004
intro k - 0005
intro i - 0006
intro hpodd - 0007
intro hqodd - 0008
intro hp - 0009
intro hq - 0010
intro hpq - 0011
intro hi - 0012
have hchoices : ∀ eri_column_row_indicator_concrete_choices. Lt(eri_column_row_indicator_concrete_choices,k) → ∃ x. x = 0 ∧ (Lt(q · S i,p · S eri_column_row_indicator_concrete_choices) ∧ ¬Lt(p · S eri_column_row_indicator_concrete_choices,q · S i)) ∨ x = 1 ∧ (Lt(p · S eri_column_row_indicator_concrete_choices,q · S i) ∧ ¬Lt(q · S i,p · S eri_column_row_indicator_concrete_choices))Exact native replay line
have hchoices : forall eri_column_row_indicator_concrete_choices. (exists eri_gap_row_indicator_concrete_choices_bound. eri_gap_row_indicator_concrete_choices_bound + S (eri_column_row_indicator_concrete_choices) = k) -> exists eri_bit_row_indicator_concrete_choices. (((eri_bit_row_indicator_concrete_choices = 0 /\ ((exists eri_gap_row_indicator_concrete_choices_choice_left. eri_gap_row_indicator_concrete_choices_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_choices) /\ ~(exists eri_gap_row_indicator_concrete_choices_choice_right. eri_gap_row_indicator_concrete_choices_choice_right + S (p * S eri_column_row_indicator_concrete_choices) = q * S i))) \/ (eri_bit_row_indicator_concrete_choices = 1 /\ ((exists eri_gap_row_indicator_concrete_choices_choice_right. eri_gap_row_indicator_concrete_choices_choice_right + S (p * S eri_column_row_indicator_concrete_choices) = q * S i) /\ ~(exists eri_gap_row_indicator_concrete_choices_choice_left. eri_gap_row_indicator_concrete_choices_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_choices))))) - 0013
specialize distinct_odd_prime_half_row_indicator_choices p - 0014
specialize distinct_odd_prime_half_row_indicator_choices q - 0015
specialize distinct_odd_prime_half_row_indicator_choices h - 0016
specialize distinct_odd_prime_half_row_indicator_choices k - 0017
specialize distinct_odd_prime_half_row_indicator_choices i - 0018
apply distinct_odd_prime_half_row_indicator_choices - 0019
exact hpodd - 0020
exact hqodd - 0021
exact hp - 0022
exact hq - 0023
exact hpq - 0024
exact hi - 0025
have hprefix_exists : ∃ rb. ∃ rc. ∀ x. Lt(x,k) → ∃ y. BetaAt(rb,rc,x,y) ∧ (y = 0 ∧ (Lt(q · S i,p · S x) ∧ ¬Lt(p · S x,q · S i)) ∨ y = 1 ∧ (Lt(p · S x,q · S i) ∧ ¬Lt(q · S i,p · S x)))Exact native replay line
have hprefix_exists : exists rb rc. (forall eri_column_row_indicator_concrete_prefix. (exists eri_gap_row_indicator_concrete_prefix_bound. eri_gap_row_indicator_concrete_prefix_bound + S (eri_column_row_indicator_concrete_prefix) = k) -> exists eri_bit_row_indicator_concrete_prefix. ((((exists ff_h_eri_row_indicator_concrete_prefix_decoded. ff_h_eri_row_indicator_concrete_prefix_decoded + S (eri_bit_row_indicator_concrete_prefix) = S ((S (eri_column_row_indicator_concrete_prefix)) * rc)) /\ exists ff_q_eri_row_indicator_concrete_prefix_decoded. rb = ff_q_eri_row_indicator_concrete_prefix_decoded * S ((S (eri_column_row_indicator_concrete_prefix)) * rc) + (eri_bit_row_indicator_concrete_prefix))) /\ (((eri_bit_row_indicator_concrete_prefix = 0 /\ ((exists eri_gap_row_indicator_concrete_prefix_choice_left. eri_gap_row_indicator_concrete_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_prefix) /\ ~(exists eri_gap_row_indicator_concrete_prefix_choice_right. eri_gap_row_indicator_concrete_prefix_choice_right + S (p * S eri_column_row_indicator_concrete_prefix) = q * S i))) \/ (eri_bit_row_indicator_concrete_prefix = 1 /\ ((exists eri_gap_row_indicator_concrete_prefix_choice_right. eri_gap_row_indicator_concrete_prefix_choice_right + S (p * S eri_column_row_indicator_concrete_prefix) = q * S i) /\ ~(exists eri_gap_row_indicator_concrete_prefix_choice_left. eri_gap_row_indicator_concrete_prefix_choice_left + S (q * S i) = p * S eri_column_row_indicator_concrete_prefix))))))) - 0026
specialize eisenstein_row_indicator_prefix_exists p - 0027
specialize eisenstein_row_indicator_prefix_exists q - 0028
specialize eisenstein_row_indicator_prefix_exists i - 0029
specialize eisenstein_row_indicator_prefix_exists k - 0030
apply eisenstein_row_indicator_prefix_exists - 0031
exact hchoices - 0032
cases hprefix_exists - 0033
cases hprefix_exists_witness - 0034
have hbits : AllBits(x,x1,k)Exact native replay line
have hbits : forall ff_i_row_indicator_counted_witness_bits. (exists ff_lt_row_indicator_counted_witness_bits_bound. ff_lt_row_indicator_counted_witness_bits_bound + S ff_i_row_indicator_counted_witness_bits = k) -> exists ff_bit_row_indicator_counted_witness_bits. ((((exists ff_h_row_indicator_counted_witness_bits_decoded. ff_h_row_indicator_counted_witness_bits_decoded + S (ff_bit_row_indicator_counted_witness_bits) = S ((S (ff_i_row_indicator_counted_witness_bits)) * x1)) /\ exists ff_q_row_indicator_counted_witness_bits_decoded. x = ff_q_row_indicator_counted_witness_bits_decoded * S ((S (ff_i_row_indicator_counted_witness_bits)) * x1) + (ff_bit_row_indicator_counted_witness_bits))) /\ (ff_bit_row_indicator_counted_witness_bits = 0 \/ ff_bit_row_indicator_counted_witness_bits = 1)) - 0035
specialize eisenstein_row_indicator_prefix_all_bits p - 0036
specialize eisenstein_row_indicator_prefix_all_bits q - 0037
specialize eisenstein_row_indicator_prefix_all_bits i - 0038
specialize eisenstein_row_indicator_prefix_all_bits x - 0039
specialize eisenstein_row_indicator_prefix_all_bits x1 - 0040
specialize eisenstein_row_indicator_prefix_all_bits k - 0041
apply eisenstein_row_indicator_prefix_all_bits - 0042
exact hprefix_exists_witness_witness - 0043
have hcount : ∃ n. BitCount(x,x1,k,n)Exact native replay line
have hcount : exists n. (((exists ff_u_row_indicator_counted_witness_count_sum ff_v_row_indicator_counted_witness_count_sum. ((((exists ff_h_row_indicator_counted_witness_count_sum_start. ff_h_row_indicator_counted_witness_count_sum_start + S (0) = S ((S (0)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_start. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_start * S ((S (0)) * ff_v_row_indicator_counted_witness_count_sum) + (0))) /\ ((((exists ff_h_row_indicator_counted_witness_count_sum_terminal. ff_h_row_indicator_counted_witness_count_sum_terminal + S (n) = S ((S (k)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_terminal. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_terminal * S ((S (k)) * ff_v_row_indicator_counted_witness_count_sum) + (n))) /\ forall ff_i_row_indicator_counted_witness_count_sum. (exists ff_lt_row_indicator_counted_witness_count_sum_bound. ff_lt_row_indicator_counted_witness_count_sum_bound + S ff_i_row_indicator_counted_witness_count_sum = k) -> exists ff_a_row_indicator_counted_witness_count_sum ff_r_row_indicator_counted_witness_count_sum ff_s_row_indicator_counted_witness_count_sum. ((((exists ff_h_row_indicator_counted_witness_count_sum_summand. ff_h_row_indicator_counted_witness_count_sum_summand + S (ff_a_row_indicator_counted_witness_count_sum) = S ((S (ff_i_row_indicator_counted_witness_count_sum)) * x1)) /\ exists ff_q_row_indicator_counted_witness_count_sum_summand. x = ff_q_row_indicator_counted_witness_count_sum_summand * S ((S (ff_i_row_indicator_counted_witness_count_sum)) * x1) + (ff_a_row_indicator_counted_witness_count_sum))) /\ ((((exists ff_h_row_indicator_counted_witness_count_sum_partial. ff_h_row_indicator_counted_witness_count_sum_partial + S (ff_r_row_indicator_counted_witness_count_sum) = S ((S (ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_partial. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_partial * S ((S (ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum) + (ff_r_row_indicator_counted_witness_count_sum))) /\ ((((exists ff_h_row_indicator_counted_witness_count_sum_successor. ff_h_row_indicator_counted_witness_count_sum_successor + S (ff_s_row_indicator_counted_witness_count_sum) = S ((S (S ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum)) /\ exists ff_q_row_indicator_counted_witness_count_sum_successor. ff_u_row_indicator_counted_witness_count_sum = ff_q_row_indicator_counted_witness_count_sum_successor * S ((S (S ff_i_row_indicator_counted_witness_count_sum)) * ff_v_row_indicator_counted_witness_count_sum) + (ff_s_row_indicator_counted_witness_count_sum))) /\ ff_s_row_indicator_counted_witness_count_sum = ff_r_row_indicator_counted_witness_count_sum + ff_a_row_indicator_counted_witness_count_sum)))))) /\ (forall ff_i_row_indicator_counted_witness_count_bits. (exists ff_lt_row_indicator_counted_witness_count_bits_bound. ff_lt_row_indicator_counted_witness_count_bits_bound + S ff_i_row_indicator_counted_witness_count_bits = k) -> exists ff_bit_row_indicator_counted_witness_count_bits. ((((exists ff_h_row_indicator_counted_witness_count_bits_decoded. ff_h_row_indicator_counted_witness_count_bits_decoded + S (ff_bit_row_indicator_counted_witness_count_bits) = S ((S (ff_i_row_indicator_counted_witness_count_bits)) * x1)) /\ exists ff_q_row_indicator_counted_witness_count_bits_decoded. x = ff_q_row_indicator_counted_witness_count_bits_decoded * S ((S (ff_i_row_indicator_counted_witness_count_bits)) * x1) + (ff_bit_row_indicator_counted_witness_count_bits))) /\ (ff_bit_row_indicator_counted_witness_count_bits = 0 \/ ff_bit_row_indicator_counted_witness_count_bits = 1))))) - 0044
specialize bit_count_exists x - 0045
specialize bit_count_exists x1 - 0046
specialize bit_count_exists k - 0047
apply bit_count_exists - 0048
exact hbits - 0049
cases hcount - 0050
exists x - 0051
exists x1 - 0052
exists x2 - 0053
split - 0054
exact hprefix_exists_witness_witness - 0055
exact hcount_witness