Exact expanded PA statement
forall bb bc sb sc w r. (forall bcf_row_index_bptdb_table. (exists bcf_lt_gap_bptdb_table_row_bound. bcf_lt_gap_bptdb_table_row_bound + S (bcf_row_index_bptdb_table) = r) -> exists bcf_row_code_bptdb_table bcf_row_scale_bptdb_table. ((((exists bcf_height_bptdb_table_decoded_row_code. bcf_height_bptdb_table_decoded_row_code + S (bcf_row_code_bptdb_table) = S ((S (bcf_row_index_bptdb_table)) * bc)) /\ exists bcf_quotient_bptdb_table_decoded_row_code. bb = bcf_quotient_bptdb_table_decoded_row_code * S ((S (bcf_row_index_bptdb_table)) * bc) + (bcf_row_code_bptdb_table))) /\ ((((exists bcf_height_bptdb_table_decoded_row_scale. bcf_height_bptdb_table_decoded_row_scale + S (bcf_row_scale_bptdb_table) = S ((S (bcf_row_index_bptdb_table)) * sc)) /\ exists bcf_quotient_bptdb_table_decoded_row_scale. sb = bcf_quotient_bptdb_table_decoded_row_scale * S ((S (bcf_row_index_bptdb_table)) * sc) + (bcf_row_scale_bptdb_table))) /\ ((bcf_row_index_bptdb_table = 0 /\ (forall bcf_index_bptdb_table_zero_row. (exists bcf_lt_gap_bptdb_table_zero_row_bound. bcf_lt_gap_bptdb_table_zero_row_bound + S (bcf_index_bptdb_table_zero_row) = w) -> exists bcf_value_bptdb_table_zero_row. ((((exists bcf_height_bptdb_table_zero_row_entry. bcf_height_bptdb_table_zero_row_entry + S (bcf_value_bptdb_table_zero_row) = S ((S (bcf_index_bptdb_table_zero_row)) * bcf_row_scale_bptdb_table)) /\ exists bcf_quotient_bptdb_table_zero_row_entry. bcf_row_code_bptdb_table = bcf_quotient_bptdb_table_zero_row_entry * S ((S (bcf_index_bptdb_table_zero_row)) * bcf_row_scale_bptdb_table) + (bcf_value_bptdb_table_zero_row))) /\ ((bcf_index_bptdb_table_zero_row = 0 /\ bcf_value_bptdb_table_zero_row = 1) \/ exists bcf_predecessor_bptdb_table_zero_row. bcf_index_bptdb_table_zero_row = S bcf_predecessor_bptdb_table_zero_row /\ bcf_value_bptdb_table_zero_row = 0)))) \/ exists bcf_predecessor_bptdb_table bcf_previous_code_bptdb_table bcf_previous_scale_bptdb_table. bcf_row_index_bptdb_table = S bcf_predecessor_bptdb_table /\ ((((exists bcf_height_bptdb_table_decoded_previous_code. bcf_height_bptdb_table_decoded_previous_code + S (bcf_previous_code_bptdb_table) = S ((S (bcf_predecessor_bptdb_table)) * bc)) /\ exists bcf_quotient_bptdb_table_decoded_previous_code. bb = bcf_quotient_bptdb_table_decoded_previous_code * S ((S (bcf_predecessor_bptdb_table)) * bc) + (bcf_previous_code_bptdb_table))) /\ ((((exists bcf_height_bptdb_table_decoded_previous_scale. bcf_height_bptdb_table_decoded_previous_scale + S (bcf_previous_scale_bptdb_table) = S ((S (bcf_predecessor_bptdb_table)) * sc)) /\ exists bcf_quotient_bptdb_table_decoded_previous_scale. sb = bcf_quotient_bptdb_table_decoded_previous_scale * S ((S (bcf_predecessor_bptdb_table)) * sc) + (bcf_previous_scale_bptdb_table))) /\ (forall bcf_index_bptdb_table_row_step. (exists bcf_lt_gap_bptdb_table_row_step_bound. bcf_lt_gap_bptdb_table_row_step_bound + S (bcf_index_bptdb_table_row_step) = w) -> exists bcf_value_bptdb_table_row_step. ((((exists bcf_height_bptdb_table_row_step_entry. bcf_height_bptdb_table_row_step_entry + S (bcf_value_bptdb_table_row_step) = S ((S (bcf_index_bptdb_table_row_step)) * bcf_row_scale_bptdb_table)) /\ exists bcf_quotient_bptdb_table_row_step_entry. bcf_row_code_bptdb_table = bcf_quotient_bptdb_table_row_step_entry * S ((S (bcf_index_bptdb_table_row_step)) * bcf_row_scale_bptdb_table) + (bcf_value_bptdb_table_row_step))) /\ ((bcf_index_bptdb_table_row_step = 0 /\ bcf_value_bptdb_table_row_step = 1) \/ exists bcf_predecessor_bptdb_table_row_step bcf_left_bptdb_table_row_step bcf_right_bptdb_table_row_step. bcf_index_bptdb_table_row_step = S bcf_predecessor_bptdb_table_row_step /\ ((((exists bcf_height_bptdb_table_row_step_previous_left. bcf_height_bptdb_table_row_step_previous_left + S (bcf_left_bptdb_table_row_step) = S ((S (bcf_predecessor_bptdb_table_row_step)) * bcf_previous_scale_bptdb_table)) /\ exists bcf_quotient_bptdb_table_row_step_previous_left. bcf_previous_code_bptdb_table = bcf_quotient_bptdb_table_row_step_previous_left * S ((S (bcf_predecessor_bptdb_table_row_step)) * bcf_previous_scale_bptdb_table) + (bcf_left_bptdb_table_row_step))) /\ ((((exists bcf_height_bptdb_table_row_step_previous_right. bcf_height_bptdb_table_row_step_previous_right + S (bcf_right_bptdb_table_row_step) = S ((S (S (bcf_predecessor_bptdb_table_row_step))) * bcf_previous_scale_bptdb_table)) /\ exists bcf_quotient_bptdb_table_row_step_previous_right. bcf_previous_code_bptdb_table = bcf_quotient_bptdb_table_row_step_previous_right * S ((S (S (bcf_predecessor_bptdb_table_row_step))) * bcf_previous_scale_bptdb_table) + (bcf_right_bptdb_table_row_step))) /\ bcf_value_bptdb_table_row_step = bcf_left_bptdb_table_row_step + bcf_right_bptdb_table_row_step))))))))))) -> forall i. (exists bcf_lt_gap_bptdb_row_bound. bcf_lt_gap_bptdb_row_bound + S (i) = r) -> forall b c. (((exists bcf_height_bptdb_row_code_at. bcf_height_bptdb_row_code_at + S (b) = S ((S (i)) * bc)) /\ exists bcf_quotient_bptdb_row_code_at. bb = bcf_quotient_bptdb_row_code_at * S ((S (i)) * bc) + (b))) -> (((exists bcf_height_bptdb_row_scale_at. bcf_height_bptdb_row_scale_at + S (c) = S ((S (i)) * sc)) /\ exists bcf_quotient_bptdb_row_scale_at. sb = bcf_quotient_bptdb_row_scale_at * S ((S (i)) * sc) + (c))) -> ((((exists bcf_lt_gap_bptdb_boundary_diagonal_bound. bcf_lt_gap_bptdb_boundary_diagonal_bound + S (i) = w) -> forall bcf_diagonal_value_bptdb_boundary. (((exists bcf_height_bptdb_boundary_diagonal_at. bcf_height_bptdb_boundary_diagonal_at + S (bcf_diagonal_value_bptdb_boundary) = S ((S (i)) * c)) /\ exists bcf_quotient_bptdb_boundary_diagonal_at. b = bcf_quotient_bptdb_boundary_diagonal_at * S ((S (i)) * c) + (bcf_diagonal_value_bptdb_boundary))) -> bcf_diagonal_value_bptdb_boundary = 1) /\ forall bcf_above_index_bptdb_boundary bcf_above_value_bptdb_boundary. (exists bcf_lt_gap_bptdb_boundary_above_order. bcf_lt_gap_bptdb_boundary_above_order + S (i) = bcf_above_index_bptdb_boundary) -> (exists bcf_lt_gap_bptdb_boundary_above_bound. bcf_lt_gap_bptdb_boundary_above_bound + S (bcf_above_index_bptdb_boundary) = w) -> (((exists bcf_height_bptdb_boundary_above_at. bcf_height_bptdb_boundary_above_at + S (bcf_above_value_bptdb_boundary) = S ((S (bcf_above_index_bptdb_boundary)) * c)) /\ exists bcf_quotient_bptdb_boundary_above_at. b = bcf_quotient_bptdb_boundary_above_at * S ((S (bcf_above_index_bptdb_boundary)) * c) + (bcf_above_value_bptdb_boundary))) -> bcf_above_value_bptdb_boundary = 0))Structural proof guide
Every decoded Pascal row has diagonal one and zeros above it.
Direct prerequisites: add_eq_zero_right, succ_ne_zero, succ_injective, le_of_succ_le_succ, lt_to_le, le_refl, beta_at_unique. The authored body proceeds by structural induction (1), case analysis (57), intermediate claims (45), equality transport (24).
Proof neighborhood
Direct dependencies
BT000L add_eq_zero_right BT000C succ_ne_zero BT000D succ_injective BT0017 le_of_succ_le_succ BT0019 lt_to_le BT000E le_refl BT0042 beta_at_uniqueDirect dependents
Formal native tactic body
Dependencies are hypotheses of this body receipt. The focused endpoint audits separately check the complete empty-context certificates.
- 0001
intro bb - 0002
intro bc - 0003
intro sb - 0004
intro sc - 0005
intro w - 0006
intro r - 0007
intro htable - 0008
intro i - 0009
induction i - 0010
intro hir - 0011
intro b - 0012
intro c - 0013
intro hbb - 0014
intro hsb - 0015
have hrow : exists bcf_row_code_bptdb_base_row bcf_row_scale_bptdb_base_row. ((((exists bcf_height_bptdb_base_row_decoded_row_code. bcf_height_bptdb_base_row_decoded_row_code + S (bcf_row_code_bptdb_base_row) = S ((S (0)) * bc)) /\ exists bcf_quotient_bptdb_base_row_decoded_row_code. bb = bcf_quotient_bptdb_base_row_decoded_row_code * S ((S (0)) * bc) + (bcf_row_code_bptdb_base_row))) /\ ((((exists bcf_height_bptdb_base_row_decoded_row_scale. bcf_height_bptdb_base_row_decoded_row_scale + S (bcf_row_scale_bptdb_base_row) = S ((S (0)) * sc)) /\ exists bcf_quotient_bptdb_base_row_decoded_row_scale. sb = bcf_quotient_bptdb_base_row_decoded_row_scale * S ((S (0)) * sc) + (bcf_row_scale_bptdb_base_row))) /\ ((0 = 0 /\ (forall bcf_index_bptdb_base_row_zero_row. (exists bcf_lt_gap_bptdb_base_row_zero_row_bound. bcf_lt_gap_bptdb_base_row_zero_row_bound + S (bcf_index_bptdb_base_row_zero_row) = w) -> exists bcf_value_bptdb_base_row_zero_row. ((((exists bcf_height_bptdb_base_row_zero_row_entry. bcf_height_bptdb_base_row_zero_row_entry + S (bcf_value_bptdb_base_row_zero_row) = S ((S (bcf_index_bptdb_base_row_zero_row)) * bcf_row_scale_bptdb_base_row)) /\ exists bcf_quotient_bptdb_base_row_zero_row_entry. bcf_row_code_bptdb_base_row = bcf_quotient_bptdb_base_row_zero_row_entry * S ((S (bcf_index_bptdb_base_row_zero_row)) * bcf_row_scale_bptdb_base_row) + (bcf_value_bptdb_base_row_zero_row))) /\ ((bcf_index_bptdb_base_row_zero_row = 0 /\ bcf_value_bptdb_base_row_zero_row = 1) \/ exists bcf_predecessor_bptdb_base_row_zero_row. bcf_index_bptdb_base_row_zero_row = S bcf_predecessor_bptdb_base_row_zero_row /\ bcf_value_bptdb_base_row_zero_row = 0)))) \/ exists bcf_predecessor_bptdb_base_row bcf_previous_code_bptdb_base_row bcf_previous_scale_bptdb_base_row. 0 = S bcf_predecessor_bptdb_base_row /\ ((((exists bcf_height_bptdb_base_row_decoded_previous_code. bcf_height_bptdb_base_row_decoded_previous_code + S (bcf_previous_code_bptdb_base_row) = S ((S (bcf_predecessor_bptdb_base_row)) * bc)) /\ exists bcf_quotient_bptdb_base_row_decoded_previous_code. bb = bcf_quotient_bptdb_base_row_decoded_previous_code * S ((S (bcf_predecessor_bptdb_base_row)) * bc) + (bcf_previous_code_bptdb_base_row))) /\ ((((exists bcf_height_bptdb_base_row_decoded_previous_scale. bcf_height_bptdb_base_row_decoded_previous_scale + S (bcf_previous_scale_bptdb_base_row) = S ((S (bcf_predecessor_bptdb_base_row)) * sc)) /\ exists bcf_quotient_bptdb_base_row_decoded_previous_scale. sb = bcf_quotient_bptdb_base_row_decoded_previous_scale * S ((S (bcf_predecessor_bptdb_base_row)) * sc) + (bcf_previous_scale_bptdb_base_row))) /\ (forall bcf_index_bptdb_base_row_row_step. (exists bcf_lt_gap_bptdb_base_row_row_step_bound. bcf_lt_gap_bptdb_base_row_row_step_bound + S (bcf_index_bptdb_base_row_row_step) = w) -> exists bcf_value_bptdb_base_row_row_step. ((((exists bcf_height_bptdb_base_row_row_step_entry. bcf_height_bptdb_base_row_row_step_entry + S (bcf_value_bptdb_base_row_row_step) = S ((S (bcf_index_bptdb_base_row_row_step)) * bcf_row_scale_bptdb_base_row)) /\ exists bcf_quotient_bptdb_base_row_row_step_entry. bcf_row_code_bptdb_base_row = bcf_quotient_bptdb_base_row_row_step_entry * S ((S (bcf_index_bptdb_base_row_row_step)) * bcf_row_scale_bptdb_base_row) + (bcf_value_bptdb_base_row_row_step))) /\ ((bcf_index_bptdb_base_row_row_step = 0 /\ bcf_value_bptdb_base_row_row_step = 1) \/ exists bcf_predecessor_bptdb_base_row_row_step bcf_left_bptdb_base_row_row_step bcf_right_bptdb_base_row_row_step. bcf_index_bptdb_base_row_row_step = S bcf_predecessor_bptdb_base_row_row_step /\ ((((exists bcf_height_bptdb_base_row_row_step_previous_left. bcf_height_bptdb_base_row_row_step_previous_left + S (bcf_left_bptdb_base_row_row_step) = S ((S (bcf_predecessor_bptdb_base_row_row_step)) * bcf_previous_scale_bptdb_base_row)) /\ exists bcf_quotient_bptdb_base_row_row_step_previous_left. bcf_previous_code_bptdb_base_row = bcf_quotient_bptdb_base_row_row_step_previous_left * S ((S (bcf_predecessor_bptdb_base_row_row_step)) * bcf_previous_scale_bptdb_base_row) + (bcf_left_bptdb_base_row_row_step))) /\ ((((exists bcf_height_bptdb_base_row_row_step_previous_right. bcf_height_bptdb_base_row_row_step_previous_right + S (bcf_right_bptdb_base_row_row_step) = S ((S (S (bcf_predecessor_bptdb_base_row_row_step))) * bcf_previous_scale_bptdb_base_row)) /\ exists bcf_quotient_bptdb_base_row_row_step_previous_right. bcf_previous_code_bptdb_base_row = bcf_quotient_bptdb_base_row_row_step_previous_right * S ((S (S (bcf_predecessor_bptdb_base_row_row_step))) * bcf_previous_scale_bptdb_base_row) + (bcf_right_bptdb_base_row_row_step))) /\ bcf_value_bptdb_base_row_row_step = bcf_left_bptdb_base_row_row_step + bcf_right_bptdb_base_row_row_step)))))))))) - 0016
specialize htable 0 - 0017
apply htable - 0018
exact hir - 0019
cases hrow - 0020
cases hrow_witness - 0021
cases hrow_witness_witness - 0022
cases hrow_witness_witness_right - 0023
have hcode : b = x - 0024
specialize beta_at_unique bb - 0025
specialize beta_at_unique bc - 0026
specialize beta_at_unique 0 - 0027
specialize beta_at_unique b - 0028
specialize beta_at_unique x - 0029
apply beta_at_unique - 0030
exact hbb - 0031
exact hrow_witness_witness_left - 0032
have hscale : c = x1 - 0033
specialize beta_at_unique sb - 0034
specialize beta_at_unique sc - 0035
specialize beta_at_unique 0 - 0036
specialize beta_at_unique c - 0037
specialize beta_at_unique x1 - 0038
apply beta_at_unique - 0039
exact hsb - 0040
exact hrow_witness_witness_right_left - 0041
cases hrow_witness_witness_right_right - 0042
cases hrow_witness_witness_right_right_left - 0043
split - 0044
intro hiw - 0045
intro z - 0046
intro htarget - 0047
have hsemantic : ((exists bcf_height_bptdb_base_diagonal_semantic. bcf_height_bptdb_base_diagonal_semantic + S (z) = S ((S (0)) * x1)) /\ exists bcf_quotient_bptdb_base_diagonal_semantic. x = bcf_quotient_bptdb_base_diagonal_semantic * S ((S (0)) * x1) + (z)) - 0048
rewrite <- hcode - 0049
rewrite <- hscale - 0050
rewrite <- hscale - 0051
exact htarget - 0052
have hcell : exists bcf_cell_value_bptdb_base_diagonal_cell. ((((exists bcf_height_bptdb_base_diagonal_cell_entry. bcf_height_bptdb_base_diagonal_cell_entry + S (bcf_cell_value_bptdb_base_diagonal_cell) = S ((S (0)) * x1)) /\ exists bcf_quotient_bptdb_base_diagonal_cell_entry. x = bcf_quotient_bptdb_base_diagonal_cell_entry * S ((S (0)) * x1) + (bcf_cell_value_bptdb_base_diagonal_cell))) /\ ((0 = 0 /\ bcf_cell_value_bptdb_base_diagonal_cell = 1) \/ exists bcf_cell_predecessor_bptdb_base_diagonal_cell. 0 = S bcf_cell_predecessor_bptdb_base_diagonal_cell /\ bcf_cell_value_bptdb_base_diagonal_cell = 0)) - 0053
specialize hrow_witness_witness_right_right_left_right 0 - 0054
apply hrow_witness_witness_right_right_left_right - 0055
exact hiw - 0056
cases hcell - 0057
cases hcell_witness - 0058
have hvalue : z = x2 - 0059
specialize beta_at_unique x - 0060
specialize beta_at_unique x1 - 0061
specialize beta_at_unique 0 - 0062
specialize beta_at_unique z - 0063
specialize beta_at_unique x2 - 0064
apply beta_at_unique - 0065
exact hsemantic - 0066
exact hcell_witness_left - 0067
cases hcell_witness_right - 0068
cases hcell_witness_right_left - 0069
trans x2 - 0070
exact hvalue - 0071
exact hcell_witness_right_left_right - 0072
cases hcell_witness_right_right - 0073
cases hcell_witness_right_right_witness - 0074
exfalso - 0075
have hbad : S x3 = 0 - 0076
symm - 0077
exact hcell_witness_right_right_witness_left - 0078
specialize succ_ne_zero x3 - 0079
apply succ_ne_zero - 0080
exact hbad - 0081
intro j - 0082
intro z - 0083
intro hij - 0084
intro hjw - 0085
intro htarget - 0086
have hsemantic : ((exists bcf_height_bptdb_base_above_semantic. bcf_height_bptdb_base_above_semantic + S (z) = S ((S (j)) * x1)) /\ exists bcf_quotient_bptdb_base_above_semantic. x = bcf_quotient_bptdb_base_above_semantic * S ((S (j)) * x1) + (z)) - 0087
rewrite <- hcode - 0088
rewrite <- hscale - 0089
rewrite <- hscale - 0090
exact htarget - 0091
have hcell : exists bcf_cell_value_bptdb_base_above_cell. ((((exists bcf_height_bptdb_base_above_cell_entry. bcf_height_bptdb_base_above_cell_entry + S (bcf_cell_value_bptdb_base_above_cell) = S ((S (j)) * x1)) /\ exists bcf_quotient_bptdb_base_above_cell_entry. x = bcf_quotient_bptdb_base_above_cell_entry * S ((S (j)) * x1) + (bcf_cell_value_bptdb_base_above_cell))) /\ ((j = 0 /\ bcf_cell_value_bptdb_base_above_cell = 1) \/ exists bcf_cell_predecessor_bptdb_base_above_cell. j = S bcf_cell_predecessor_bptdb_base_above_cell /\ bcf_cell_value_bptdb_base_above_cell = 0)) - 0092
specialize hrow_witness_witness_right_right_left_right j - 0093
apply hrow_witness_witness_right_right_left_right - 0094
exact hjw - 0095
cases hcell - 0096
cases hcell_witness - 0097
have hvalue : z = x2 - 0098
specialize beta_at_unique x - 0099
specialize beta_at_unique x1 - 0100
specialize beta_at_unique j - 0101
specialize beta_at_unique z - 0102
specialize beta_at_unique x2 - 0103
apply beta_at_unique - 0104
exact hsemantic - 0105
exact hcell_witness_left - 0106
cases hcell_witness_right - 0107
cases hcell_witness_right_left - 0108
cases hij - 0109
have hbad : S 0 = 0 - 0110
specialize add_eq_zero_right x3 - 0111
specialize add_eq_zero_right (S 0) - 0112
apply add_eq_zero_right - 0113
trans j - 0114
exact hij_witness - 0115
exact hcell_witness_right_left_left - 0116
exfalso - 0117
specialize succ_ne_zero 0 - 0118
apply succ_ne_zero - 0119
exact hbad - 0120
cases hcell_witness_right_right - 0121
cases hcell_witness_right_right_witness - 0122
trans x2 - 0123
exact hvalue - 0124
exact hcell_witness_right_right_witness_right - 0125
cases hrow_witness_witness_right_right_right - 0126
cases hrow_witness_witness_right_right_right_witness - 0127
cases hrow_witness_witness_right_right_right_witness_witness - 0128
cases hrow_witness_witness_right_right_right_witness_witness_witness - 0129
exfalso - 0130
have hbad : S x2 = 0 - 0131
symm - 0132
exact hrow_witness_witness_right_right_right_witness_witness_witness_left - 0133
specialize succ_ne_zero x2 - 0134
apply succ_ne_zero - 0135
exact hbad - 0136
intro hir - 0137
intro b - 0138
intro c - 0139
intro hbb - 0140
intro hsb - 0141
have hrow : exists bcf_row_code_bptdb_step_row bcf_row_scale_bptdb_step_row. ((((exists bcf_height_bptdb_step_row_decoded_row_code. bcf_height_bptdb_step_row_decoded_row_code + S (bcf_row_code_bptdb_step_row) = S ((S (S i)) * bc)) /\ exists bcf_quotient_bptdb_step_row_decoded_row_code. bb = bcf_quotient_bptdb_step_row_decoded_row_code * S ((S (S i)) * bc) + (bcf_row_code_bptdb_step_row))) /\ ((((exists bcf_height_bptdb_step_row_decoded_row_scale. bcf_height_bptdb_step_row_decoded_row_scale + S (bcf_row_scale_bptdb_step_row) = S ((S (S i)) * sc)) /\ exists bcf_quotient_bptdb_step_row_decoded_row_scale. sb = bcf_quotient_bptdb_step_row_decoded_row_scale * S ((S (S i)) * sc) + (bcf_row_scale_bptdb_step_row))) /\ ((S i = 0 /\ (forall bcf_index_bptdb_step_row_zero_row. (exists bcf_lt_gap_bptdb_step_row_zero_row_bound. bcf_lt_gap_bptdb_step_row_zero_row_bound + S (bcf_index_bptdb_step_row_zero_row) = w) -> exists bcf_value_bptdb_step_row_zero_row. ((((exists bcf_height_bptdb_step_row_zero_row_entry. bcf_height_bptdb_step_row_zero_row_entry + S (bcf_value_bptdb_step_row_zero_row) = S ((S (bcf_index_bptdb_step_row_zero_row)) * bcf_row_scale_bptdb_step_row)) /\ exists bcf_quotient_bptdb_step_row_zero_row_entry. bcf_row_code_bptdb_step_row = bcf_quotient_bptdb_step_row_zero_row_entry * S ((S (bcf_index_bptdb_step_row_zero_row)) * bcf_row_scale_bptdb_step_row) + (bcf_value_bptdb_step_row_zero_row))) /\ ((bcf_index_bptdb_step_row_zero_row = 0 /\ bcf_value_bptdb_step_row_zero_row = 1) \/ exists bcf_predecessor_bptdb_step_row_zero_row. bcf_index_bptdb_step_row_zero_row = S bcf_predecessor_bptdb_step_row_zero_row /\ bcf_value_bptdb_step_row_zero_row = 0)))) \/ exists bcf_predecessor_bptdb_step_row bcf_previous_code_bptdb_step_row bcf_previous_scale_bptdb_step_row. S i = S bcf_predecessor_bptdb_step_row /\ ((((exists bcf_height_bptdb_step_row_decoded_previous_code. bcf_height_bptdb_step_row_decoded_previous_code + S (bcf_previous_code_bptdb_step_row) = S ((S (bcf_predecessor_bptdb_step_row)) * bc)) /\ exists bcf_quotient_bptdb_step_row_decoded_previous_code. bb = bcf_quotient_bptdb_step_row_decoded_previous_code * S ((S (bcf_predecessor_bptdb_step_row)) * bc) + (bcf_previous_code_bptdb_step_row))) /\ ((((exists bcf_height_bptdb_step_row_decoded_previous_scale. bcf_height_bptdb_step_row_decoded_previous_scale + S (bcf_previous_scale_bptdb_step_row) = S ((S (bcf_predecessor_bptdb_step_row)) * sc)) /\ exists bcf_quotient_bptdb_step_row_decoded_previous_scale. sb = bcf_quotient_bptdb_step_row_decoded_previous_scale * S ((S (bcf_predecessor_bptdb_step_row)) * sc) + (bcf_previous_scale_bptdb_step_row))) /\ (forall bcf_index_bptdb_step_row_row_step. (exists bcf_lt_gap_bptdb_step_row_row_step_bound. bcf_lt_gap_bptdb_step_row_row_step_bound + S (bcf_index_bptdb_step_row_row_step) = w) -> exists bcf_value_bptdb_step_row_row_step. ((((exists bcf_height_bptdb_step_row_row_step_entry. bcf_height_bptdb_step_row_row_step_entry + S (bcf_value_bptdb_step_row_row_step) = S ((S (bcf_index_bptdb_step_row_row_step)) * bcf_row_scale_bptdb_step_row)) /\ exists bcf_quotient_bptdb_step_row_row_step_entry. bcf_row_code_bptdb_step_row = bcf_quotient_bptdb_step_row_row_step_entry * S ((S (bcf_index_bptdb_step_row_row_step)) * bcf_row_scale_bptdb_step_row) + (bcf_value_bptdb_step_row_row_step))) /\ ((bcf_index_bptdb_step_row_row_step = 0 /\ bcf_value_bptdb_step_row_row_step = 1) \/ exists bcf_predecessor_bptdb_step_row_row_step bcf_left_bptdb_step_row_row_step bcf_right_bptdb_step_row_row_step. bcf_index_bptdb_step_row_row_step = S bcf_predecessor_bptdb_step_row_row_step /\ ((((exists bcf_height_bptdb_step_row_row_step_previous_left. bcf_height_bptdb_step_row_row_step_previous_left + S (bcf_left_bptdb_step_row_row_step) = S ((S (bcf_predecessor_bptdb_step_row_row_step)) * bcf_previous_scale_bptdb_step_row)) /\ exists bcf_quotient_bptdb_step_row_row_step_previous_left. bcf_previous_code_bptdb_step_row = bcf_quotient_bptdb_step_row_row_step_previous_left * S ((S (bcf_predecessor_bptdb_step_row_row_step)) * bcf_previous_scale_bptdb_step_row) + (bcf_left_bptdb_step_row_row_step))) /\ ((((exists bcf_height_bptdb_step_row_row_step_previous_right. bcf_height_bptdb_step_row_row_step_previous_right + S (bcf_right_bptdb_step_row_row_step) = S ((S (S (bcf_predecessor_bptdb_step_row_row_step))) * bcf_previous_scale_bptdb_step_row)) /\ exists bcf_quotient_bptdb_step_row_row_step_previous_right. bcf_previous_code_bptdb_step_row = bcf_quotient_bptdb_step_row_row_step_previous_right * S ((S (S (bcf_predecessor_bptdb_step_row_row_step))) * bcf_previous_scale_bptdb_step_row) + (bcf_right_bptdb_step_row_row_step))) /\ bcf_value_bptdb_step_row_row_step = bcf_left_bptdb_step_row_row_step + bcf_right_bptdb_step_row_row_step)))))))))) - 0142
specialize htable (S i) - 0143
apply htable - 0144
exact hir - 0145
cases hrow - 0146
cases hrow_witness - 0147
cases hrow_witness_witness - 0148
cases hrow_witness_witness_right - 0149
have hcode : b = x - 0150
specialize beta_at_unique bb - 0151
specialize beta_at_unique bc - 0152
specialize beta_at_unique (S i) - 0153
specialize beta_at_unique b - 0154
specialize beta_at_unique x - 0155
apply beta_at_unique - 0156
exact hbb - 0157
exact hrow_witness_witness_left - 0158
have hscale : c = x1 - 0159
specialize beta_at_unique sb - 0160
specialize beta_at_unique sc - 0161
specialize beta_at_unique (S i) - 0162
specialize beta_at_unique c - 0163
specialize beta_at_unique x1 - 0164
apply beta_at_unique - 0165
exact hsb - 0166
exact hrow_witness_witness_right_left - 0167
cases hrow_witness_witness_right_right - 0168
cases hrow_witness_witness_right_right_left - 0169
exfalso - 0170
specialize succ_ne_zero i - 0171
apply succ_ne_zero - 0172
exact hrow_witness_witness_right_right_left_left - 0173
cases hrow_witness_witness_right_right_right - 0174
cases hrow_witness_witness_right_right_right_witness - 0175
cases hrow_witness_witness_right_right_right_witness_witness - 0176
cases hrow_witness_witness_right_right_right_witness_witness_witness - 0177
cases hrow_witness_witness_right_right_right_witness_witness_witness_right - 0178
cases hrow_witness_witness_right_right_right_witness_witness_witness_right_right - 0179
have hpredecessor : i = x2 - 0180
specialize succ_injective i - 0181
specialize succ_injective x2 - 0182
apply succ_injective - 0183
exact hrow_witness_witness_right_right_right_witness_witness_witness_left - 0184
have hprevious_row_bound : exists bcf_lt_gap_bptdb_previous_row_bound. bcf_lt_gap_bptdb_previous_row_bound + S (i) = r - 0185
specialize lt_to_le (S i) - 0186
specialize lt_to_le r - 0187
apply lt_to_le - 0188
exact hir - 0189
have hprevious_code : ((exists bcf_height_bptdb_previous_code_at. bcf_height_bptdb_previous_code_at + S (x3) = S ((S (i)) * bc)) /\ exists bcf_quotient_bptdb_previous_code_at. bb = bcf_quotient_bptdb_previous_code_at * S ((S (i)) * bc) + (x3)) - 0190
rewrite hpredecessor - 0191
rewrite hpredecessor - 0192
exact hrow_witness_witness_right_right_right_witness_witness_witness_right_left - 0193
have hprevious_scale : ((exists bcf_height_bptdb_previous_scale_at. bcf_height_bptdb_previous_scale_at + S (x4) = S ((S (i)) * sc)) /\ exists bcf_quotient_bptdb_previous_scale_at. sb = bcf_quotient_bptdb_previous_scale_at * S ((S (i)) * sc) + (x4)) - 0194
rewrite hpredecessor - 0195
rewrite hpredecessor - 0196
exact hrow_witness_witness_right_right_right_witness_witness_witness_right_right_left - 0197
have hprevious_family : forall bcf_row_code_bptdb_previous_family bcf_row_scale_bptdb_previous_family. (((exists bcf_height_bptdb_previous_family_code_at. bcf_height_bptdb_previous_family_code_at + S (bcf_row_code_bptdb_previous_family) = S ((S (i)) * bc)) /\ exists bcf_quotient_bptdb_previous_family_code_at. bb = bcf_quotient_bptdb_previous_family_code_at * S ((S (i)) * bc) + (bcf_row_code_bptdb_previous_family))) -> (((exists bcf_height_bptdb_previous_family_scale_at. bcf_height_bptdb_previous_family_scale_at + S (bcf_row_scale_bptdb_previous_family) = S ((S (i)) * sc)) /\ exists bcf_quotient_bptdb_previous_family_scale_at. sb = bcf_quotient_bptdb_previous_family_scale_at * S ((S (i)) * sc) + (bcf_row_scale_bptdb_previous_family))) -> ((((exists bcf_lt_gap_bptdb_previous_family_boundary_diagonal_bound. bcf_lt_gap_bptdb_previous_family_boundary_diagonal_bound + S (i) = w) -> forall bcf_diagonal_value_bptdb_previous_family_boundary. (((exists bcf_height_bptdb_previous_family_boundary_diagonal_at. bcf_height_bptdb_previous_family_boundary_diagonal_at + S (bcf_diagonal_value_bptdb_previous_family_boundary) = S ((S (i)) * bcf_row_scale_bptdb_previous_family)) /\ exists bcf_quotient_bptdb_previous_family_boundary_diagonal_at. bcf_row_code_bptdb_previous_family = bcf_quotient_bptdb_previous_family_boundary_diagonal_at * S ((S (i)) * bcf_row_scale_bptdb_previous_family) + (bcf_diagonal_value_bptdb_previous_family_boundary))) -> bcf_diagonal_value_bptdb_previous_family_boundary = 1) /\ forall bcf_above_index_bptdb_previous_family_boundary bcf_above_value_bptdb_previous_family_boundary. (exists bcf_lt_gap_bptdb_previous_family_boundary_above_order. bcf_lt_gap_bptdb_previous_family_boundary_above_order + S (i) = bcf_above_index_bptdb_previous_family_boundary) -> (exists bcf_lt_gap_bptdb_previous_family_boundary_above_bound. bcf_lt_gap_bptdb_previous_family_boundary_above_bound + S (bcf_above_index_bptdb_previous_family_boundary) = w) -> (((exists bcf_height_bptdb_previous_family_boundary_above_at. bcf_height_bptdb_previous_family_boundary_above_at + S (bcf_above_value_bptdb_previous_family_boundary) = S ((S (bcf_above_index_bptdb_previous_family_boundary)) * bcf_row_scale_bptdb_previous_family)) /\ exists bcf_quotient_bptdb_previous_family_boundary_above_at. bcf_row_code_bptdb_previous_family = bcf_quotient_bptdb_previous_family_boundary_above_at * S ((S (bcf_above_index_bptdb_previous_family_boundary)) * bcf_row_scale_bptdb_previous_family) + (bcf_above_value_bptdb_previous_family_boundary))) -> bcf_above_value_bptdb_previous_family_boundary = 0)) - 0198
apply IH - 0199
exact hprevious_row_bound - 0200
have hprevious_boundary : (((exists bcf_lt_gap_bptdb_previous_boundary_diagonal_bound. bcf_lt_gap_bptdb_previous_boundary_diagonal_bound + S (i) = w) -> forall bcf_diagonal_value_bptdb_previous_boundary. (((exists bcf_height_bptdb_previous_boundary_diagonal_at. bcf_height_bptdb_previous_boundary_diagonal_at + S (bcf_diagonal_value_bptdb_previous_boundary) = S ((S (i)) * x4)) /\ exists bcf_quotient_bptdb_previous_boundary_diagonal_at. x3 = bcf_quotient_bptdb_previous_boundary_diagonal_at * S ((S (i)) * x4) + (bcf_diagonal_value_bptdb_previous_boundary))) -> bcf_diagonal_value_bptdb_previous_boundary = 1) /\ forall bcf_above_index_bptdb_previous_boundary bcf_above_value_bptdb_previous_boundary. (exists bcf_lt_gap_bptdb_previous_boundary_above_order. bcf_lt_gap_bptdb_previous_boundary_above_order + S (i) = bcf_above_index_bptdb_previous_boundary) -> (exists bcf_lt_gap_bptdb_previous_boundary_above_bound. bcf_lt_gap_bptdb_previous_boundary_above_bound + S (bcf_above_index_bptdb_previous_boundary) = w) -> (((exists bcf_height_bptdb_previous_boundary_above_at. bcf_height_bptdb_previous_boundary_above_at + S (bcf_above_value_bptdb_previous_boundary) = S ((S (bcf_above_index_bptdb_previous_boundary)) * x4)) /\ exists bcf_quotient_bptdb_previous_boundary_above_at. x3 = bcf_quotient_bptdb_previous_boundary_above_at * S ((S (bcf_above_index_bptdb_previous_boundary)) * x4) + (bcf_above_value_bptdb_previous_boundary))) -> bcf_above_value_bptdb_previous_boundary = 0) - 0201
specialize hprevious_family x3 - 0202
specialize hprevious_family x4 - 0203
apply hprevious_family - 0204
exact hprevious_code - 0205
exact hprevious_scale - 0206
cases hprevious_boundary - 0207
split - 0208
intro hiw - 0209
intro z - 0210
intro htarget - 0211
have hsemantic : ((exists bcf_height_bptdb_step_diagonal_semantic. bcf_height_bptdb_step_diagonal_semantic + S (z) = S ((S (S i)) * x1)) /\ exists bcf_quotient_bptdb_step_diagonal_semantic. x = bcf_quotient_bptdb_step_diagonal_semantic * S ((S (S i)) * x1) + (z)) - 0212
rewrite <- hcode - 0213
rewrite <- hscale - 0214
rewrite <- hscale - 0215
exact htarget - 0216
have hcell : exists bcf_cell_value_bptdb_step_diagonal_cell. ((((exists bcf_height_bptdb_step_diagonal_cell_entry. bcf_height_bptdb_step_diagonal_cell_entry + S (bcf_cell_value_bptdb_step_diagonal_cell) = S ((S (S i)) * x1)) /\ exists bcf_quotient_bptdb_step_diagonal_cell_entry. x = bcf_quotient_bptdb_step_diagonal_cell_entry * S ((S (S i)) * x1) + (bcf_cell_value_bptdb_step_diagonal_cell))) /\ ((S i = 0 /\ bcf_cell_value_bptdb_step_diagonal_cell = 1) \/ exists bcf_cell_predecessor_bptdb_step_diagonal_cell bcf_cell_left_bptdb_step_diagonal_cell bcf_cell_right_bptdb_step_diagonal_cell. S i = S bcf_cell_predecessor_bptdb_step_diagonal_cell /\ ((((exists bcf_height_bptdb_step_diagonal_cell_previous_left. bcf_height_bptdb_step_diagonal_cell_previous_left + S (bcf_cell_left_bptdb_step_diagonal_cell) = S ((S (bcf_cell_predecessor_bptdb_step_diagonal_cell)) * x4)) /\ exists bcf_quotient_bptdb_step_diagonal_cell_previous_left. x3 = bcf_quotient_bptdb_step_diagonal_cell_previous_left * S ((S (bcf_cell_predecessor_bptdb_step_diagonal_cell)) * x4) + (bcf_cell_left_bptdb_step_diagonal_cell))) /\ ((((exists bcf_height_bptdb_step_diagonal_cell_previous_right. bcf_height_bptdb_step_diagonal_cell_previous_right + S (bcf_cell_right_bptdb_step_diagonal_cell) = S ((S (S (bcf_cell_predecessor_bptdb_step_diagonal_cell))) * x4)) /\ exists bcf_quotient_bptdb_step_diagonal_cell_previous_right. x3 = bcf_quotient_bptdb_step_diagonal_cell_previous_right * S ((S (S (bcf_cell_predecessor_bptdb_step_diagonal_cell))) * x4) + (bcf_cell_right_bptdb_step_diagonal_cell))) /\ bcf_cell_value_bptdb_step_diagonal_cell = bcf_cell_left_bptdb_step_diagonal_cell + bcf_cell_right_bptdb_step_diagonal_cell)))) - 0217
specialize hrow_witness_witness_right_right_right_witness_witness_witness_right_right_right (S i) - 0218
apply hrow_witness_witness_right_right_right_witness_witness_witness_right_right_right - 0219
exact hiw - 0220
cases hcell - 0221
cases hcell_witness - 0222
have hvalue : z = x5 - 0223
specialize beta_at_unique x - 0224
specialize beta_at_unique x1 - 0225
specialize beta_at_unique (S i) - 0226
specialize beta_at_unique z - 0227
specialize beta_at_unique x5 - 0228
apply beta_at_unique - 0229
exact hsemantic - 0230
exact hcell_witness_left - 0231
cases hcell_witness_right - 0232
cases hcell_witness_right_left - 0233
exfalso - 0234
specialize succ_ne_zero i - 0235
apply succ_ne_zero - 0236
exact hcell_witness_right_left_left - 0237
cases hcell_witness_right_right - 0238
cases hcell_witness_right_right_witness - 0239
cases hcell_witness_right_right_witness_witness - 0240
cases hcell_witness_right_right_witness_witness_witness - 0241
cases hcell_witness_right_right_witness_witness_witness_right - 0242
cases hcell_witness_right_right_witness_witness_witness_right_right - 0243
have hcell_predecessor : i = x6 - 0244
specialize succ_injective i - 0245
specialize succ_injective x6 - 0246
apply succ_injective - 0247
exact hcell_witness_right_right_witness_witness_witness_left - 0248
have hleft_at : ((exists bcf_height_bptdb_step_previous_left. bcf_height_bptdb_step_previous_left + S (x7) = S ((S (i)) * x4)) /\ exists bcf_quotient_bptdb_step_previous_left. x3 = bcf_quotient_bptdb_step_previous_left * S ((S (i)) * x4) + (x7)) - 0249
rewrite hcell_predecessor - 0250
rewrite hcell_predecessor - 0251
exact hcell_witness_right_right_witness_witness_witness_right_left - 0252
have hright_at : ((exists bcf_height_bptdb_step_previous_right. bcf_height_bptdb_step_previous_right + S (x8) = S ((S (S i)) * x4)) /\ exists bcf_quotient_bptdb_step_previous_right. x3 = bcf_quotient_bptdb_step_previous_right * S ((S (S i)) * x4) + (x8)) - 0253
rewrite hcell_predecessor - 0254
rewrite hcell_predecessor - 0255
exact hcell_witness_right_right_witness_witness_witness_right_right_left - 0256
have hprevious_diagonal_bound : exists bcf_lt_gap_bptdb_previous_diagonal_bound. bcf_lt_gap_bptdb_previous_diagonal_bound + S (i) = w - 0257
specialize lt_to_le (S i) - 0258
specialize lt_to_le w - 0259
apply lt_to_le - 0260
exact hiw - 0261
have hdiagonal_family : forall z. (((exists bcf_height_bptdb_previous_diagonal_family. bcf_height_bptdb_previous_diagonal_family + S (z) = S ((S (i)) * x4)) /\ exists bcf_quotient_bptdb_previous_diagonal_family. x3 = bcf_quotient_bptdb_previous_diagonal_family * S ((S (i)) * x4) + (z))) -> z = 1 - 0262
apply hprevious_boundary_left - 0263
exact hprevious_diagonal_bound - 0264
have hleft_one : x7 = 1 - 0265
specialize hdiagonal_family x7 - 0266
apply hdiagonal_family - 0267
exact hleft_at - 0268
have hstrict_successor : exists bcf_lt_gap_bptdb_strict_successor. bcf_lt_gap_bptdb_strict_successor + S (i) = S i - 0269
specialize le_refl (S i) - 0270
exact le_refl - 0271
have hright_zero : x8 = 0 - 0272
specialize hprevious_boundary_right (S i) - 0273
specialize hprevious_boundary_right x8 - 0274
apply hprevious_boundary_right - 0275
exact hstrict_successor - 0276
exact hiw - 0277
exact hright_at - 0278
trans x5 - 0279
exact hvalue - 0280
rewrite hcell_witness_right_right_witness_witness_witness_right_right_right - 0281
simp [hleft_one, hright_zero] - 0282
intro j - 0283
intro z - 0284
intro hij - 0285
intro hjw - 0286
intro htarget - 0287
have hsemantic : ((exists bcf_height_bptdb_step_above_semantic. bcf_height_bptdb_step_above_semantic + S (z) = S ((S (j)) * x1)) /\ exists bcf_quotient_bptdb_step_above_semantic. x = bcf_quotient_bptdb_step_above_semantic * S ((S (j)) * x1) + (z)) - 0288
rewrite <- hcode - 0289
rewrite <- hscale - 0290
rewrite <- hscale - 0291
exact htarget - 0292
have hcell : exists bcf_cell_value_bptdb_step_above_cell. ((((exists bcf_height_bptdb_step_above_cell_entry. bcf_height_bptdb_step_above_cell_entry + S (bcf_cell_value_bptdb_step_above_cell) = S ((S (j)) * x1)) /\ exists bcf_quotient_bptdb_step_above_cell_entry. x = bcf_quotient_bptdb_step_above_cell_entry * S ((S (j)) * x1) + (bcf_cell_value_bptdb_step_above_cell))) /\ ((j = 0 /\ bcf_cell_value_bptdb_step_above_cell = 1) \/ exists bcf_cell_predecessor_bptdb_step_above_cell bcf_cell_left_bptdb_step_above_cell bcf_cell_right_bptdb_step_above_cell. j = S bcf_cell_predecessor_bptdb_step_above_cell /\ ((((exists bcf_height_bptdb_step_above_cell_previous_left. bcf_height_bptdb_step_above_cell_previous_left + S (bcf_cell_left_bptdb_step_above_cell) = S ((S (bcf_cell_predecessor_bptdb_step_above_cell)) * x4)) /\ exists bcf_quotient_bptdb_step_above_cell_previous_left. x3 = bcf_quotient_bptdb_step_above_cell_previous_left * S ((S (bcf_cell_predecessor_bptdb_step_above_cell)) * x4) + (bcf_cell_left_bptdb_step_above_cell))) /\ ((((exists bcf_height_bptdb_step_above_cell_previous_right. bcf_height_bptdb_step_above_cell_previous_right + S (bcf_cell_right_bptdb_step_above_cell) = S ((S (S (bcf_cell_predecessor_bptdb_step_above_cell))) * x4)) /\ exists bcf_quotient_bptdb_step_above_cell_previous_right. x3 = bcf_quotient_bptdb_step_above_cell_previous_right * S ((S (S (bcf_cell_predecessor_bptdb_step_above_cell))) * x4) + (bcf_cell_right_bptdb_step_above_cell))) /\ bcf_cell_value_bptdb_step_above_cell = bcf_cell_left_bptdb_step_above_cell + bcf_cell_right_bptdb_step_above_cell)))) - 0293
specialize hrow_witness_witness_right_right_right_witness_witness_witness_right_right_right j - 0294
apply hrow_witness_witness_right_right_right_witness_witness_witness_right_right_right - 0295
exact hjw - 0296
cases hcell - 0297
cases hcell_witness - 0298
have hvalue : z = x5 - 0299
specialize beta_at_unique x - 0300
specialize beta_at_unique x1 - 0301
specialize beta_at_unique j - 0302
specialize beta_at_unique z - 0303
specialize beta_at_unique x5 - 0304
apply beta_at_unique - 0305
exact hsemantic - 0306
exact hcell_witness_left - 0307
cases hcell_witness_right - 0308
cases hcell_witness_right_left - 0309
cases hij - 0310
have hbad : S (S i) = 0 - 0311
specialize add_eq_zero_right x6 - 0312
specialize add_eq_zero_right (S (S i)) - 0313
apply add_eq_zero_right - 0314
trans j - 0315
exact hij_witness - 0316
exact hcell_witness_right_left_left - 0317
exfalso - 0318
specialize succ_ne_zero (S i) - 0319
apply succ_ne_zero - 0320
exact hbad - 0321
cases hcell_witness_right_right - 0322
cases hcell_witness_right_right_witness - 0323
cases hcell_witness_right_right_witness_witness - 0324
cases hcell_witness_right_right_witness_witness_witness - 0325
cases hcell_witness_right_right_witness_witness_witness_right - 0326
cases hcell_witness_right_right_witness_witness_witness_right_right - 0327
have hshifted_order : exists bcf_lt_gap_bptdb_shifted_above_order. bcf_lt_gap_bptdb_shifted_above_order + S (S i) = S x6 - 0328
rewrite <- hcell_witness_right_right_witness_witness_witness_left - 0329
exact hij - 0330
have hprevious_left_order : exists bcf_lt_gap_bptdb_previous_left_order. bcf_lt_gap_bptdb_previous_left_order + S (i) = x6 - 0331
specialize le_of_succ_le_succ (S i) - 0332
specialize le_of_succ_le_succ x6 - 0333
apply le_of_succ_le_succ - 0334
exact hshifted_order - 0335
have hprevious_right_order : exists bcf_lt_gap_bptdb_previous_right_order. bcf_lt_gap_bptdb_previous_right_order + S (i) = S x6 - 0336
specialize lt_to_le (S i) - 0337
specialize lt_to_le (S x6) - 0338
apply lt_to_le - 0339
exact hshifted_order - 0340
have hprevious_right_bound : exists bcf_lt_gap_bptdb_previous_right_bound. bcf_lt_gap_bptdb_previous_right_bound + S (S x6) = w - 0341
rewrite <- hcell_witness_right_right_witness_witness_witness_left - 0342
exact hjw - 0343
have hprevious_left_bound : exists bcf_lt_gap_bptdb_previous_left_bound. bcf_lt_gap_bptdb_previous_left_bound + S (x6) = w - 0344
specialize lt_to_le (S x6) - 0345
specialize lt_to_le w - 0346
apply lt_to_le - 0347
exact hprevious_right_bound - 0348
have hleft_at : ((exists bcf_height_bptdb_above_previous_left. bcf_height_bptdb_above_previous_left + S (x7) = S ((S (x6)) * x4)) /\ exists bcf_quotient_bptdb_above_previous_left. x3 = bcf_quotient_bptdb_above_previous_left * S ((S (x6)) * x4) + (x7)) - 0349
exact hcell_witness_right_right_witness_witness_witness_right_left - 0350
have hright_at : ((exists bcf_height_bptdb_above_previous_right. bcf_height_bptdb_above_previous_right + S (x8) = S ((S (S x6)) * x4)) /\ exists bcf_quotient_bptdb_above_previous_right. x3 = bcf_quotient_bptdb_above_previous_right * S ((S (S x6)) * x4) + (x8)) - 0351
exact hcell_witness_right_right_witness_witness_witness_right_right_left - 0352
have hleft_zero : x7 = 0 - 0353
specialize hprevious_boundary_right x6 - 0354
specialize hprevious_boundary_right x7 - 0355
apply hprevious_boundary_right - 0356
exact hprevious_left_order - 0357
exact hprevious_left_bound - 0358
exact hleft_at - 0359
have hright_zero : x8 = 0 - 0360
specialize hprevious_boundary_right (S x6) - 0361
specialize hprevious_boundary_right x8 - 0362
apply hprevious_boundary_right - 0363
exact hprevious_right_order - 0364
exact hprevious_right_bound - 0365
exact hright_at - 0366
trans x5 - 0367
exact hvalue - 0368
rewrite hcell_witness_right_right_witness_witness_witness_right_right_right - 0369
simp [hleft_zero, hright_zero]