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.
Exact expanded first-order arithmetic statement
forall ab ac bb bc ub uc ib ic l n m q r. (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((n)) = S ((S ((l))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((l))) * ff_v_fms_count) + ((n)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (ac))) /\ exists ff_q_fms_count_summand. (ab) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (ac)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (ac))) /\ exists ff_q_fms_count_decoded. (ab) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (ac)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) -> (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((m)) = S ((S ((l))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((l))) * ff_v_fms_count) + ((m)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (bc))) /\ exists ff_q_fms_count_summand. (bb) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (bc)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (bc))) /\ exists ff_q_fms_count_decoded. (bb) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (bc)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) -> (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((q)) = S ((S ((l))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((l))) * ff_v_fms_count) + ((q)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (uc))) /\ exists ff_q_fms_count_summand. (ub) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (uc)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (uc))) /\ exists ff_q_fms_count_decoded. (ub) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (uc)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) -> (((exists ff_u_fms_count ff_v_fms_count. ((((exists ff_h_fms_count_start. ff_h_fms_count_start + S (0) = S ((S (0)) * ff_v_fms_count)) /\ exists ff_q_fms_count_start. ff_u_fms_count = ff_q_fms_count_start * S ((S (0)) * ff_v_fms_count) + (0))) /\ ((((exists ff_h_fms_count_terminal. ff_h_fms_count_terminal + S ((r)) = S ((S ((l))) * ff_v_fms_count)) /\ exists ff_q_fms_count_terminal. ff_u_fms_count = ff_q_fms_count_terminal * S ((S ((l))) * ff_v_fms_count) + ((r)))) /\ forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_a_fms_count ff_r_fms_count ff_s_fms_count. ((((exists ff_h_fms_count_summand. ff_h_fms_count_summand + S (ff_a_fms_count) = S ((S (ff_i_fms_count)) * (ic))) /\ exists ff_q_fms_count_summand. (ib) = ff_q_fms_count_summand * S ((S (ff_i_fms_count)) * (ic)) + (ff_a_fms_count))) /\ ((((exists ff_h_fms_count_partial. ff_h_fms_count_partial + S (ff_r_fms_count) = S ((S (ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_partial. ff_u_fms_count = ff_q_fms_count_partial * S ((S (ff_i_fms_count)) * ff_v_fms_count) + (ff_r_fms_count))) /\ ((((exists ff_h_fms_count_successor. ff_h_fms_count_successor + S (ff_s_fms_count) = S ((S (S ff_i_fms_count)) * ff_v_fms_count)) /\ exists ff_q_fms_count_successor. ff_u_fms_count = ff_q_fms_count_successor * S ((S (S ff_i_fms_count)) * ff_v_fms_count) + (ff_s_fms_count))) /\ ff_s_fms_count = ff_r_fms_count + ff_a_fms_count)))))) /\ (forall ff_i_fms_count. (exists ff_lt_fms_count_bound. ff_lt_fms_count_bound + S ff_i_fms_count = (l)) -> exists ff_bit_fms_count. ((((exists ff_h_fms_count_decoded. ff_h_fms_count_decoded + S (ff_bit_fms_count) = S ((S (ff_i_fms_count)) * (ic))) /\ exists ff_q_fms_count_decoded. (ib) = ff_q_fms_count_decoded * S ((S (ff_i_fms_count)) * (ic)) + (ff_bit_fms_count))) /\ (ff_bit_fms_count = 0 \/ ff_bit_fms_count = 1))))) -> (forall fms_i_binary. (exists fms_gap_binary. fms_gap_binary + S (fms_i_binary) = (l)) -> ((((((exists fs_h_fms_binary_result. fs_h_fms_binary_result + S (1) = S ((S (fms_i_binary)) * uc)) /\ exists fs_q_fms_binary_result. ub = fs_q_fms_binary_result * S ((S (fms_i_binary)) * uc) + (1))) -> (((((exists fs_h_fms_binary_left. fs_h_fms_binary_left + S (1) = S ((S (fms_i_binary)) * ac)) /\ exists fs_q_fms_binary_left. ab = fs_q_fms_binary_left * S ((S (fms_i_binary)) * ac) + (1))) \/ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * bc)) /\ exists fs_q_fms_binary_right. bb = fs_q_fms_binary_right * S ((S (fms_i_binary)) * bc) + (1)))))) /\ ((((((exists fs_h_fms_binary_left. fs_h_fms_binary_left + S (1) = S ((S (fms_i_binary)) * ac)) /\ exists fs_q_fms_binary_left. ab = fs_q_fms_binary_left * S ((S (fms_i_binary)) * ac) + (1))) \/ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * bc)) /\ exists fs_q_fms_binary_right. bb = fs_q_fms_binary_right * S ((S (fms_i_binary)) * bc) + (1))))) -> (((exists fs_h_fms_binary_result. fs_h_fms_binary_result + S (1) = S ((S (fms_i_binary)) * uc)) /\ exists fs_q_fms_binary_result. ub = fs_q_fms_binary_result * S ((S (fms_i_binary)) * uc) + (1))))))) -> (forall fms_i_binary. (exists fms_gap_binary. fms_gap_binary + S (fms_i_binary) = (l)) -> ((((((exists fs_h_fms_binary_result. fs_h_fms_binary_result + S (1) = S ((S (fms_i_binary)) * ic)) /\ exists fs_q_fms_binary_result. ib = fs_q_fms_binary_result * S ((S (fms_i_binary)) * ic) + (1))) -> (((((exists fs_h_fms_binary_left. fs_h_fms_binary_left + S (1) = S ((S (fms_i_binary)) * ac)) /\ exists fs_q_fms_binary_left. ab = fs_q_fms_binary_left * S ((S (fms_i_binary)) * ac) + (1))) /\ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * bc)) /\ exists fs_q_fms_binary_right. bb = fs_q_fms_binary_right * S ((S (fms_i_binary)) * bc) + (1)))))) /\ ((((((exists fs_h_fms_binary_left. fs_h_fms_binary_left + S (1) = S ((S (fms_i_binary)) * ac)) /\ exists fs_q_fms_binary_left. ab = fs_q_fms_binary_left * S ((S (fms_i_binary)) * ac) + (1))) /\ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * bc)) /\ exists fs_q_fms_binary_right. bb = fs_q_fms_binary_right * S ((S (fms_i_binary)) * bc) + (1))))) -> (((exists fs_h_fms_binary_result. fs_h_fms_binary_result + S (1) = S ((S (fms_i_binary)) * ic)) /\ exists fs_q_fms_binary_result. ib = fs_q_fms_binary_result * S ((S (fms_i_binary)) * ic) + (1))))))) -> q+r=n+mConstructive proof overview
Generated structural guide
The genuinely counted union and intersection have cardinalities summing exactly to those of both inputs.
The unchanged tactic script uses 4 declared prerequisites and contains 178 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
CD000F finite_sum_pointwise_balance CD0018 finite_beta_value_one_iff CD0001 finite_bit_entry_cases CD001A finite_bit_union_intersection_valuesDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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–19
03Separate the logical casesL20–23
04Use earlier factsL24–33
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L24
specialize finite_sum_pointwise_balance ub - L25
specialize finite_sum_pointwise_balance uc - L26
specialize finite_sum_pointwise_balance ib - L27
specialize finite_sum_pointwise_balance ic - L28
specialize finite_sum_pointwise_balance ab - L29
specialize finite_sum_pointwise_balance ac - L30
specialize finite_sum_pointwise_balance bb - L31
specialize finite_sum_pointwise_balance bc - L32
specialize finite_sum_pointwise_balance l - L33
specialize finite_sum_pointwise_balance q
05Use earlier factsL34–41
Instantiate or apply named facts and discharge the corresponding proof obligations.
06Fix variables and assumptionsL42–51
07Establish hAeL52–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite beta value one iff.
- L52
have hAe : (((a=1) -> (((exists fs_h_fms_hAe. fs_h_fms_hAe + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_hAe. ab = fs_q_fms_hAe * S ((S (i)) * ac) + (1)))) /\ ((((exists fs_h_fms_hAe. fs_h_fms_hAe + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_hAe. ab = fs_q_fms_hAe * S ((S (i)) * ac) + (1))) -> (a=1))) - L53
specialize finite_beta_value_one_iff ab - L54
specialize finite_beta_value_one_iff ac - L55
specialize finite_beta_value_one_iff i - L56
specialize finite_beta_value_one_iff a - L57
apply finite_beta_value_one_iff - L58
exact ha
08Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
cases hAe
09Establish hBeL60–66
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite beta value one iff.
- L60
have hBe : (((b=1) -> (((exists fs_h_fms_hBe. fs_h_fms_hBe + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_hBe. bb = fs_q_fms_hBe * S ((S (i)) * bc) + (1)))) /\ ((((exists fs_h_fms_hBe. fs_h_fms_hBe + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_hBe. bb = fs_q_fms_hBe * S ((S (i)) * bc) + (1))) -> (b=1))) - L61
specialize finite_beta_value_one_iff bb - L62
specialize finite_beta_value_one_iff bc - L63
specialize finite_beta_value_one_iff i - L64
specialize finite_beta_value_one_iff b - L65
apply finite_beta_value_one_iff - L66
exact hb
10Separate the logical casesL67–67
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L67
cases hBe
11Establish hUeL68–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite beta value one iff.
- L68
have hUe : (((u=1) -> (((exists fs_h_fms_hUe. fs_h_fms_hUe + S (1) = S ((S (i)) * uc)) /\ exists fs_q_fms_hUe. ub = fs_q_fms_hUe * S ((S (i)) * uc) + (1)))) /\ ((((exists fs_h_fms_hUe. fs_h_fms_hUe + S (1) = S ((S (i)) * uc)) /\ exists fs_q_fms_hUe. ub = fs_q_fms_hUe * S ((S (i)) * uc) + (1))) -> (u=1))) - L69
specialize finite_beta_value_one_iff ub - L70
specialize finite_beta_value_one_iff uc - L71
specialize finite_beta_value_one_iff i - L72
specialize finite_beta_value_one_iff u - L73
apply finite_beta_value_one_iff - L74
exact hu
12Separate the logical casesL75–75
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L75
cases hUe
13Establish hIeL76–82
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite beta value one iff.
- L76
have hIe : (((v=1) -> (((exists fs_h_fms_hIe. fs_h_fms_hIe + S (1) = S ((S (i)) * ic)) /\ exists fs_q_fms_hIe. ib = fs_q_fms_hIe * S ((S (i)) * ic) + (1)))) /\ ((((exists fs_h_fms_hIe. fs_h_fms_hIe + S (1) = S ((S (i)) * ic)) /\ exists fs_q_fms_hIe. ib = fs_q_fms_hIe * S ((S (i)) * ic) + (1))) -> (v=1))) - L77
specialize finite_beta_value_one_iff ib - L78
specialize finite_beta_value_one_iff ic - L79
specialize finite_beta_value_one_iff i - L80
specialize finite_beta_value_one_iff v - L81
apply finite_beta_value_one_iff - L82
exact hv
14Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
cases hIe
15Establish hUnL84–87
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hUnion.
16Separate the logical casesL88–88
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L88
cases hUn
17Establish hInL89–92
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hInter.
18Separate the logical casesL93–93
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L93
cases hIn
19Use earlier factsL94–103
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L94
specialize finite_bit_union_intersection_values a - L95
specialize finite_bit_union_intersection_values b - L96
specialize finite_bit_union_intersection_values u - L97
specialize finite_bit_union_intersection_values v - L98
apply finite_bit_union_intersection_values - L99
specialize finite_bit_entry_cases ab - L100
specialize finite_bit_entry_cases ac - L101
specialize finite_bit_entry_cases l - L102
specialize finite_bit_entry_cases i - L103
specialize finite_bit_entry_cases a
20Use earlier factsL104–113
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
apply finite_bit_entry_cases - L105
exact hA_right - L106
exact hi - L107
exact ha - L108
specialize finite_bit_entry_cases bb - L109
specialize finite_bit_entry_cases bc - L110
specialize finite_bit_entry_cases l - L111
specialize finite_bit_entry_cases i - L112
specialize finite_bit_entry_cases b - L113
apply finite_bit_entry_cases
21Use earlier factsL114–123
Instantiate or apply named facts and discharge the corresponding proof obligations.
22Use earlier factsL124–133
Instantiate or apply named facts and discharge the corresponding proof obligations.
23Use earlier factsL134–134
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L134
exact hv
24Separate the logical casesL135–135
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L135
split
25Fix variables and assumptionsL136–136
Work with arbitrary variables or the premises of the current implication.
- L136
intro hue
26Establish habL137–140
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hUn left.
- L137
have hab : ((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) \/ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1)))) - L138
apply hUn_left - L139
apply hUe_left - L140
exact hue
27Separate the logical casesL141–142
28Use earlier factsL143–144
29Separate the logical casesL145–145
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L145
right
30Use earlier factsL146–147
31Fix variables and assumptionsL148–148
Work with arbitrary variables or the premises of the current implication.
- L148
intro hab
32Use earlier factsL149–150
33Separate the logical casesL151–152
34Use earlier factsL153–154
35Separate the logical casesL155–155
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L155
right
36Use earlier factsL156–157
37Separate the logical casesL158–158
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L158
split
38Fix variables and assumptionsL159–159
Work with arbitrary variables or the premises of the current implication.
- L159
intro hie
39Establish habL160–163
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hIn left.
- L160
have hab : ((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) /\ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1)))) - L161
apply hIn_left - L162
apply hIe_left - L163
exact hie
40Separate the logical casesL164–165
41Use earlier factsL166–169
42Fix variables and assumptionsL170–170
Work with arbitrary variables or the premises of the current implication.
- L170
intro hab
43Separate the logical casesL171–171
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L171
cases hab
44Use earlier factsL172–173
45Separate the logical casesL174–174
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L174
split
Original exact command ledger · 178 lines
- 0001
intro ab - 0002
intro ac - 0003
intro bb - 0004
intro bc - 0005
intro ub - 0006
intro uc - 0007
intro ib - 0008
intro ic - 0009
intro l - 0010
intro n - 0011
intro m - 0012
intro q - 0013
intro r - 0014
intro hA - 0015
intro hB - 0016
intro hU - 0017
intro hI - 0018
intro hUnion - 0019
intro hInter - 0020
cases hA - 0021
cases hB - 0022
cases hU - 0023
cases hI - 0024
specialize finite_sum_pointwise_balance ub - 0025
specialize finite_sum_pointwise_balance uc - 0026
specialize finite_sum_pointwise_balance ib - 0027
specialize finite_sum_pointwise_balance ic - 0028
specialize finite_sum_pointwise_balance ab - 0029
specialize finite_sum_pointwise_balance ac - 0030
specialize finite_sum_pointwise_balance bb - 0031
specialize finite_sum_pointwise_balance bc - 0032
specialize finite_sum_pointwise_balance l - 0033
specialize finite_sum_pointwise_balance q - 0034
specialize finite_sum_pointwise_balance r - 0035
specialize finite_sum_pointwise_balance n - 0036
specialize finite_sum_pointwise_balance m - 0037
apply finite_sum_pointwise_balance - 0038
exact hU_left - 0039
exact hI_left - 0040
exact hA_left - 0041
exact hB_left - 0042
intro i - 0043
intro u - 0044
intro v - 0045
intro a - 0046
intro b - 0047
intro hi - 0048
intro hu - 0049
intro hv - 0050
intro ha - 0051
intro hb - 0052
have hAe : (((a=1) -> (((exists fs_h_fms_hAe. fs_h_fms_hAe + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_hAe. ab = fs_q_fms_hAe * S ((S (i)) * ac) + (1)))) /\ ((((exists fs_h_fms_hAe. fs_h_fms_hAe + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_hAe. ab = fs_q_fms_hAe * S ((S (i)) * ac) + (1))) -> (a=1))) - 0053
specialize finite_beta_value_one_iff ab - 0054
specialize finite_beta_value_one_iff ac - 0055
specialize finite_beta_value_one_iff i - 0056
specialize finite_beta_value_one_iff a - 0057
apply finite_beta_value_one_iff - 0058
exact ha - 0059
cases hAe - 0060
have hBe : (((b=1) -> (((exists fs_h_fms_hBe. fs_h_fms_hBe + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_hBe. bb = fs_q_fms_hBe * S ((S (i)) * bc) + (1)))) /\ ((((exists fs_h_fms_hBe. fs_h_fms_hBe + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_hBe. bb = fs_q_fms_hBe * S ((S (i)) * bc) + (1))) -> (b=1))) - 0061
specialize finite_beta_value_one_iff bb - 0062
specialize finite_beta_value_one_iff bc - 0063
specialize finite_beta_value_one_iff i - 0064
specialize finite_beta_value_one_iff b - 0065
apply finite_beta_value_one_iff - 0066
exact hb - 0067
cases hBe - 0068
have hUe : (((u=1) -> (((exists fs_h_fms_hUe. fs_h_fms_hUe + S (1) = S ((S (i)) * uc)) /\ exists fs_q_fms_hUe. ub = fs_q_fms_hUe * S ((S (i)) * uc) + (1)))) /\ ((((exists fs_h_fms_hUe. fs_h_fms_hUe + S (1) = S ((S (i)) * uc)) /\ exists fs_q_fms_hUe. ub = fs_q_fms_hUe * S ((S (i)) * uc) + (1))) -> (u=1))) - 0069
specialize finite_beta_value_one_iff ub - 0070
specialize finite_beta_value_one_iff uc - 0071
specialize finite_beta_value_one_iff i - 0072
specialize finite_beta_value_one_iff u - 0073
apply finite_beta_value_one_iff - 0074
exact hu - 0075
cases hUe - 0076
have hIe : (((v=1) -> (((exists fs_h_fms_hIe. fs_h_fms_hIe + S (1) = S ((S (i)) * ic)) /\ exists fs_q_fms_hIe. ib = fs_q_fms_hIe * S ((S (i)) * ic) + (1)))) /\ ((((exists fs_h_fms_hIe. fs_h_fms_hIe + S (1) = S ((S (i)) * ic)) /\ exists fs_q_fms_hIe. ib = fs_q_fms_hIe * S ((S (i)) * ic) + (1))) -> (v=1))) - 0077
specialize finite_beta_value_one_iff ib - 0078
specialize finite_beta_value_one_iff ic - 0079
specialize finite_beta_value_one_iff i - 0080
specialize finite_beta_value_one_iff v - 0081
apply finite_beta_value_one_iff - 0082
exact hv - 0083
cases hIe - 0084
have hUn : (((((exists fs_h_fms_balance_U. fs_h_fms_balance_U + S (1) = S ((S (i)) * uc)) /\ exists fs_q_fms_balance_U. ub = fs_q_fms_balance_U * S ((S (i)) * uc) + (1))) -> (((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) \/ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1)))))) /\ ((((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) \/ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1))))) -> (((exists fs_h_fms_balance_U. fs_h_fms_balance_U + S (1) = S ((S (i)) * uc)) /\ exists fs_q_fms_balance_U. ub = fs_q_fms_balance_U * S ((S (i)) * uc) + (1))))) - 0085
specialize hUnion i - 0086
apply hUnion - 0087
exact hi - 0088
cases hUn - 0089
have hIn : (((((exists fs_h_fms_balance_I. fs_h_fms_balance_I + S (1) = S ((S (i)) * ic)) /\ exists fs_q_fms_balance_I. ib = fs_q_fms_balance_I * S ((S (i)) * ic) + (1))) -> (((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) /\ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1)))))) /\ ((((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) /\ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1))))) -> (((exists fs_h_fms_balance_I. fs_h_fms_balance_I + S (1) = S ((S (i)) * ic)) /\ exists fs_q_fms_balance_I. ib = fs_q_fms_balance_I * S ((S (i)) * ic) + (1))))) - 0090
specialize hInter i - 0091
apply hInter - 0092
exact hi - 0093
cases hIn - 0094
specialize finite_bit_union_intersection_values a - 0095
specialize finite_bit_union_intersection_values b - 0096
specialize finite_bit_union_intersection_values u - 0097
specialize finite_bit_union_intersection_values v - 0098
apply finite_bit_union_intersection_values - 0099
specialize finite_bit_entry_cases ab - 0100
specialize finite_bit_entry_cases ac - 0101
specialize finite_bit_entry_cases l - 0102
specialize finite_bit_entry_cases i - 0103
specialize finite_bit_entry_cases a - 0104
apply finite_bit_entry_cases - 0105
exact hA_right - 0106
exact hi - 0107
exact ha - 0108
specialize finite_bit_entry_cases bb - 0109
specialize finite_bit_entry_cases bc - 0110
specialize finite_bit_entry_cases l - 0111
specialize finite_bit_entry_cases i - 0112
specialize finite_bit_entry_cases b - 0113
apply finite_bit_entry_cases - 0114
exact hB_right - 0115
exact hi - 0116
exact hb - 0117
specialize finite_bit_entry_cases ub - 0118
specialize finite_bit_entry_cases uc - 0119
specialize finite_bit_entry_cases l - 0120
specialize finite_bit_entry_cases i - 0121
specialize finite_bit_entry_cases u - 0122
apply finite_bit_entry_cases - 0123
exact hU_right - 0124
exact hi - 0125
exact hu - 0126
specialize finite_bit_entry_cases ib - 0127
specialize finite_bit_entry_cases ic - 0128
specialize finite_bit_entry_cases l - 0129
specialize finite_bit_entry_cases i - 0130
specialize finite_bit_entry_cases v - 0131
apply finite_bit_entry_cases - 0132
exact hI_right - 0133
exact hi - 0134
exact hv - 0135
split - 0136
intro hue - 0137
have hab : ((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) \/ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1)))) - 0138
apply hUn_left - 0139
apply hUe_left - 0140
exact hue - 0141
cases hab - 0142
left - 0143
apply hAe_right - 0144
exact hab_left - 0145
right - 0146
apply hBe_right - 0147
exact hab_right - 0148
intro hab - 0149
apply hUe_right - 0150
apply hUn_right - 0151
cases hab - 0152
left - 0153
apply hAe_left - 0154
exact hab_left - 0155
right - 0156
apply hBe_left - 0157
exact hab_right - 0158
split - 0159
intro hie - 0160
have hab : ((((exists fs_h_fms_balance_A. fs_h_fms_balance_A + S (1) = S ((S (i)) * ac)) /\ exists fs_q_fms_balance_A. ab = fs_q_fms_balance_A * S ((S (i)) * ac) + (1))) /\ (((exists fs_h_fms_balance_B. fs_h_fms_balance_B + S (1) = S ((S (i)) * bc)) /\ exists fs_q_fms_balance_B. bb = fs_q_fms_balance_B * S ((S (i)) * bc) + (1)))) - 0161
apply hIn_left - 0162
apply hIe_left - 0163
exact hie - 0164
cases hab - 0165
split - 0166
apply hAe_right - 0167
exact hab_left - 0168
apply hBe_right - 0169
exact hab_right - 0170
intro hab - 0171
cases hab - 0172
apply hIe_right - 0173
apply hIn_right - 0174
split - 0175
apply hAe_left - 0176
exact hab_left - 0177
apply hBe_left - 0178
exact hab_right