Exact expanded PA statement
forall n k x y. (((exists bcf_lt_gap_bclf_left_out_of_range. bcf_lt_gap_bclf_left_out_of_range + S (n) = k) /\ x = 0) \/ ((exists bcf_le_gap_bclf_left_in_range. bcf_le_gap_bclf_left_in_range + (k) = n) /\ (exists bcf_row_code_code_bclf_left bcf_row_code_scale_bclf_left bcf_row_scale_code_bclf_left bcf_row_scale_scale_bclf_left bcf_row_code_bclf_left bcf_row_scale_bclf_left. ((forall bcf_row_index_bclf_left_table. (exists bcf_lt_gap_bclf_left_table_row_bound. bcf_lt_gap_bclf_left_table_row_bound + S (bcf_row_index_bclf_left_table) = S (n)) -> exists bcf_row_code_bclf_left_table bcf_row_scale_bclf_left_table. ((((exists bcf_height_bclf_left_table_decoded_row_code. bcf_height_bclf_left_table_decoded_row_code + S (bcf_row_code_bclf_left_table) = S ((S (bcf_row_index_bclf_left_table)) * bcf_row_code_scale_bclf_left)) /\ exists bcf_quotient_bclf_left_table_decoded_row_code. bcf_row_code_code_bclf_left = bcf_quotient_bclf_left_table_decoded_row_code * S ((S (bcf_row_index_bclf_left_table)) * bcf_row_code_scale_bclf_left) + (bcf_row_code_bclf_left_table))) /\ ((((exists bcf_height_bclf_left_table_decoded_row_scale. bcf_height_bclf_left_table_decoded_row_scale + S (bcf_row_scale_bclf_left_table) = S ((S (bcf_row_index_bclf_left_table)) * bcf_row_scale_scale_bclf_left)) /\ exists bcf_quotient_bclf_left_table_decoded_row_scale. bcf_row_scale_code_bclf_left = bcf_quotient_bclf_left_table_decoded_row_scale * S ((S (bcf_row_index_bclf_left_table)) * bcf_row_scale_scale_bclf_left) + (bcf_row_scale_bclf_left_table))) /\ ((bcf_row_index_bclf_left_table = 0 /\ (forall bcf_index_bclf_left_table_zero_row. (exists bcf_lt_gap_bclf_left_table_zero_row_bound. bcf_lt_gap_bclf_left_table_zero_row_bound + S (bcf_index_bclf_left_table_zero_row) = S (n)) -> exists bcf_value_bclf_left_table_zero_row. ((((exists bcf_height_bclf_left_table_zero_row_entry. bcf_height_bclf_left_table_zero_row_entry + S (bcf_value_bclf_left_table_zero_row) = S ((S (bcf_index_bclf_left_table_zero_row)) * bcf_row_scale_bclf_left_table)) /\ exists bcf_quotient_bclf_left_table_zero_row_entry. bcf_row_code_bclf_left_table = bcf_quotient_bclf_left_table_zero_row_entry * S ((S (bcf_index_bclf_left_table_zero_row)) * bcf_row_scale_bclf_left_table) + (bcf_value_bclf_left_table_zero_row))) /\ ((bcf_index_bclf_left_table_zero_row = 0 /\ bcf_value_bclf_left_table_zero_row = 1) \/ exists bcf_predecessor_bclf_left_table_zero_row. bcf_index_bclf_left_table_zero_row = S bcf_predecessor_bclf_left_table_zero_row /\ bcf_value_bclf_left_table_zero_row = 0)))) \/ exists bcf_predecessor_bclf_left_table bcf_previous_code_bclf_left_table bcf_previous_scale_bclf_left_table. bcf_row_index_bclf_left_table = S bcf_predecessor_bclf_left_table /\ ((((exists bcf_height_bclf_left_table_decoded_previous_code. bcf_height_bclf_left_table_decoded_previous_code + S (bcf_previous_code_bclf_left_table) = S ((S (bcf_predecessor_bclf_left_table)) * bcf_row_code_scale_bclf_left)) /\ exists bcf_quotient_bclf_left_table_decoded_previous_code. bcf_row_code_code_bclf_left = bcf_quotient_bclf_left_table_decoded_previous_code * S ((S (bcf_predecessor_bclf_left_table)) * bcf_row_code_scale_bclf_left) + (bcf_previous_code_bclf_left_table))) /\ ((((exists bcf_height_bclf_left_table_decoded_previous_scale. bcf_height_bclf_left_table_decoded_previous_scale + S (bcf_previous_scale_bclf_left_table) = S ((S (bcf_predecessor_bclf_left_table)) * bcf_row_scale_scale_bclf_left)) /\ exists bcf_quotient_bclf_left_table_decoded_previous_scale. bcf_row_scale_code_bclf_left = bcf_quotient_bclf_left_table_decoded_previous_scale * S ((S (bcf_predecessor_bclf_left_table)) * bcf_row_scale_scale_bclf_left) + (bcf_previous_scale_bclf_left_table))) /\ (forall bcf_index_bclf_left_table_row_step. (exists bcf_lt_gap_bclf_left_table_row_step_bound. bcf_lt_gap_bclf_left_table_row_step_bound + S (bcf_index_bclf_left_table_row_step) = S (n)) -> exists bcf_value_bclf_left_table_row_step. ((((exists bcf_height_bclf_left_table_row_step_entry. bcf_height_bclf_left_table_row_step_entry + S (bcf_value_bclf_left_table_row_step) = S ((S (bcf_index_bclf_left_table_row_step)) * bcf_row_scale_bclf_left_table)) /\ exists bcf_quotient_bclf_left_table_row_step_entry. bcf_row_code_bclf_left_table = bcf_quotient_bclf_left_table_row_step_entry * S ((S (bcf_index_bclf_left_table_row_step)) * bcf_row_scale_bclf_left_table) + (bcf_value_bclf_left_table_row_step))) /\ ((bcf_index_bclf_left_table_row_step = 0 /\ bcf_value_bclf_left_table_row_step = 1) \/ exists bcf_predecessor_bclf_left_table_row_step bcf_left_bclf_left_table_row_step bcf_right_bclf_left_table_row_step. bcf_index_bclf_left_table_row_step = S bcf_predecessor_bclf_left_table_row_step /\ ((((exists bcf_height_bclf_left_table_row_step_previous_left. bcf_height_bclf_left_table_row_step_previous_left + S (bcf_left_bclf_left_table_row_step) = S ((S (bcf_predecessor_bclf_left_table_row_step)) * bcf_previous_scale_bclf_left_table)) /\ exists bcf_quotient_bclf_left_table_row_step_previous_left. bcf_previous_code_bclf_left_table = bcf_quotient_bclf_left_table_row_step_previous_left * S ((S (bcf_predecessor_bclf_left_table_row_step)) * bcf_previous_scale_bclf_left_table) + (bcf_left_bclf_left_table_row_step))) /\ ((((exists bcf_height_bclf_left_table_row_step_previous_right. bcf_height_bclf_left_table_row_step_previous_right + S (bcf_right_bclf_left_table_row_step) = S ((S (S (bcf_predecessor_bclf_left_table_row_step))) * bcf_previous_scale_bclf_left_table)) /\ exists bcf_quotient_bclf_left_table_row_step_previous_right. bcf_previous_code_bclf_left_table = bcf_quotient_bclf_left_table_row_step_previous_right * S ((S (S (bcf_predecessor_bclf_left_table_row_step))) * bcf_previous_scale_bclf_left_table) + (bcf_right_bclf_left_table_row_step))) /\ bcf_value_bclf_left_table_row_step = bcf_left_bclf_left_table_row_step + bcf_right_bclf_left_table_row_step))))))))))) /\ ((((exists bcf_height_bclf_left_decoded_row_code. bcf_height_bclf_left_decoded_row_code + S (bcf_row_code_bclf_left) = S ((S (n)) * bcf_row_code_scale_bclf_left)) /\ exists bcf_quotient_bclf_left_decoded_row_code. bcf_row_code_code_bclf_left = bcf_quotient_bclf_left_decoded_row_code * S ((S (n)) * bcf_row_code_scale_bclf_left) + (bcf_row_code_bclf_left))) /\ ((((exists bcf_height_bclf_left_decoded_row_scale. bcf_height_bclf_left_decoded_row_scale + S (bcf_row_scale_bclf_left) = S ((S (n)) * bcf_row_scale_scale_bclf_left)) /\ exists bcf_quotient_bclf_left_decoded_row_scale. bcf_row_scale_code_bclf_left = bcf_quotient_bclf_left_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_bclf_left) + (bcf_row_scale_bclf_left))) /\ (((exists bcf_height_bclf_left_decoded_value. bcf_height_bclf_left_decoded_value + S (x) = S ((S (k)) * bcf_row_scale_bclf_left)) /\ exists bcf_quotient_bclf_left_decoded_value. bcf_row_code_bclf_left = bcf_quotient_bclf_left_decoded_value * S ((S (k)) * bcf_row_scale_bclf_left) + (x))))))))) -> (((exists bcf_lt_gap_bclf_right_out_of_range. bcf_lt_gap_bclf_right_out_of_range + S (n) = k) /\ y = 0) \/ ((exists bcf_le_gap_bclf_right_in_range. bcf_le_gap_bclf_right_in_range + (k) = n) /\ (exists bcf_row_code_code_bclf_right bcf_row_code_scale_bclf_right bcf_row_scale_code_bclf_right bcf_row_scale_scale_bclf_right bcf_row_code_bclf_right bcf_row_scale_bclf_right. ((forall bcf_row_index_bclf_right_table. (exists bcf_lt_gap_bclf_right_table_row_bound. bcf_lt_gap_bclf_right_table_row_bound + S (bcf_row_index_bclf_right_table) = S (n)) -> exists bcf_row_code_bclf_right_table bcf_row_scale_bclf_right_table. ((((exists bcf_height_bclf_right_table_decoded_row_code. bcf_height_bclf_right_table_decoded_row_code + S (bcf_row_code_bclf_right_table) = S ((S (bcf_row_index_bclf_right_table)) * bcf_row_code_scale_bclf_right)) /\ exists bcf_quotient_bclf_right_table_decoded_row_code. bcf_row_code_code_bclf_right = bcf_quotient_bclf_right_table_decoded_row_code * S ((S (bcf_row_index_bclf_right_table)) * bcf_row_code_scale_bclf_right) + (bcf_row_code_bclf_right_table))) /\ ((((exists bcf_height_bclf_right_table_decoded_row_scale. bcf_height_bclf_right_table_decoded_row_scale + S (bcf_row_scale_bclf_right_table) = S ((S (bcf_row_index_bclf_right_table)) * bcf_row_scale_scale_bclf_right)) /\ exists bcf_quotient_bclf_right_table_decoded_row_scale. bcf_row_scale_code_bclf_right = bcf_quotient_bclf_right_table_decoded_row_scale * S ((S (bcf_row_index_bclf_right_table)) * bcf_row_scale_scale_bclf_right) + (bcf_row_scale_bclf_right_table))) /\ ((bcf_row_index_bclf_right_table = 0 /\ (forall bcf_index_bclf_right_table_zero_row. (exists bcf_lt_gap_bclf_right_table_zero_row_bound. bcf_lt_gap_bclf_right_table_zero_row_bound + S (bcf_index_bclf_right_table_zero_row) = S (n)) -> exists bcf_value_bclf_right_table_zero_row. ((((exists bcf_height_bclf_right_table_zero_row_entry. bcf_height_bclf_right_table_zero_row_entry + S (bcf_value_bclf_right_table_zero_row) = S ((S (bcf_index_bclf_right_table_zero_row)) * bcf_row_scale_bclf_right_table)) /\ exists bcf_quotient_bclf_right_table_zero_row_entry. bcf_row_code_bclf_right_table = bcf_quotient_bclf_right_table_zero_row_entry * S ((S (bcf_index_bclf_right_table_zero_row)) * bcf_row_scale_bclf_right_table) + (bcf_value_bclf_right_table_zero_row))) /\ ((bcf_index_bclf_right_table_zero_row = 0 /\ bcf_value_bclf_right_table_zero_row = 1) \/ exists bcf_predecessor_bclf_right_table_zero_row. bcf_index_bclf_right_table_zero_row = S bcf_predecessor_bclf_right_table_zero_row /\ bcf_value_bclf_right_table_zero_row = 0)))) \/ exists bcf_predecessor_bclf_right_table bcf_previous_code_bclf_right_table bcf_previous_scale_bclf_right_table. bcf_row_index_bclf_right_table = S bcf_predecessor_bclf_right_table /\ ((((exists bcf_height_bclf_right_table_decoded_previous_code. bcf_height_bclf_right_table_decoded_previous_code + S (bcf_previous_code_bclf_right_table) = S ((S (bcf_predecessor_bclf_right_table)) * bcf_row_code_scale_bclf_right)) /\ exists bcf_quotient_bclf_right_table_decoded_previous_code. bcf_row_code_code_bclf_right = bcf_quotient_bclf_right_table_decoded_previous_code * S ((S (bcf_predecessor_bclf_right_table)) * bcf_row_code_scale_bclf_right) + (bcf_previous_code_bclf_right_table))) /\ ((((exists bcf_height_bclf_right_table_decoded_previous_scale. bcf_height_bclf_right_table_decoded_previous_scale + S (bcf_previous_scale_bclf_right_table) = S ((S (bcf_predecessor_bclf_right_table)) * bcf_row_scale_scale_bclf_right)) /\ exists bcf_quotient_bclf_right_table_decoded_previous_scale. bcf_row_scale_code_bclf_right = bcf_quotient_bclf_right_table_decoded_previous_scale * S ((S (bcf_predecessor_bclf_right_table)) * bcf_row_scale_scale_bclf_right) + (bcf_previous_scale_bclf_right_table))) /\ (forall bcf_index_bclf_right_table_row_step. (exists bcf_lt_gap_bclf_right_table_row_step_bound. bcf_lt_gap_bclf_right_table_row_step_bound + S (bcf_index_bclf_right_table_row_step) = S (n)) -> exists bcf_value_bclf_right_table_row_step. ((((exists bcf_height_bclf_right_table_row_step_entry. bcf_height_bclf_right_table_row_step_entry + S (bcf_value_bclf_right_table_row_step) = S ((S (bcf_index_bclf_right_table_row_step)) * bcf_row_scale_bclf_right_table)) /\ exists bcf_quotient_bclf_right_table_row_step_entry. bcf_row_code_bclf_right_table = bcf_quotient_bclf_right_table_row_step_entry * S ((S (bcf_index_bclf_right_table_row_step)) * bcf_row_scale_bclf_right_table) + (bcf_value_bclf_right_table_row_step))) /\ ((bcf_index_bclf_right_table_row_step = 0 /\ bcf_value_bclf_right_table_row_step = 1) \/ exists bcf_predecessor_bclf_right_table_row_step bcf_left_bclf_right_table_row_step bcf_right_bclf_right_table_row_step. bcf_index_bclf_right_table_row_step = S bcf_predecessor_bclf_right_table_row_step /\ ((((exists bcf_height_bclf_right_table_row_step_previous_left. bcf_height_bclf_right_table_row_step_previous_left + S (bcf_left_bclf_right_table_row_step) = S ((S (bcf_predecessor_bclf_right_table_row_step)) * bcf_previous_scale_bclf_right_table)) /\ exists bcf_quotient_bclf_right_table_row_step_previous_left. bcf_previous_code_bclf_right_table = bcf_quotient_bclf_right_table_row_step_previous_left * S ((S (bcf_predecessor_bclf_right_table_row_step)) * bcf_previous_scale_bclf_right_table) + (bcf_left_bclf_right_table_row_step))) /\ ((((exists bcf_height_bclf_right_table_row_step_previous_right. bcf_height_bclf_right_table_row_step_previous_right + S (bcf_right_bclf_right_table_row_step) = S ((S (S (bcf_predecessor_bclf_right_table_row_step))) * bcf_previous_scale_bclf_right_table)) /\ exists bcf_quotient_bclf_right_table_row_step_previous_right. bcf_previous_code_bclf_right_table = bcf_quotient_bclf_right_table_row_step_previous_right * S ((S (S (bcf_predecessor_bclf_right_table_row_step))) * bcf_previous_scale_bclf_right_table) + (bcf_right_bclf_right_table_row_step))) /\ bcf_value_bclf_right_table_row_step = bcf_left_bclf_right_table_row_step + bcf_right_bclf_right_table_row_step))))))))))) /\ ((((exists bcf_height_bclf_right_decoded_row_code. bcf_height_bclf_right_decoded_row_code + S (bcf_row_code_bclf_right) = S ((S (n)) * bcf_row_code_scale_bclf_right)) /\ exists bcf_quotient_bclf_right_decoded_row_code. bcf_row_code_code_bclf_right = bcf_quotient_bclf_right_decoded_row_code * S ((S (n)) * bcf_row_code_scale_bclf_right) + (bcf_row_code_bclf_right))) /\ ((((exists bcf_height_bclf_right_decoded_row_scale. bcf_height_bclf_right_decoded_row_scale + S (bcf_row_scale_bclf_right) = S ((S (n)) * bcf_row_scale_scale_bclf_right)) /\ exists bcf_quotient_bclf_right_decoded_row_scale. bcf_row_scale_code_bclf_right = bcf_quotient_bclf_right_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_bclf_right) + (bcf_row_scale_bclf_right))) /\ (((exists bcf_height_bclf_right_decoded_value. bcf_height_bclf_right_decoded_value + S (y) = S ((S (k)) * bcf_row_scale_bclf_right)) /\ exists bcf_quotient_bclf_right_decoded_value. bcf_row_code_bclf_right = bcf_quotient_bclf_right_decoded_value * S ((S (k)) * bcf_row_scale_bclf_right) + (y))))))))) -> x = yStructural proof guide
The recurrence-defined Choose relation is functional.
Direct prerequisites: lt_not_le, le_refl, succ_le_succ, beta_pascal_table_row_pointwise_functional. The authored body proceeds by case analysis (27), intermediate claims (3).
Proof neighborhood
Direct dependencies
BT001I lt_not_le BT000E le_refl BT0016 succ_le_succ BT00TB beta_pascal_table_row_pointwise_functionalDirect 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 k - 0003
intro x - 0004
intro y - 0005
intro hleft - 0006
intro hright - 0007
cases hleft - 0008
cases hleft_left - 0009
cases hright - 0010
cases hright_left - 0011
trans 0 - 0012
exact hleft_left_right - 0013
symm - 0014
exact hright_left_right - 0015
cases hright_right - 0016
exfalso - 0017
specialize lt_not_le n - 0018
specialize lt_not_le k - 0019
apply lt_not_le - 0020
exact hleft_left_left - 0021
exact hright_right_left - 0022
cases hleft_right - 0023
cases hright - 0024
cases hright_left - 0025
exfalso - 0026
specialize lt_not_le n - 0027
specialize lt_not_le k - 0028
apply lt_not_le - 0029
exact hright_left_left - 0030
exact hleft_right_left - 0031
cases hright_right - 0032
cases hleft_right_right - 0033
cases hleft_right_right_witness - 0034
cases hleft_right_right_witness_witness - 0035
cases hleft_right_right_witness_witness_witness - 0036
cases hleft_right_right_witness_witness_witness_witness - 0037
cases hleft_right_right_witness_witness_witness_witness_witness - 0038
cases hleft_right_right_witness_witness_witness_witness_witness_witness - 0039
cases hleft_right_right_witness_witness_witness_witness_witness_witness_right - 0040
cases hleft_right_right_witness_witness_witness_witness_witness_witness_right_right - 0041
cases hright_right_right - 0042
cases hright_right_right_witness - 0043
cases hright_right_right_witness_witness - 0044
cases hright_right_right_witness_witness_witness - 0045
cases hright_right_right_witness_witness_witness_witness - 0046
cases hright_right_right_witness_witness_witness_witness_witness - 0047
cases hright_right_right_witness_witness_witness_witness_witness_witness - 0048
cases hright_right_right_witness_witness_witness_witness_witness_witness_right - 0049
cases hright_right_right_witness_witness_witness_witness_witness_witness_right_right - 0050
have hrow_bound : exists bcf_lt_gap_bclf_row_bound. bcf_lt_gap_bclf_row_bound + S (n) = S n - 0051
specialize le_refl (S n) - 0052
exact le_refl - 0053
have hinner_bound : exists bcf_lt_gap_bclf_inner_bound. bcf_lt_gap_bclf_inner_bound + S (k) = S n - 0054
specialize succ_le_succ k - 0055
specialize succ_le_succ n - 0056
apply succ_le_succ - 0057
exact hleft_right_left - 0058
have hagree : forall bcf_index_bclf_semantic_agreement bcf_left_value_bclf_semantic_agreement bcf_right_value_bclf_semantic_agreement. (exists bcf_lt_gap_bclf_semantic_agreement_left_bound. bcf_lt_gap_bclf_semantic_agreement_left_bound + S (bcf_index_bclf_semantic_agreement) = S n) -> (exists bcf_lt_gap_bclf_semantic_agreement_right_bound. bcf_lt_gap_bclf_semantic_agreement_right_bound + S (bcf_index_bclf_semantic_agreement) = S n) -> (((exists bcf_height_bclf_semantic_agreement_left_entry. bcf_height_bclf_semantic_agreement_left_entry + S (bcf_left_value_bclf_semantic_agreement) = S ((S (bcf_index_bclf_semantic_agreement)) * x6)) /\ exists bcf_quotient_bclf_semantic_agreement_left_entry. x5 = bcf_quotient_bclf_semantic_agreement_left_entry * S ((S (bcf_index_bclf_semantic_agreement)) * x6) + (bcf_left_value_bclf_semantic_agreement))) -> (((exists bcf_height_bclf_semantic_agreement_right_entry. bcf_height_bclf_semantic_agreement_right_entry + S (bcf_right_value_bclf_semantic_agreement) = S ((S (bcf_index_bclf_semantic_agreement)) * x12)) /\ exists bcf_quotient_bclf_semantic_agreement_right_entry. x11 = bcf_quotient_bclf_semantic_agreement_right_entry * S ((S (bcf_index_bclf_semantic_agreement)) * x12) + (bcf_right_value_bclf_semantic_agreement))) -> bcf_left_value_bclf_semantic_agreement = bcf_right_value_bclf_semantic_agreement - 0059
specialize beta_pascal_table_row_pointwise_functional x1 - 0060
specialize beta_pascal_table_row_pointwise_functional x2 - 0061
specialize beta_pascal_table_row_pointwise_functional x3 - 0062
specialize beta_pascal_table_row_pointwise_functional x4 - 0063
specialize beta_pascal_table_row_pointwise_functional (S n) - 0064
specialize beta_pascal_table_row_pointwise_functional (S n) - 0065
specialize beta_pascal_table_row_pointwise_functional x7 - 0066
specialize beta_pascal_table_row_pointwise_functional x8 - 0067
specialize beta_pascal_table_row_pointwise_functional x9 - 0068
specialize beta_pascal_table_row_pointwise_functional x10 - 0069
specialize beta_pascal_table_row_pointwise_functional (S n) - 0070
specialize beta_pascal_table_row_pointwise_functional (S n) - 0071
specialize beta_pascal_table_row_pointwise_functional n - 0072
specialize beta_pascal_table_row_pointwise_functional x5 - 0073
specialize beta_pascal_table_row_pointwise_functional x6 - 0074
specialize beta_pascal_table_row_pointwise_functional x11 - 0075
specialize beta_pascal_table_row_pointwise_functional x12 - 0076
apply beta_pascal_table_row_pointwise_functional - 0077
exact hleft_right_right_witness_witness_witness_witness_witness_witness_left - 0078
exact hright_right_right_witness_witness_witness_witness_witness_witness_left - 0079
exact hrow_bound - 0080
exact hrow_bound - 0081
exact hleft_right_right_witness_witness_witness_witness_witness_witness_right_left - 0082
exact hleft_right_right_witness_witness_witness_witness_witness_witness_right_right_left - 0083
exact hright_right_right_witness_witness_witness_witness_witness_witness_right_left - 0084
exact hright_right_right_witness_witness_witness_witness_witness_witness_right_right_left - 0085
specialize hagree k - 0086
specialize hagree x - 0087
specialize hagree y - 0088
apply hagree - 0089
exact hinner_bound - 0090
exact hinner_bound - 0091
exact hleft_right_right_witness_witness_witness_witness_witness_witness_right_right_right - 0092
exact hright_right_right_witness_witness_witness_witness_witness_witness_right_right_right