Exact expanded PA statement
forall n z. (((exists bcf_lt_gap_bclz_choose_out_of_range. bcf_lt_gap_bclz_choose_out_of_range + S (n) = 0) /\ z = 0) \/ ((exists bcf_le_gap_bclz_choose_in_range. bcf_le_gap_bclz_choose_in_range + (0) = n) /\ (exists bcf_row_code_code_bclz_choose bcf_row_code_scale_bclz_choose bcf_row_scale_code_bclz_choose bcf_row_scale_scale_bclz_choose bcf_row_code_bclz_choose bcf_row_scale_bclz_choose. ((forall bcf_row_index_bclz_choose_table. (exists bcf_lt_gap_bclz_choose_table_row_bound. bcf_lt_gap_bclz_choose_table_row_bound + S (bcf_row_index_bclz_choose_table) = S (n)) -> exists bcf_row_code_bclz_choose_table bcf_row_scale_bclz_choose_table. ((((exists bcf_height_bclz_choose_table_decoded_row_code. bcf_height_bclz_choose_table_decoded_row_code + S (bcf_row_code_bclz_choose_table) = S ((S (bcf_row_index_bclz_choose_table)) * bcf_row_code_scale_bclz_choose)) /\ exists bcf_quotient_bclz_choose_table_decoded_row_code. bcf_row_code_code_bclz_choose = bcf_quotient_bclz_choose_table_decoded_row_code * S ((S (bcf_row_index_bclz_choose_table)) * bcf_row_code_scale_bclz_choose) + (bcf_row_code_bclz_choose_table))) /\ ((((exists bcf_height_bclz_choose_table_decoded_row_scale. bcf_height_bclz_choose_table_decoded_row_scale + S (bcf_row_scale_bclz_choose_table) = S ((S (bcf_row_index_bclz_choose_table)) * bcf_row_scale_scale_bclz_choose)) /\ exists bcf_quotient_bclz_choose_table_decoded_row_scale. bcf_row_scale_code_bclz_choose = bcf_quotient_bclz_choose_table_decoded_row_scale * S ((S (bcf_row_index_bclz_choose_table)) * bcf_row_scale_scale_bclz_choose) + (bcf_row_scale_bclz_choose_table))) /\ ((bcf_row_index_bclz_choose_table = 0 /\ (forall bcf_index_bclz_choose_table_zero_row. (exists bcf_lt_gap_bclz_choose_table_zero_row_bound. bcf_lt_gap_bclz_choose_table_zero_row_bound + S (bcf_index_bclz_choose_table_zero_row) = S (n)) -> exists bcf_value_bclz_choose_table_zero_row. ((((exists bcf_height_bclz_choose_table_zero_row_entry. bcf_height_bclz_choose_table_zero_row_entry + S (bcf_value_bclz_choose_table_zero_row) = S ((S (bcf_index_bclz_choose_table_zero_row)) * bcf_row_scale_bclz_choose_table)) /\ exists bcf_quotient_bclz_choose_table_zero_row_entry. bcf_row_code_bclz_choose_table = bcf_quotient_bclz_choose_table_zero_row_entry * S ((S (bcf_index_bclz_choose_table_zero_row)) * bcf_row_scale_bclz_choose_table) + (bcf_value_bclz_choose_table_zero_row))) /\ ((bcf_index_bclz_choose_table_zero_row = 0 /\ bcf_value_bclz_choose_table_zero_row = 1) \/ exists bcf_predecessor_bclz_choose_table_zero_row. bcf_index_bclz_choose_table_zero_row = S bcf_predecessor_bclz_choose_table_zero_row /\ bcf_value_bclz_choose_table_zero_row = 0)))) \/ exists bcf_predecessor_bclz_choose_table bcf_previous_code_bclz_choose_table bcf_previous_scale_bclz_choose_table. bcf_row_index_bclz_choose_table = S bcf_predecessor_bclz_choose_table /\ ((((exists bcf_height_bclz_choose_table_decoded_previous_code. bcf_height_bclz_choose_table_decoded_previous_code + S (bcf_previous_code_bclz_choose_table) = S ((S (bcf_predecessor_bclz_choose_table)) * bcf_row_code_scale_bclz_choose)) /\ exists bcf_quotient_bclz_choose_table_decoded_previous_code. bcf_row_code_code_bclz_choose = bcf_quotient_bclz_choose_table_decoded_previous_code * S ((S (bcf_predecessor_bclz_choose_table)) * bcf_row_code_scale_bclz_choose) + (bcf_previous_code_bclz_choose_table))) /\ ((((exists bcf_height_bclz_choose_table_decoded_previous_scale. bcf_height_bclz_choose_table_decoded_previous_scale + S (bcf_previous_scale_bclz_choose_table) = S ((S (bcf_predecessor_bclz_choose_table)) * bcf_row_scale_scale_bclz_choose)) /\ exists bcf_quotient_bclz_choose_table_decoded_previous_scale. bcf_row_scale_code_bclz_choose = bcf_quotient_bclz_choose_table_decoded_previous_scale * S ((S (bcf_predecessor_bclz_choose_table)) * bcf_row_scale_scale_bclz_choose) + (bcf_previous_scale_bclz_choose_table))) /\ (forall bcf_index_bclz_choose_table_row_step. (exists bcf_lt_gap_bclz_choose_table_row_step_bound. bcf_lt_gap_bclz_choose_table_row_step_bound + S (bcf_index_bclz_choose_table_row_step) = S (n)) -> exists bcf_value_bclz_choose_table_row_step. ((((exists bcf_height_bclz_choose_table_row_step_entry. bcf_height_bclz_choose_table_row_step_entry + S (bcf_value_bclz_choose_table_row_step) = S ((S (bcf_index_bclz_choose_table_row_step)) * bcf_row_scale_bclz_choose_table)) /\ exists bcf_quotient_bclz_choose_table_row_step_entry. bcf_row_code_bclz_choose_table = bcf_quotient_bclz_choose_table_row_step_entry * S ((S (bcf_index_bclz_choose_table_row_step)) * bcf_row_scale_bclz_choose_table) + (bcf_value_bclz_choose_table_row_step))) /\ ((bcf_index_bclz_choose_table_row_step = 0 /\ bcf_value_bclz_choose_table_row_step = 1) \/ exists bcf_predecessor_bclz_choose_table_row_step bcf_left_bclz_choose_table_row_step bcf_right_bclz_choose_table_row_step. bcf_index_bclz_choose_table_row_step = S bcf_predecessor_bclz_choose_table_row_step /\ ((((exists bcf_height_bclz_choose_table_row_step_previous_left. bcf_height_bclz_choose_table_row_step_previous_left + S (bcf_left_bclz_choose_table_row_step) = S ((S (bcf_predecessor_bclz_choose_table_row_step)) * bcf_previous_scale_bclz_choose_table)) /\ exists bcf_quotient_bclz_choose_table_row_step_previous_left. bcf_previous_code_bclz_choose_table = bcf_quotient_bclz_choose_table_row_step_previous_left * S ((S (bcf_predecessor_bclz_choose_table_row_step)) * bcf_previous_scale_bclz_choose_table) + (bcf_left_bclz_choose_table_row_step))) /\ ((((exists bcf_height_bclz_choose_table_row_step_previous_right. bcf_height_bclz_choose_table_row_step_previous_right + S (bcf_right_bclz_choose_table_row_step) = S ((S (S (bcf_predecessor_bclz_choose_table_row_step))) * bcf_previous_scale_bclz_choose_table)) /\ exists bcf_quotient_bclz_choose_table_row_step_previous_right. bcf_previous_code_bclz_choose_table = bcf_quotient_bclz_choose_table_row_step_previous_right * S ((S (S (bcf_predecessor_bclz_choose_table_row_step))) * bcf_previous_scale_bclz_choose_table) + (bcf_right_bclz_choose_table_row_step))) /\ bcf_value_bclz_choose_table_row_step = bcf_left_bclz_choose_table_row_step + bcf_right_bclz_choose_table_row_step))))))))))) /\ ((((exists bcf_height_bclz_choose_decoded_row_code. bcf_height_bclz_choose_decoded_row_code + S (bcf_row_code_bclz_choose) = S ((S (n)) * bcf_row_code_scale_bclz_choose)) /\ exists bcf_quotient_bclz_choose_decoded_row_code. bcf_row_code_code_bclz_choose = bcf_quotient_bclz_choose_decoded_row_code * S ((S (n)) * bcf_row_code_scale_bclz_choose) + (bcf_row_code_bclz_choose))) /\ ((((exists bcf_height_bclz_choose_decoded_row_scale. bcf_height_bclz_choose_decoded_row_scale + S (bcf_row_scale_bclz_choose) = S ((S (n)) * bcf_row_scale_scale_bclz_choose)) /\ exists bcf_quotient_bclz_choose_decoded_row_scale. bcf_row_scale_code_bclz_choose = bcf_quotient_bclz_choose_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_bclz_choose) + (bcf_row_scale_bclz_choose))) /\ (((exists bcf_height_bclz_choose_decoded_value. bcf_height_bclz_choose_decoded_value + S (z) = S ((S (0)) * bcf_row_scale_bclz_choose)) /\ exists bcf_quotient_bclz_choose_decoded_value. bcf_row_code_bclz_choose = bcf_quotient_bclz_choose_decoded_value * S ((S (0)) * bcf_row_scale_bclz_choose) + (z))))))))) -> z = 1Structural proof guide
The zeroth entry of every Pascal row is one.
Direct prerequisites: zero_le, lt_not_le, le_refl, succ_le_succ, succ_ne_zero, beta_at_unique. The authored body proceeds by case analysis (38), intermediate claims (12), equality transport (3).
Proof neighborhood
Direct dependencies
BT000W zero_le BT001I lt_not_le BT000E le_refl BT0016 succ_le_succ BT000C succ_ne_zero 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 n - 0002
intro z - 0003
intro hchoose - 0004
cases hchoose - 0005
cases hchoose_left - 0006
exfalso - 0007
specialize lt_not_le n - 0008
specialize lt_not_le 0 - 0009
apply lt_not_le - 0010
exact hchoose_left_left - 0011
specialize zero_le n - 0012
exact zero_le - 0013
cases hchoose_right - 0014
cases hchoose_right_right - 0015
cases hchoose_right_right_witness - 0016
cases hchoose_right_right_witness_witness - 0017
cases hchoose_right_right_witness_witness_witness - 0018
cases hchoose_right_right_witness_witness_witness_witness - 0019
cases hchoose_right_right_witness_witness_witness_witness_witness - 0020
cases hchoose_right_right_witness_witness_witness_witness_witness_witness - 0021
cases hchoose_right_right_witness_witness_witness_witness_witness_witness_right - 0022
cases hchoose_right_right_witness_witness_witness_witness_witness_witness_right_right - 0023
have hrow_bound : exists bcf_lt_gap_bclz_row_bound. bcf_lt_gap_bclz_row_bound + S (n) = S n - 0024
specialize le_refl (S n) - 0025
exact le_refl - 0026
have hinner_bound : exists bcf_lt_gap_bclz_inner_bound. bcf_lt_gap_bclz_inner_bound + S (0) = S n - 0027
specialize succ_le_succ 0 - 0028
specialize succ_le_succ n - 0029
apply succ_le_succ - 0030
specialize zero_le n - 0031
exact zero_le - 0032
have hrow : exists bcf_row_code_bclz_table_row bcf_row_scale_bclz_table_row. ((((exists bcf_height_bclz_table_row_decoded_row_code. bcf_height_bclz_table_row_decoded_row_code + S (bcf_row_code_bclz_table_row) = S ((S (n)) * x1)) /\ exists bcf_quotient_bclz_table_row_decoded_row_code. x = bcf_quotient_bclz_table_row_decoded_row_code * S ((S (n)) * x1) + (bcf_row_code_bclz_table_row))) /\ ((((exists bcf_height_bclz_table_row_decoded_row_scale. bcf_height_bclz_table_row_decoded_row_scale + S (bcf_row_scale_bclz_table_row) = S ((S (n)) * x3)) /\ exists bcf_quotient_bclz_table_row_decoded_row_scale. x2 = bcf_quotient_bclz_table_row_decoded_row_scale * S ((S (n)) * x3) + (bcf_row_scale_bclz_table_row))) /\ ((n = 0 /\ (forall bcf_index_bclz_table_row_zero_row. (exists bcf_lt_gap_bclz_table_row_zero_row_bound. bcf_lt_gap_bclz_table_row_zero_row_bound + S (bcf_index_bclz_table_row_zero_row) = S n) -> exists bcf_value_bclz_table_row_zero_row. ((((exists bcf_height_bclz_table_row_zero_row_entry. bcf_height_bclz_table_row_zero_row_entry + S (bcf_value_bclz_table_row_zero_row) = S ((S (bcf_index_bclz_table_row_zero_row)) * bcf_row_scale_bclz_table_row)) /\ exists bcf_quotient_bclz_table_row_zero_row_entry. bcf_row_code_bclz_table_row = bcf_quotient_bclz_table_row_zero_row_entry * S ((S (bcf_index_bclz_table_row_zero_row)) * bcf_row_scale_bclz_table_row) + (bcf_value_bclz_table_row_zero_row))) /\ ((bcf_index_bclz_table_row_zero_row = 0 /\ bcf_value_bclz_table_row_zero_row = 1) \/ exists bcf_predecessor_bclz_table_row_zero_row. bcf_index_bclz_table_row_zero_row = S bcf_predecessor_bclz_table_row_zero_row /\ bcf_value_bclz_table_row_zero_row = 0)))) \/ exists bcf_predecessor_bclz_table_row bcf_previous_code_bclz_table_row bcf_previous_scale_bclz_table_row. n = S bcf_predecessor_bclz_table_row /\ ((((exists bcf_height_bclz_table_row_decoded_previous_code. bcf_height_bclz_table_row_decoded_previous_code + S (bcf_previous_code_bclz_table_row) = S ((S (bcf_predecessor_bclz_table_row)) * x1)) /\ exists bcf_quotient_bclz_table_row_decoded_previous_code. x = bcf_quotient_bclz_table_row_decoded_previous_code * S ((S (bcf_predecessor_bclz_table_row)) * x1) + (bcf_previous_code_bclz_table_row))) /\ ((((exists bcf_height_bclz_table_row_decoded_previous_scale. bcf_height_bclz_table_row_decoded_previous_scale + S (bcf_previous_scale_bclz_table_row) = S ((S (bcf_predecessor_bclz_table_row)) * x3)) /\ exists bcf_quotient_bclz_table_row_decoded_previous_scale. x2 = bcf_quotient_bclz_table_row_decoded_previous_scale * S ((S (bcf_predecessor_bclz_table_row)) * x3) + (bcf_previous_scale_bclz_table_row))) /\ (forall bcf_index_bclz_table_row_row_step. (exists bcf_lt_gap_bclz_table_row_row_step_bound. bcf_lt_gap_bclz_table_row_row_step_bound + S (bcf_index_bclz_table_row_row_step) = S n) -> exists bcf_value_bclz_table_row_row_step. ((((exists bcf_height_bclz_table_row_row_step_entry. bcf_height_bclz_table_row_row_step_entry + S (bcf_value_bclz_table_row_row_step) = S ((S (bcf_index_bclz_table_row_row_step)) * bcf_row_scale_bclz_table_row)) /\ exists bcf_quotient_bclz_table_row_row_step_entry. bcf_row_code_bclz_table_row = bcf_quotient_bclz_table_row_row_step_entry * S ((S (bcf_index_bclz_table_row_row_step)) * bcf_row_scale_bclz_table_row) + (bcf_value_bclz_table_row_row_step))) /\ ((bcf_index_bclz_table_row_row_step = 0 /\ bcf_value_bclz_table_row_row_step = 1) \/ exists bcf_predecessor_bclz_table_row_row_step bcf_left_bclz_table_row_row_step bcf_right_bclz_table_row_row_step. bcf_index_bclz_table_row_row_step = S bcf_predecessor_bclz_table_row_row_step /\ ((((exists bcf_height_bclz_table_row_row_step_previous_left. bcf_height_bclz_table_row_row_step_previous_left + S (bcf_left_bclz_table_row_row_step) = S ((S (bcf_predecessor_bclz_table_row_row_step)) * bcf_previous_scale_bclz_table_row)) /\ exists bcf_quotient_bclz_table_row_row_step_previous_left. bcf_previous_code_bclz_table_row = bcf_quotient_bclz_table_row_row_step_previous_left * S ((S (bcf_predecessor_bclz_table_row_row_step)) * bcf_previous_scale_bclz_table_row) + (bcf_left_bclz_table_row_row_step))) /\ ((((exists bcf_height_bclz_table_row_row_step_previous_right. bcf_height_bclz_table_row_row_step_previous_right + S (bcf_right_bclz_table_row_row_step) = S ((S (S (bcf_predecessor_bclz_table_row_row_step))) * bcf_previous_scale_bclz_table_row)) /\ exists bcf_quotient_bclz_table_row_row_step_previous_right. bcf_previous_code_bclz_table_row = bcf_quotient_bclz_table_row_row_step_previous_right * S ((S (S (bcf_predecessor_bclz_table_row_row_step))) * bcf_previous_scale_bclz_table_row) + (bcf_right_bclz_table_row_row_step))) /\ bcf_value_bclz_table_row_row_step = bcf_left_bclz_table_row_row_step + bcf_right_bclz_table_row_row_step)))))))))) - 0033
specialize hchoose_right_right_witness_witness_witness_witness_witness_witness_left n - 0034
apply hchoose_right_right_witness_witness_witness_witness_witness_witness_left - 0035
exact hrow_bound - 0036
cases hrow - 0037
cases hrow_witness - 0038
cases hrow_witness_witness - 0039
cases hrow_witness_witness_right - 0040
have hcode : x4 = x6 - 0041
specialize beta_at_unique x - 0042
specialize beta_at_unique x1 - 0043
specialize beta_at_unique n - 0044
specialize beta_at_unique x4 - 0045
specialize beta_at_unique x6 - 0046
apply beta_at_unique - 0047
exact hchoose_right_right_witness_witness_witness_witness_witness_witness_right_left - 0048
exact hrow_witness_witness_left - 0049
have hscale : x5 = x7 - 0050
specialize beta_at_unique x2 - 0051
specialize beta_at_unique x3 - 0052
specialize beta_at_unique n - 0053
specialize beta_at_unique x5 - 0054
specialize beta_at_unique x7 - 0055
apply beta_at_unique - 0056
exact hchoose_right_right_witness_witness_witness_witness_witness_witness_right_right_left - 0057
exact hrow_witness_witness_right_left - 0058
have hvalue : ((exists bcf_height_bclz_semantic_at. bcf_height_bclz_semantic_at + S (z) = S ((S (0)) * x7)) /\ exists bcf_quotient_bclz_semantic_at. x6 = bcf_quotient_bclz_semantic_at * S ((S (0)) * x7) + (z)) - 0059
rewrite <- hcode - 0060
rewrite <- hscale - 0061
rewrite <- hscale - 0062
exact hchoose_right_right_witness_witness_witness_witness_witness_witness_right_right_right - 0063
cases hrow_witness_witness_right_right - 0064
cases hrow_witness_witness_right_right_left - 0065
have hcell : exists bcf_cell_value_bclz_zero_cell. ((((exists bcf_height_bclz_zero_cell_entry. bcf_height_bclz_zero_cell_entry + S (bcf_cell_value_bclz_zero_cell) = S ((S (0)) * x7)) /\ exists bcf_quotient_bclz_zero_cell_entry. x6 = bcf_quotient_bclz_zero_cell_entry * S ((S (0)) * x7) + (bcf_cell_value_bclz_zero_cell))) /\ ((0 = 0 /\ bcf_cell_value_bclz_zero_cell = 1) \/ exists bcf_cell_predecessor_bclz_zero_cell. 0 = S bcf_cell_predecessor_bclz_zero_cell /\ bcf_cell_value_bclz_zero_cell = 0)) - 0066
specialize hrow_witness_witness_right_right_left_right 0 - 0067
apply hrow_witness_witness_right_right_left_right - 0068
exact hinner_bound - 0069
cases hcell - 0070
cases hcell_witness - 0071
have hzvalue : z = x8 - 0072
specialize beta_at_unique x6 - 0073
specialize beta_at_unique x7 - 0074
specialize beta_at_unique 0 - 0075
specialize beta_at_unique z - 0076
specialize beta_at_unique x8 - 0077
apply beta_at_unique - 0078
exact hvalue - 0079
exact hcell_witness_left - 0080
cases hcell_witness_right - 0081
cases hcell_witness_right_left - 0082
trans x8 - 0083
exact hzvalue - 0084
exact hcell_witness_right_left_right - 0085
cases hcell_witness_right_right - 0086
cases hcell_witness_right_right_witness - 0087
exfalso - 0088
have hbad : S x9 = 0 - 0089
symm - 0090
exact hcell_witness_right_right_witness_left - 0091
specialize succ_ne_zero x9 - 0092
apply succ_ne_zero - 0093
exact hbad - 0094
cases hrow_witness_witness_right_right_right - 0095
cases hrow_witness_witness_right_right_right_witness - 0096
cases hrow_witness_witness_right_right_right_witness_witness - 0097
cases hrow_witness_witness_right_right_right_witness_witness_witness - 0098
cases hrow_witness_witness_right_right_right_witness_witness_witness_right - 0099
cases hrow_witness_witness_right_right_right_witness_witness_witness_right_right - 0100
have hcell : exists bcf_cell_value_bclz_step_cell. ((((exists bcf_height_bclz_step_cell_entry. bcf_height_bclz_step_cell_entry + S (bcf_cell_value_bclz_step_cell) = S ((S (0)) * x7)) /\ exists bcf_quotient_bclz_step_cell_entry. x6 = bcf_quotient_bclz_step_cell_entry * S ((S (0)) * x7) + (bcf_cell_value_bclz_step_cell))) /\ ((0 = 0 /\ bcf_cell_value_bclz_step_cell = 1) \/ exists bcf_cell_predecessor_bclz_step_cell bcf_cell_left_bclz_step_cell bcf_cell_right_bclz_step_cell. 0 = S bcf_cell_predecessor_bclz_step_cell /\ ((((exists bcf_height_bclz_step_cell_previous_left. bcf_height_bclz_step_cell_previous_left + S (bcf_cell_left_bclz_step_cell) = S ((S (bcf_cell_predecessor_bclz_step_cell)) * x10)) /\ exists bcf_quotient_bclz_step_cell_previous_left. x9 = bcf_quotient_bclz_step_cell_previous_left * S ((S (bcf_cell_predecessor_bclz_step_cell)) * x10) + (bcf_cell_left_bclz_step_cell))) /\ ((((exists bcf_height_bclz_step_cell_previous_right. bcf_height_bclz_step_cell_previous_right + S (bcf_cell_right_bclz_step_cell) = S ((S (S (bcf_cell_predecessor_bclz_step_cell))) * x10)) /\ exists bcf_quotient_bclz_step_cell_previous_right. x9 = bcf_quotient_bclz_step_cell_previous_right * S ((S (S (bcf_cell_predecessor_bclz_step_cell))) * x10) + (bcf_cell_right_bclz_step_cell))) /\ bcf_cell_value_bclz_step_cell = bcf_cell_left_bclz_step_cell + bcf_cell_right_bclz_step_cell)))) - 0101
specialize hrow_witness_witness_right_right_right_witness_witness_witness_right_right_right 0 - 0102
apply hrow_witness_witness_right_right_right_witness_witness_witness_right_right_right - 0103
exact hinner_bound - 0104
cases hcell - 0105
cases hcell_witness - 0106
have hzvalue : z = x11 - 0107
specialize beta_at_unique x6 - 0108
specialize beta_at_unique x7 - 0109
specialize beta_at_unique 0 - 0110
specialize beta_at_unique z - 0111
specialize beta_at_unique x11 - 0112
apply beta_at_unique - 0113
exact hvalue - 0114
exact hcell_witness_left - 0115
cases hcell_witness_right - 0116
cases hcell_witness_right_left - 0117
trans x11 - 0118
exact hzvalue - 0119
exact hcell_witness_right_left_right - 0120
cases hcell_witness_right_right - 0121
cases hcell_witness_right_right_witness - 0122
cases hcell_witness_right_right_witness_witness - 0123
cases hcell_witness_right_right_witness_witness_witness - 0124
exfalso - 0125
have hbad : S x12 = 0 - 0126
symm - 0127
exact hcell_witness_right_right_witness_witness_witness_left - 0128
specialize succ_ne_zero x12 - 0129
apply succ_ne_zero - 0130
exact hbad