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. ∀ h. ∀ a. ∀ b. ∀ c. ∀ mb. ∀ mc. ∀ sb. ∀ sc. ∀ ib. ∀ ic. ∀ k. p = 2 · h + 1 → a = 2 → h = 2 · k ∨ h = 2 · k + 1 → Range(b,c,1,h) → (∀ x. Lt(x,h) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(mb,mc,x,z) ∧ (BetaAt(sb,sc,x,n) ∧ (Lt(0,z) ∧ (Le(z,h) ∧ ((n = 0 ∨ n = 1) ∧ (n = 0 ∧ ModEq(p,a · y,z) ∨ n = 1 ∧ ModEq(p,a · y,2 · h · z)))))))) → (∀ x. Lt(x,h) → ∃ y. BetaAt(ib,ic,x,y) ∧ (y = 1 ∧ Lt(x,k) ∨ y = 0 ∧ Lt(k,S x))) → ∀ x. ∀ y. ∀ z. Lt(x,h) → BetaAt(sb,sc,x,y) → BetaAt(ib,ic,x,z) → y = 0 ∧ z = 1 ∨ y = 1 ∧ z = 0Every purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.
Definitions used by this theorem
In the theorem statement
In local proof propositions
Exact expanded first-order statement
forall p h a b c mb mc sb sc ib ic k. p = 2 * h + 1 -> a = 2 -> ((h = 2 * k) \/ (h = 2 * k + 1)) -> (forall gsp_range_index_qst_goal_half. (exists gsp_lt_gap_qst_goal_half_range_bound. gsp_lt_gap_qst_goal_half_range_bound + S gsp_range_index_qst_goal_half = h) -> (((exists gsp_beta_height_qst_goal_half_range_entry. gsp_beta_height_qst_goal_half_range_entry + S (1 + gsp_range_index_qst_goal_half) = S ((S (gsp_range_index_qst_goal_half)) * c)) /\ exists gsp_beta_quotient_qst_goal_half_range_entry. b = gsp_beta_quotient_qst_goal_half_range_entry * S ((S (gsp_range_index_qst_goal_half)) * c) + (1 + gsp_range_index_qst_goal_half)))) -> (forall gsp_index_qst_goal_signed. (exists gsp_lt_gap_qst_goal_signed_index_bound. gsp_lt_gap_qst_goal_signed_index_bound + S gsp_index_qst_goal_signed = h) -> (exists gsp_value_qst_goal_signed_entry gsp_magnitude_qst_goal_signed_entry gsp_sign_qst_goal_signed_entry. (((exists ff_h_gsp_qst_goal_signed_entry_source. ff_h_gsp_qst_goal_signed_entry_source + S (gsp_value_qst_goal_signed_entry) = S ((S (gsp_index_qst_goal_signed)) * c)) /\ exists ff_q_gsp_qst_goal_signed_entry_source. b = ff_q_gsp_qst_goal_signed_entry_source * S ((S (gsp_index_qst_goal_signed)) * c) + (gsp_value_qst_goal_signed_entry))) /\ ((((exists ff_h_gsp_qst_goal_signed_entry_magnitude. ff_h_gsp_qst_goal_signed_entry_magnitude + S (gsp_magnitude_qst_goal_signed_entry) = S ((S (gsp_index_qst_goal_signed)) * mc)) /\ exists ff_q_gsp_qst_goal_signed_entry_magnitude. mb = ff_q_gsp_qst_goal_signed_entry_magnitude * S ((S (gsp_index_qst_goal_signed)) * mc) + (gsp_magnitude_qst_goal_signed_entry))) /\ ((((exists ff_h_gsp_qst_goal_signed_entry_sign. ff_h_gsp_qst_goal_signed_entry_sign + S (gsp_sign_qst_goal_signed_entry) = S ((S (gsp_index_qst_goal_signed)) * sc)) /\ exists ff_q_gsp_qst_goal_signed_entry_sign. sb = ff_q_gsp_qst_goal_signed_entry_sign * S ((S (gsp_index_qst_goal_signed)) * sc) + (gsp_sign_qst_goal_signed_entry))) /\ ((exists gsp_lt_gap_qst_goal_signed_entry_positive. gsp_lt_gap_qst_goal_signed_entry_positive + S 0 = gsp_magnitude_qst_goal_signed_entry) /\ ((exists gsp_le_gap_qst_goal_signed_entry_bounded. gsp_le_gap_qst_goal_signed_entry_bounded + gsp_magnitude_qst_goal_signed_entry = h) /\ ((gsp_sign_qst_goal_signed_entry = 0 \/ gsp_sign_qst_goal_signed_entry = 1) /\ (((gsp_sign_qst_goal_signed_entry = 0 /\ (exists gsp_mod_left_qst_goal_signed_entry_lower gsp_mod_right_qst_goal_signed_entry_lower. (a * gsp_value_qst_goal_signed_entry) + p * gsp_mod_left_qst_goal_signed_entry_lower = (gsp_magnitude_qst_goal_signed_entry) + p * gsp_mod_right_qst_goal_signed_entry_lower)) \/ (gsp_sign_qst_goal_signed_entry = 1 /\ (exists gsp_mod_left_qst_goal_signed_entry_reflected gsp_mod_right_qst_goal_signed_entry_reflected. (a * gsp_value_qst_goal_signed_entry) + p * gsp_mod_left_qst_goal_signed_entry_reflected = ((2 * h) * gsp_magnitude_qst_goal_signed_entry) + p * gsp_mod_right_qst_goal_signed_entry_reflected))))))))))) -> (forall eis_index_qst_goal_initial. (exists eis_lt_gap_qst_goal_initial_bound. eis_lt_gap_qst_goal_initial_bound + S (eis_index_qst_goal_initial) = h) -> exists eis_bit_qst_goal_initial. ((((exists ff_h_eis_qst_goal_initial_decoded. ff_h_eis_qst_goal_initial_decoded + S (eis_bit_qst_goal_initial) = S ((S (eis_index_qst_goal_initial)) * ic)) /\ exists ff_q_eis_qst_goal_initial_decoded. ib = ff_q_eis_qst_goal_initial_decoded * S ((S (eis_index_qst_goal_initial)) * ic) + (eis_bit_qst_goal_initial))) /\ (((eis_bit_qst_goal_initial = 1 /\ (exists eis_le_gap_qst_goal_initial_choice_inside. eis_le_gap_qst_goal_initial_choice_inside + (S eis_index_qst_goal_initial) = k)) \/ (eis_bit_qst_goal_initial = 0 /\ (exists eis_lt_gap_qst_goal_initial_choice_outside. eis_lt_gap_qst_goal_initial_choice_outside + S (k) = S eis_index_qst_goal_initial)))))) -> (forall i s t. (exists qst_complement_gap_goal. qst_complement_gap_goal + S i = h) -> (((exists ff_h_qst_goal_sign. ff_h_qst_goal_sign + S (s) = S ((S (i)) * sc)) /\ exists ff_q_qst_goal_sign. sb = ff_q_qst_goal_sign * S ((S (i)) * sc) + (s))) -> (((exists ff_h_qst_goal_indicator. ff_h_qst_goal_indicator + S (t) = S ((S (i)) * ic)) /\ exists ff_q_qst_goal_indicator. ib = ff_q_qst_goal_indicator * S ((S (i)) * ic) + (t))) -> ((s = 0 /\ t = 1) \/ (s = 1 /\ t = 0)))Proof neighborhood
Direct theorem prerequisites
SL000I doubling_half_range_below_odd_modulus odd_signed_division_branch_exact · Alpha closed SL000H doubling_floor_above_implies_double_above_half SL000G doubling_floor_below_implies_double_at_most_half SL000J reflected_double_above_odd_half lt_not_le · Stable closed zero_add · Stable closed add_succ_left · Stable closedDirect theorem dependents
Definition-aware tactic body
Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay 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–20
03Fix variables and assumptionsL21–24
04Establish hentryL25–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsigned.
- L25
have hentry : ∃ gsp_value_qst_alignment. ∃ gsp_magnitude_qst_alignment. ∃ gsp_sign_qst_alignment. BetaAt(b,c,i,gsp_value_qst_alignment) ∧ (BetaAt(mb,mc,i,gsp_magnitude_qst_alignment) ∧ (BetaAt(sb,sc,i,gsp_sign_qst_alignment) ∧ (Lt(0,gsp_magnitude_qst_alignment) ∧ (Le(gsp_magnitude_qst_alignment,h) ∧ ((gsp_sign_qst_alignment = 0 ∨ gsp_sign_qst_alignment = 1) ∧ (gsp_sign_qst_alignment = 0 ∧ ModEq(p,a · gsp_value_qst_alignment,gsp_magnitude_qst_alignment) ∨ gsp_sign_qst_alignment = 1 ∧ ModEq(p,a · gsp_value_qst_alignment,2 · h · gsp_magnitude_qst_alignment)))))))Definitions: BetaAt(b,c,i,gsp_value_qst_alignment)BetaAt(mb,mc,i,gsp_magnitude_qst_alignment)BetaAt(sb,sc,i,gsp_sign_qst_alignment)Lt(0,gsp_magnitude_qst_alignment)Le(gsp_magnitude_qst_alignment,h)ModEq(p,a · gsp_value_qst_alignment,gsp_magnitude_qst_alignment)ModEq(p,a · gsp_value_qst_alignment,2 · h · gsp_magnitude_qst_alignment)Original native command in the exact edition - L26
specialize hsigned i - L27
apply hsigned - L28
exact hibound
05Separate the logical casesL29–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
cases hentry - L30
cases hentry_witness - L31
cases hentry_witness_witness - L32
cases hentry_witness_witness_witness - L33
cases hentry_witness_witness_witness_right - L34
cases hentry_witness_witness_witness_right_right - L35
cases hentry_witness_witness_witness_right_right_right - L36
cases hentry_witness_witness_witness_right_right_right_right - L37
cases hentry_witness_witness_witness_right_right_right_right_right
06Establish hsourceL38–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta range entry eq.
07Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
exact hentry_witness_witness_witness_left
08Establish hsource_succL49–55
09Establish hsource_boundL56–58
Establish this local claim before using it. It is not an additional assumption.
10Establish hdoubled_boundL59–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply doubling half range below odd modulus.
- L59
have hdoubled_bound : Lt(2 · x,p)Definitions: Lt(2 · x,p)Original native command in the exact edition - L60
specialize doubling_half_range_below_odd_modulus p - L61
specialize doubling_half_range_below_odd_modulus h - L62
specialize doubling_half_range_below_odd_modulus x - L63
apply doubling_half_range_below_odd_modulus - L64
exact hpodd - L65
exact hsource_bound
11Establish hsame_signL66–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
12Establish hchoiceL75–84
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein initial segment decoded choice.
- L75
have hchoice : t = 1 ∧ Lt(i,k) ∨ t = 0 ∧ Lt(k,S i)Definitions: Lt(i,k)Lt(k,S i)Original native command in the exact edition - L76
specialize eisenstein_initial_segment_decoded_choice k - L77
specialize eisenstein_initial_segment_decoded_choice ib - L78
specialize eisenstein_initial_segment_decoded_choice ic - L79
specialize eisenstein_initial_segment_decoded_choice h - L80
specialize eisenstein_initial_segment_decoded_choice i - L81
specialize eisenstein_initial_segment_decoded_choice t - L82
apply eisenstein_initial_segment_decoded_choice - L83
exact hinitial - L84
exact hibound
13Use earlier factsL85–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L85
exact hindicator
14Establish hexactL86–95
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd signed division branch exact.
- L86
have hexact : ((x2 = 0 /\ 2 * x = x1) \/ (x2 = 1 /\ 2 * x + x1 = p)) - L87
specialize odd_signed_division_branch_exact p - L88
specialize odd_signed_division_branch_exact h - L89
specialize odd_signed_division_branch_exact (2 * x) - L90
specialize odd_signed_division_branch_exact 0 - L91
specialize odd_signed_division_branch_exact (2 * x) - L92
specialize odd_signed_division_branch_exact x1 - L93
specialize odd_signed_division_branch_exact x2 - L94
apply odd_signed_division_branch_exact - L95
exact hpodd
15Calculate and transport equalitiesL96–97
16Use earlier factsL98–101
17Calculate and transport equalitiesL102–103
18Use earlier factsL104–104
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
exact hentry_witness_witness_witness_right_right_right_right_right_right
19Separate the logical casesL105–110
20Calculate and transport equalitiesL111–112
21Use earlier factsL113–115
22Separate the logical casesL116–117
23Establish haboveL118–125
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply doubling floor above implies double above half.
- L118
- L119
specialize doubling_floor_above_implies_double_above_half h - L120
specialize doubling_floor_above_implies_double_above_half k - L121
specialize doubling_floor_above_implies_double_above_half x - L122
apply doubling_floor_above_implies_double_above_half - L123
exact hhalf - L124
rewrite hsource_succ - L125
exact hchoice_right_right
24Establish hbelowL126–133
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lt not le.
25Separate the logical casesL134–137
26Establish hbelowL138–145
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply doubling floor below implies double at most half.
- L138
- L139
specialize doubling_floor_below_implies_double_at_most_half h - L140
specialize doubling_floor_below_implies_double_at_most_half k - L141
specialize doubling_floor_below_implies_double_at_most_half x - L142
apply doubling_floor_below_implies_double_at_most_half - L143
exact hhalf - L144
rewrite hsource_succ - L145
exact hchoice_left_right
27Establish haboveL146–155
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply reflected double above odd half.
- L146
- L147
specialize reflected_double_above_odd_half p - L148
specialize reflected_double_above_odd_half h - L149
specialize reflected_double_above_odd_half x - L150
specialize reflected_double_above_odd_half x1 - L151
apply reflected_double_above_odd_half - L152
exact hpodd - L153
exact hentry_witness_witness_witness_right_right_right_right_left - L154
exact hexact_right_right - L155
specialize lt_not_le h
28Use earlier factsL156–159
29Separate the logical casesL160–162
30Calculate and transport equalitiesL163–164
Original defined command ledger · 167 lines
- 0001
intro p - 0002
intro h - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro mb - 0007
intro mc - 0008
intro sb - 0009
intro sc - 0010
intro ib - 0011
intro ic - 0012
intro k - 0013
intro hpodd - 0014
intro hatwo - 0015
intro hhalf - 0016
intro hrange - 0017
intro hsigned - 0018
intro hinitial - 0019
intro i - 0020
intro s - 0021
intro t - 0022
intro hibound - 0023
intro hsign - 0024
intro hindicator - 0025
have hentry : ∃ gsp_value_qst_alignment. ∃ gsp_magnitude_qst_alignment. ∃ gsp_sign_qst_alignment. BetaAt(b,c,i,gsp_value_qst_alignment) ∧ (BetaAt(mb,mc,i,gsp_magnitude_qst_alignment) ∧ (BetaAt(sb,sc,i,gsp_sign_qst_alignment) ∧ (Lt(0,gsp_magnitude_qst_alignment) ∧ (Le(gsp_magnitude_qst_alignment,h) ∧ ((gsp_sign_qst_alignment = 0 ∨ gsp_sign_qst_alignment = 1) ∧ (gsp_sign_qst_alignment = 0 ∧ ModEq(p,a · gsp_value_qst_alignment,gsp_magnitude_qst_alignment) ∨ gsp_sign_qst_alignment = 1 ∧ ModEq(p,a · gsp_value_qst_alignment,2 · h · gsp_magnitude_qst_alignment)))))))Exact native replay line
have hentry : exists gsp_value_qst_alignment gsp_magnitude_qst_alignment gsp_sign_qst_alignment. (((exists ff_h_gsp_qst_alignment_source. ff_h_gsp_qst_alignment_source + S (gsp_value_qst_alignment) = S ((S (i)) * c)) /\ exists ff_q_gsp_qst_alignment_source. b = ff_q_gsp_qst_alignment_source * S ((S (i)) * c) + (gsp_value_qst_alignment))) /\ ((((exists ff_h_gsp_qst_alignment_magnitude. ff_h_gsp_qst_alignment_magnitude + S (gsp_magnitude_qst_alignment) = S ((S (i)) * mc)) /\ exists ff_q_gsp_qst_alignment_magnitude. mb = ff_q_gsp_qst_alignment_magnitude * S ((S (i)) * mc) + (gsp_magnitude_qst_alignment))) /\ ((((exists ff_h_gsp_qst_alignment_sign. ff_h_gsp_qst_alignment_sign + S (gsp_sign_qst_alignment) = S ((S (i)) * sc)) /\ exists ff_q_gsp_qst_alignment_sign. sb = ff_q_gsp_qst_alignment_sign * S ((S (i)) * sc) + (gsp_sign_qst_alignment))) /\ ((exists gsp_lt_gap_qst_alignment_positive. gsp_lt_gap_qst_alignment_positive + S 0 = gsp_magnitude_qst_alignment) /\ ((exists gsp_le_gap_qst_alignment_bounded. gsp_le_gap_qst_alignment_bounded + gsp_magnitude_qst_alignment = h) /\ ((gsp_sign_qst_alignment = 0 \/ gsp_sign_qst_alignment = 1) /\ (((gsp_sign_qst_alignment = 0 /\ (exists gsp_mod_left_qst_alignment_lower gsp_mod_right_qst_alignment_lower. (a * gsp_value_qst_alignment) + p * gsp_mod_left_qst_alignment_lower = (gsp_magnitude_qst_alignment) + p * gsp_mod_right_qst_alignment_lower)) \/ (gsp_sign_qst_alignment = 1 /\ (exists gsp_mod_left_qst_alignment_reflected gsp_mod_right_qst_alignment_reflected. (a * gsp_value_qst_alignment) + p * gsp_mod_left_qst_alignment_reflected = ((2 * h) * gsp_magnitude_qst_alignment) + p * gsp_mod_right_qst_alignment_reflected))))))))) - 0026
specialize hsigned i - 0027
apply hsigned - 0028
exact hibound - 0029
cases hentry - 0030
cases hentry_witness - 0031
cases hentry_witness_witness - 0032
cases hentry_witness_witness_witness - 0033
cases hentry_witness_witness_witness_right - 0034
cases hentry_witness_witness_witness_right_right - 0035
cases hentry_witness_witness_witness_right_right_right - 0036
cases hentry_witness_witness_witness_right_right_right_right - 0037
cases hentry_witness_witness_witness_right_right_right_right_right - 0038
have hsource : x = 1 + i - 0039
specialize beta_range_entry_eq b - 0040
specialize beta_range_entry_eq c - 0041
specialize beta_range_entry_eq 1 - 0042
specialize beta_range_entry_eq h - 0043
specialize beta_range_entry_eq i - 0044
specialize beta_range_entry_eq x - 0045
apply beta_range_entry_eq - 0046
exact hrange - 0047
exact hibound - 0048
exact hentry_witness_witness_witness_left - 0049
have hsource_succ : x = S i - 0050
trans 1 + i - 0051
exact hsource - 0052
trans S (0 + i) - 0053
apply add_succ_left - 0054
congr - 0055
apply zero_add - 0056
have hsource_bound : Le(x,h)Exact native replay line
have hsource_bound : exists gap. gap + x = h - 0057
rewrite hsource_succ - 0058
exact hibound - 0059
have hdoubled_bound : Lt(2 · x,p)Exact native replay line
have hdoubled_bound : exists gap. gap + S (2 * x) = p - 0060
specialize doubling_half_range_below_odd_modulus p - 0061
specialize doubling_half_range_below_odd_modulus h - 0062
specialize doubling_half_range_below_odd_modulus x - 0063
apply doubling_half_range_below_odd_modulus - 0064
exact hpodd - 0065
exact hsource_bound - 0066
have hsame_sign : x2 = s - 0067
specialize beta_at_unique sb - 0068
specialize beta_at_unique sc - 0069
specialize beta_at_unique i - 0070
specialize beta_at_unique x2 - 0071
specialize beta_at_unique s - 0072
apply beta_at_unique - 0073
exact hentry_witness_witness_witness_right_right_left - 0074
exact hsign - 0075
have hchoice : t = 1 ∧ Lt(i,k) ∨ t = 0 ∧ Lt(k,S i)Exact native replay line
have hchoice : ((t = 1 /\ (exists eis_le_gap_qst_alignment_choice_inside. eis_le_gap_qst_alignment_choice_inside + (S i) = k)) \/ (t = 0 /\ (exists eis_lt_gap_qst_alignment_choice_outside. eis_lt_gap_qst_alignment_choice_outside + S (k) = S i))) - 0076
specialize eisenstein_initial_segment_decoded_choice k - 0077
specialize eisenstein_initial_segment_decoded_choice ib - 0078
specialize eisenstein_initial_segment_decoded_choice ic - 0079
specialize eisenstein_initial_segment_decoded_choice h - 0080
specialize eisenstein_initial_segment_decoded_choice i - 0081
specialize eisenstein_initial_segment_decoded_choice t - 0082
apply eisenstein_initial_segment_decoded_choice - 0083
exact hinitial - 0084
exact hibound - 0085
exact hindicator - 0086
have hexact : ((x2 = 0 /\ 2 * x = x1) \/ (x2 = 1 /\ 2 * x + x1 = p)) - 0087
specialize odd_signed_division_branch_exact p - 0088
specialize odd_signed_division_branch_exact h - 0089
specialize odd_signed_division_branch_exact (2 * x) - 0090
specialize odd_signed_division_branch_exact 0 - 0091
specialize odd_signed_division_branch_exact (2 * x) - 0092
specialize odd_signed_division_branch_exact x1 - 0093
specialize odd_signed_division_branch_exact x2 - 0094
apply odd_signed_division_branch_exact - 0095
exact hpodd - 0096
simp - 0097
symm - 0098
apply zero_add - 0099
exact hdoubled_bound - 0100
exact hentry_witness_witness_witness_right_right_right_left - 0101
exact hentry_witness_witness_witness_right_right_right_right_left - 0102
rewrite hatwo at hentry_witness_witness_witness_right_right_right_right_right_right - 0103
rewrite hatwo at hentry_witness_witness_witness_right_right_right_right_right_right - 0104
exact hentry_witness_witness_witness_right_right_right_right_right_right - 0105
cases hexact - 0106
cases hexact_left - 0107
cases hchoice - 0108
cases hchoice_left - 0109
left - 0110
split - 0111
trans x2 - 0112
symm - 0113
exact hsame_sign - 0114
exact hexact_left_left - 0115
exact hchoice_left_left - 0116
cases hchoice_right - 0117
exfalso - 0118
have habove : Lt(h,2 · x)Exact native replay line
have habove : exists gap. gap + S h = 2 * x - 0119
specialize doubling_floor_above_implies_double_above_half h - 0120
specialize doubling_floor_above_implies_double_above_half k - 0121
specialize doubling_floor_above_implies_double_above_half x - 0122
apply doubling_floor_above_implies_double_above_half - 0123
exact hhalf - 0124
rewrite hsource_succ - 0125
exact hchoice_right_right - 0126
have hbelow : Le(2 · x,h)Exact native replay line
have hbelow : exists gap. gap + 2 * x = h - 0127
rewrite hexact_left_right - 0128
exact hentry_witness_witness_witness_right_right_right_right_left - 0129
specialize lt_not_le h - 0130
specialize lt_not_le (2 * x) - 0131
apply lt_not_le - 0132
exact habove - 0133
exact hbelow - 0134
cases hexact_right - 0135
cases hchoice - 0136
cases hchoice_left - 0137
exfalso - 0138
have hbelow : Le(2 · x,h)Exact native replay line
have hbelow : exists gap. gap + 2 * x = h - 0139
specialize doubling_floor_below_implies_double_at_most_half h - 0140
specialize doubling_floor_below_implies_double_at_most_half k - 0141
specialize doubling_floor_below_implies_double_at_most_half x - 0142
apply doubling_floor_below_implies_double_at_most_half - 0143
exact hhalf - 0144
rewrite hsource_succ - 0145
exact hchoice_left_right - 0146
have habove : Lt(h,2 · x)Exact native replay line
have habove : exists gap. gap + S h = 2 * x - 0147
specialize reflected_double_above_odd_half p - 0148
specialize reflected_double_above_odd_half h - 0149
specialize reflected_double_above_odd_half x - 0150
specialize reflected_double_above_odd_half x1 - 0151
apply reflected_double_above_odd_half - 0152
exact hpodd - 0153
exact hentry_witness_witness_witness_right_right_right_right_left - 0154
exact hexact_right_right - 0155
specialize lt_not_le h - 0156
specialize lt_not_le (2 * x) - 0157
apply lt_not_le - 0158
exact habove - 0159
exact hbelow - 0160
cases hchoice_right - 0161
right - 0162
split - 0163
trans x2 - 0164
symm - 0165
exact hsame_sign - 0166
exact hexact_right_left - 0167
exact hchoice_right_left