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 b c d e tb tc ib ic vb vc p t v. ~(p=0) -> t+v=p -> (forall fms_i_pullback fms_j_pullback. (exists fms_gap_pullback_i. fms_gap_pullback_i + S (fms_i_pullback) = (p)) -> (exists fms_gap_pullback_j. fms_gap_pullback_j + S (fms_j_pullback) = (p)) -> (exists fms_u_pullback fms_v_pullback. (fms_i_pullback + v) + (p) * fms_u_pullback = (fms_j_pullback) + (p) * fms_v_pullback) -> ((((((exists fs_h_fms_pullback_target. fs_h_fms_pullback_target + S (1) = S ((S (fms_i_pullback)) * tc)) /\ exists fs_q_fms_pullback_target. tb = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * tc) + (1))) -> (((exists fs_h_fms_pullback_source. fs_h_fms_pullback_source + S (1) = S ((S (fms_j_pullback)) * e)) /\ exists fs_q_fms_pullback_source. d = fs_q_fms_pullback_source * S ((S (fms_j_pullback)) * e) + (1)))) /\ ((((exists fs_h_fms_pullback_source. fs_h_fms_pullback_source + S (1) = S ((S (fms_j_pullback)) * e)) /\ exists fs_q_fms_pullback_source. d = fs_q_fms_pullback_source * S ((S (fms_j_pullback)) * e) + (1))) -> (((exists fs_h_fms_pullback_target. fs_h_fms_pullback_target + S (1) = S ((S (fms_i_pullback)) * tc)) /\ exists fs_q_fms_pullback_target. tb = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * tc) + (1))))))) -> (forall fms_i_binary. (exists fms_gap_binary. fms_gap_binary + S (fms_i_binary) = (p)) -> ((((((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)) * c)) /\ exists fs_q_fms_binary_left. b = fs_q_fms_binary_left * S ((S (fms_i_binary)) * c) + (1))) /\ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * tc)) /\ exists fs_q_fms_binary_right. tb = fs_q_fms_binary_right * S ((S (fms_i_binary)) * tc) + (1)))))) /\ ((((((exists fs_h_fms_binary_left. fs_h_fms_binary_left + S (1) = S ((S (fms_i_binary)) * c)) /\ exists fs_q_fms_binary_left. b = fs_q_fms_binary_left * S ((S (fms_i_binary)) * c) + (1))) /\ (((exists fs_h_fms_binary_right. fs_h_fms_binary_right + S (1) = S ((S (fms_i_binary)) * tc)) /\ exists fs_q_fms_binary_right. tb = fs_q_fms_binary_right * S ((S (fms_i_binary)) * tc) + (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))))))) -> (forall fms_i_pullback fms_j_pullback. (exists fms_gap_pullback_i. fms_gap_pullback_i + S (fms_i_pullback) = (p)) -> (exists fms_gap_pullback_j. fms_gap_pullback_j + S (fms_j_pullback) = (p)) -> (exists fms_u_pullback fms_v_pullback. (fms_i_pullback + t) + (p) * fms_u_pullback = (fms_j_pullback) + (p) * fms_v_pullback) -> ((((((exists fs_h_fms_pullback_target. fs_h_fms_pullback_target + S (1) = S ((S (fms_i_pullback)) * vc)) /\ exists fs_q_fms_pullback_target. vb = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * vc) + (1))) -> (((exists fs_h_fms_pullback_source. fs_h_fms_pullback_source + S (1) = S ((S (fms_j_pullback)) * ic)) /\ exists fs_q_fms_pullback_source. ib = fs_q_fms_pullback_source * S ((S (fms_j_pullback)) * ic) + (1)))) /\ ((((exists fs_h_fms_pullback_source. fs_h_fms_pullback_source + S (1) = S ((S (fms_j_pullback)) * ic)) /\ exists fs_q_fms_pullback_source. ib = fs_q_fms_pullback_source * S ((S (fms_j_pullback)) * ic) + (1))) -> (((exists fs_h_fms_pullback_target. fs_h_fms_pullback_target + S (1) = S ((S (fms_i_pullback)) * vc)) /\ exists fs_q_fms_pullback_target. vb = fs_q_fms_pullback_target * S ((S (fms_i_pullback)) * vc) + (1))))))) -> (forall cd_output_lower. (exists fms_gap_cd_lower_bound. fms_gap_cd_lower_bound + S (cd_output_lower) = (p)) -> ((((((exists fs_h_cd_lower_result. fs_h_cd_lower_result + S (1) = S ((S (cd_output_lower)) * vc)) /\ exists fs_q_cd_lower_result. vb = fs_q_cd_lower_result * S ((S (cd_output_lower)) * vc) + (1))) -> ((((exists fs_h_cd_lower_old. fs_h_cd_lower_old + S (1) = S ((S (cd_output_lower)) * e)) /\ exists fs_q_cd_lower_old. d = fs_q_cd_lower_old * S ((S (cd_output_lower)) * e) + (1))) /\ (exists cd_source_lower. (((exists fms_gap_cd_lower_member. fms_gap_cd_lower_member + S (cd_source_lower) = (p)) /\ (((exists fs_h_fms_cd_lower_member. fs_h_fms_cd_lower_member + S (1) = S ((S (cd_source_lower)) * c)) /\ exists fs_q_fms_cd_lower_member. b = fs_q_fms_cd_lower_member * S ((S (cd_source_lower)) * c) + (1))))) /\ (exists fms_u_cd_lower_mod fms_v_cd_lower_mod. (cd_output_lower+t) + (p) * fms_u_cd_lower_mod = (cd_source_lower) + (p) * fms_v_cd_lower_mod)))) /\ (((((exists fs_h_cd_lower_old. fs_h_cd_lower_old + S (1) = S ((S (cd_output_lower)) * e)) /\ exists fs_q_cd_lower_old. d = fs_q_cd_lower_old * S ((S (cd_output_lower)) * e) + (1))) /\ (exists cd_source_lower. (((exists fms_gap_cd_lower_member. fms_gap_cd_lower_member + S (cd_source_lower) = (p)) /\ (((exists fs_h_fms_cd_lower_member. fs_h_fms_cd_lower_member + S (1) = S ((S (cd_source_lower)) * c)) /\ exists fs_q_fms_cd_lower_member. b = fs_q_fms_cd_lower_member * S ((S (cd_source_lower)) * c) + (1))))) /\ (exists fms_u_cd_lower_mod fms_v_cd_lower_mod. (cd_output_lower+t) + (p) * fms_u_cd_lower_mod = (cd_source_lower) + (p) * fms_v_cd_lower_mod))) -> (((exists fs_h_cd_lower_result. fs_h_cd_lower_result + S (1) = S ((S (cd_output_lower)) * vc)) /\ exists fs_q_cd_lower_result. vb = fs_q_cd_lower_result * S ((S (cd_output_lower)) * vc) + (1)))))))Constructive proof overview
Generated structural guide
The genuine pullback of A intersection (B+e) is exactly B intersection (A-e), with actual canonical witnesses.
The unchanged tactic script uses 2 declared prerequisites and contains 110 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
Direct 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 (2)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–20
03Establish hsourceL21–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular pullback membership witness.
- L21
have hsource : (BetaAt(vb,vc,z,1) → ∃ x. ModularSetMember(ib,ic,p,x) ∧ ModEq(p,z + t,x)) ∧ ((∃ x. ModularSetMember(ib,ic,p,x) ∧ ModEq(p,z + t,x)) → BetaAt(vb,vc,z,1))Definitions: ModularSetMemberModEqBetaAt - L22
specialize finite_modular_pullback_membership_witness ib - L23
specialize finite_modular_pullback_membership_witness ic - L24
specialize finite_modular_pullback_membership_witness vb - L25
specialize finite_modular_pullback_membership_witness vc - L26
specialize finite_modular_pullback_membership_witness p - L27
specialize finite_modular_pullback_membership_witness t - L28
specialize finite_modular_pullback_membership_witness z - L29
apply finite_modular_pullback_membership_witness - L30
exact hp
04Use earlier factsL31–32
05Separate the logical casesL33–34
06Fix variables and assumptionsL35–35
Work with arbitrary variables or the premises of the current implication.
- L35
intro hmember
07Establish hwL36–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsource left.
- L36
have hw : exists a. (((exists fms_gap_member. fms_gap_member + S (a) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (a)) * ic)) /\ exists fs_q_fms_member. ib = fs_q_fms_member * S ((S (a)) * ic) + (1))))) /\ (exists fms_u_mod fms_v_mod. (z+t) + (p) * fms_u_mod = (a) + (p) * fms_v_mod) - L37
apply hsource_left - L38
exact hmember
08Separate the logical casesL39–41
09Establish hinterL42–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hI.
10Separate the logical casesL46–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L46
cases hinter
11Establish hbothL47–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hinter left.
- L47
have hboth : (((exists fs_h_cd_I_A. fs_h_cd_I_A + S (1) = S ((S (x)) * c)) /\ exists fs_q_cd_I_A. b = fs_q_cd_I_A * S ((S (x)) * c) + (1))) /\ (((exists fs_h_cd_I_T. fs_h_cd_I_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_I_T. tb = fs_q_cd_I_T * S ((S (x)) * tc) + (1))) - L48
apply hinter_left - L49
exact hw_witness_left_right
12Separate the logical casesL50–50
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L50
cases hboth
13Establish hbackL51–60
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hT.
- L51
have hback : (BetaAt(tb,tc,x,1) → BetaAt(d,e,z,1)) ∧ (BetaAt(d,e,z,1) → BetaAt(tb,tc,x,1))Definitions: BetaAt - L52
specialize hT x - L53
specialize hT z - L54
apply hT - L55
exact hw_witness_left_left - L56
exact hz - L57
specialize finite_modular_inverse_shift p - L58
specialize finite_modular_inverse_shift t - L59
specialize finite_modular_inverse_shift v - L60
specialize finite_modular_inverse_shift z
14Use earlier factsL61–64
15Separate the logical casesL65–66
16Use earlier factsL67–68
17Construct an explicit witnessL69–69
Supply the displayed value, then prove that it has the required property.
- L69
exists x
18Separate the logical casesL70–71
19Use earlier factsL72–74
20Fix variables and assumptionsL75–75
Work with arbitrary variables or the premises of the current implication.
- L75
intro hmember
21Separate the logical casesL76–79
22Establish hinterL80–83
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hI.
23Separate the logical casesL84–84
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L84
cases hinter
24Establish hbackL85–94
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hT.
- L85
have hback : (BetaAt(tb,tc,x,1) → BetaAt(d,e,z,1)) ∧ (BetaAt(d,e,z,1) → BetaAt(tb,tc,x,1))Definitions: BetaAt - L86
specialize hT x - L87
specialize hT z - L88
apply hT - L89
exact hmember_right_witness_left_left - L90
exact hz - L91
specialize finite_modular_inverse_shift p - L92
specialize finite_modular_inverse_shift t - L93
specialize finite_modular_inverse_shift v - L94
specialize finite_modular_inverse_shift z
25Use earlier factsL95–98
26Separate the logical casesL99–99
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L99
cases hback
27Use earlier factsL100–100
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L100
apply hsource_right
28Construct an explicit witnessL101–101
Supply the displayed value, then prove that it has the required property.
- L101
exists x
29Separate the logical casesL102–103
30Use earlier factsL104–105
31Separate the logical casesL106–106
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L106
split
Original exact command ledger · 110 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
intro tb - 0006
intro tc - 0007
intro ib - 0008
intro ic - 0009
intro vb - 0010
intro vc - 0011
intro p - 0012
intro t - 0013
intro v - 0014
intro hp - 0015
intro htv - 0016
intro hT - 0017
intro hI - 0018
intro hV - 0019
intro z - 0020
intro hz - 0021
have hsource : (((((exists fs_h_cd_lower_V. fs_h_cd_lower_V + S (1) = S ((S (z)) * vc)) /\ exists fs_q_cd_lower_V. vb = fs_q_cd_lower_V * S ((S (z)) * vc) + (1))) -> (exists a. (((exists fms_gap_member. fms_gap_member + S (a) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (a)) * ic)) /\ exists fs_q_fms_member. ib = fs_q_fms_member * S ((S (a)) * ic) + (1))))) /\ (exists fms_u_mod fms_v_mod. (z+t) + (p) * fms_u_mod = (a) + (p) * fms_v_mod))) /\ ((exists a. (((exists fms_gap_member. fms_gap_member + S (a) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (a)) * ic)) /\ exists fs_q_fms_member. ib = fs_q_fms_member * S ((S (a)) * ic) + (1))))) /\ (exists fms_u_mod fms_v_mod. (z+t) + (p) * fms_u_mod = (a) + (p) * fms_v_mod)) -> (((exists fs_h_cd_lower_V. fs_h_cd_lower_V + S (1) = S ((S (z)) * vc)) /\ exists fs_q_cd_lower_V. vb = fs_q_cd_lower_V * S ((S (z)) * vc) + (1))))) - 0022
specialize finite_modular_pullback_membership_witness ib - 0023
specialize finite_modular_pullback_membership_witness ic - 0024
specialize finite_modular_pullback_membership_witness vb - 0025
specialize finite_modular_pullback_membership_witness vc - 0026
specialize finite_modular_pullback_membership_witness p - 0027
specialize finite_modular_pullback_membership_witness t - 0028
specialize finite_modular_pullback_membership_witness z - 0029
apply finite_modular_pullback_membership_witness - 0030
exact hp - 0031
exact hV - 0032
exact hz - 0033
cases hsource - 0034
split - 0035
intro hmember - 0036
have hw : exists a. (((exists fms_gap_member. fms_gap_member + S (a) = (p)) /\ (((exists fs_h_fms_member. fs_h_fms_member + S (1) = S ((S (a)) * ic)) /\ exists fs_q_fms_member. ib = fs_q_fms_member * S ((S (a)) * ic) + (1))))) /\ (exists fms_u_mod fms_v_mod. (z+t) + (p) * fms_u_mod = (a) + (p) * fms_v_mod) - 0037
apply hsource_left - 0038
exact hmember - 0039
cases hw - 0040
cases hw_witness - 0041
cases hw_witness_left - 0042
have hinter : (((((exists fs_h_cd_lower_I. fs_h_cd_lower_I + S (1) = S ((S (x)) * ic)) /\ exists fs_q_cd_lower_I. ib = fs_q_cd_lower_I * S ((S (x)) * ic) + (1))) -> ((((exists fs_h_cd_I_A. fs_h_cd_I_A + S (1) = S ((S (x)) * c)) /\ exists fs_q_cd_I_A. b = fs_q_cd_I_A * S ((S (x)) * c) + (1))) /\ (((exists fs_h_cd_I_T. fs_h_cd_I_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_I_T. tb = fs_q_cd_I_T * S ((S (x)) * tc) + (1))))) /\ (((((exists fs_h_cd_I_A. fs_h_cd_I_A + S (1) = S ((S (x)) * c)) /\ exists fs_q_cd_I_A. b = fs_q_cd_I_A * S ((S (x)) * c) + (1))) /\ (((exists fs_h_cd_I_T. fs_h_cd_I_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_I_T. tb = fs_q_cd_I_T * S ((S (x)) * tc) + (1)))) -> (((exists fs_h_cd_lower_I. fs_h_cd_lower_I + S (1) = S ((S (x)) * ic)) /\ exists fs_q_cd_lower_I. ib = fs_q_cd_lower_I * S ((S (x)) * ic) + (1))))) - 0043
specialize hI x - 0044
apply hI - 0045
exact hw_witness_left_left - 0046
cases hinter - 0047
have hboth : (((exists fs_h_cd_I_A. fs_h_cd_I_A + S (1) = S ((S (x)) * c)) /\ exists fs_q_cd_I_A. b = fs_q_cd_I_A * S ((S (x)) * c) + (1))) /\ (((exists fs_h_cd_I_T. fs_h_cd_I_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_I_T. tb = fs_q_cd_I_T * S ((S (x)) * tc) + (1))) - 0048
apply hinter_left - 0049
exact hw_witness_left_right - 0050
cases hboth - 0051
have hback : (((((exists fs_h_cd_lower_T. fs_h_cd_lower_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_lower_T. tb = fs_q_cd_lower_T * S ((S (x)) * tc) + (1))) -> (((exists fs_h_cd_lower_B. fs_h_cd_lower_B + S (1) = S ((S (z)) * e)) /\ exists fs_q_cd_lower_B. d = fs_q_cd_lower_B * S ((S (z)) * e) + (1)))) /\ ((((exists fs_h_cd_lower_B. fs_h_cd_lower_B + S (1) = S ((S (z)) * e)) /\ exists fs_q_cd_lower_B. d = fs_q_cd_lower_B * S ((S (z)) * e) + (1))) -> (((exists fs_h_cd_lower_T. fs_h_cd_lower_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_lower_T. tb = fs_q_cd_lower_T * S ((S (x)) * tc) + (1))))) - 0052
specialize hT x - 0053
specialize hT z - 0054
apply hT - 0055
exact hw_witness_left_left - 0056
exact hz - 0057
specialize finite_modular_inverse_shift p - 0058
specialize finite_modular_inverse_shift t - 0059
specialize finite_modular_inverse_shift v - 0060
specialize finite_modular_inverse_shift z - 0061
specialize finite_modular_inverse_shift x - 0062
apply finite_modular_inverse_shift - 0063
exact htv - 0064
exact hw_witness_right - 0065
cases hback - 0066
split - 0067
apply hback_left - 0068
exact hboth_right - 0069
exists x - 0070
split - 0071
split - 0072
exact hw_witness_left_left - 0073
exact hboth_left - 0074
exact hw_witness_right - 0075
intro hmember - 0076
cases hmember - 0077
cases hmember_right - 0078
cases hmember_right_witness - 0079
cases hmember_right_witness_left - 0080
have hinter : (((((exists fs_h_cd_lower_back_I. fs_h_cd_lower_back_I + S (1) = S ((S (x)) * ic)) /\ exists fs_q_cd_lower_back_I. ib = fs_q_cd_lower_back_I * S ((S (x)) * ic) + (1))) -> ((((exists fs_h_cd_I_A. fs_h_cd_I_A + S (1) = S ((S (x)) * c)) /\ exists fs_q_cd_I_A. b = fs_q_cd_I_A * S ((S (x)) * c) + (1))) /\ (((exists fs_h_cd_I_T. fs_h_cd_I_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_I_T. tb = fs_q_cd_I_T * S ((S (x)) * tc) + (1))))) /\ (((((exists fs_h_cd_I_A. fs_h_cd_I_A + S (1) = S ((S (x)) * c)) /\ exists fs_q_cd_I_A. b = fs_q_cd_I_A * S ((S (x)) * c) + (1))) /\ (((exists fs_h_cd_I_T. fs_h_cd_I_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_I_T. tb = fs_q_cd_I_T * S ((S (x)) * tc) + (1)))) -> (((exists fs_h_cd_lower_back_I. fs_h_cd_lower_back_I + S (1) = S ((S (x)) * ic)) /\ exists fs_q_cd_lower_back_I. ib = fs_q_cd_lower_back_I * S ((S (x)) * ic) + (1))))) - 0081
specialize hI x - 0082
apply hI - 0083
exact hmember_right_witness_left_left - 0084
cases hinter - 0085
have hback : (((((exists fs_h_cd_lower_back_T. fs_h_cd_lower_back_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_lower_back_T. tb = fs_q_cd_lower_back_T * S ((S (x)) * tc) + (1))) -> (((exists fs_h_cd_lower_back_B. fs_h_cd_lower_back_B + S (1) = S ((S (z)) * e)) /\ exists fs_q_cd_lower_back_B. d = fs_q_cd_lower_back_B * S ((S (z)) * e) + (1)))) /\ ((((exists fs_h_cd_lower_back_B. fs_h_cd_lower_back_B + S (1) = S ((S (z)) * e)) /\ exists fs_q_cd_lower_back_B. d = fs_q_cd_lower_back_B * S ((S (z)) * e) + (1))) -> (((exists fs_h_cd_lower_back_T. fs_h_cd_lower_back_T + S (1) = S ((S (x)) * tc)) /\ exists fs_q_cd_lower_back_T. tb = fs_q_cd_lower_back_T * S ((S (x)) * tc) + (1))))) - 0086
specialize hT x - 0087
specialize hT z - 0088
apply hT - 0089
exact hmember_right_witness_left_left - 0090
exact hz - 0091
specialize finite_modular_inverse_shift p - 0092
specialize finite_modular_inverse_shift t - 0093
specialize finite_modular_inverse_shift v - 0094
specialize finite_modular_inverse_shift z - 0095
specialize finite_modular_inverse_shift x - 0096
apply finite_modular_inverse_shift - 0097
exact htv - 0098
exact hmember_right_witness_right - 0099
cases hback - 0100
apply hsource_right - 0101
exists x - 0102
split - 0103
split - 0104
exact hmember_right_witness_left_left - 0105
apply hinter_right - 0106
split - 0107
exact hmember_right_witness_left_right - 0108
apply hback_right - 0109
exact hmember_left - 0110
exact hmember_right_witness_right