CD0036

finite_modular_dyson_upper_from_union

The actual union with a genuine forward translate has exactly the upper Dyson-transform membership.

Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable

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.

Sets are complete characteristic-bit codes with actual finite cardinality witnesses. The proof constructs translations and the sumset; no finite-choice oracle, supplied cardinality conclusion, or unproved polynomial-method premise is used.

Exact theorem in conservative defined notation

∀ b. ∀ c. ∀ d. ∀ e. ∀ tb. ∀ tc. ∀ ub. ∀ uc. ∀ p. ∀ t. ∀ v. ¬p = 0 → t + v = p → ModularSetPullback(d,e,tb,tc,p,v)ModularSetUnion(b,c,tb,tc,ub,uc,p) → ∀ x. Lt(x,p) → (BetaAt(ub,uc,x,1)BetaAt(b,c,x,1) ∨ (∃ y. ModularSetMember(d,e,p,y)ModEq(p,y + t,x))) ∧ (BetaAt(b,c,x,1) ∨ (∃ y. ModularSetMember(d,e,p,y)ModEq(p,y + t,x)) → BetaAt(ub,uc,x,1))

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall b c d e tb tc ub uc 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)) * 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)) * 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)) * uc)) /\ exists fs_q_fms_binary_result. ub = fs_q_fms_binary_result * S ((S (fms_i_binary)) * uc) + (1))))))) -> (forall cd_output_upper. (exists fms_gap_cd_upper_bound. fms_gap_cd_upper_bound + S (cd_output_upper) = (p)) -> ((((((exists fs_h_cd_upper_result. fs_h_cd_upper_result + S (1) = S ((S (cd_output_upper)) * uc)) /\ exists fs_q_cd_upper_result. ub = fs_q_cd_upper_result * S ((S (cd_output_upper)) * uc) + (1))) -> ((((exists fs_h_cd_upper_old. fs_h_cd_upper_old + S (1) = S ((S (cd_output_upper)) * c)) /\ exists fs_q_cd_upper_old. b = fs_q_cd_upper_old * S ((S (cd_output_upper)) * c) + (1))) \/ (exists cd_source_upper. (((exists fms_gap_cd_upper_member. fms_gap_cd_upper_member + S (cd_source_upper) = (p)) /\ (((exists fs_h_fms_cd_upper_member. fs_h_fms_cd_upper_member + S (1) = S ((S (cd_source_upper)) * e)) /\ exists fs_q_fms_cd_upper_member. d = fs_q_fms_cd_upper_member * S ((S (cd_source_upper)) * e) + (1))))) /\ (exists fms_u_cd_upper_mod fms_v_cd_upper_mod. (cd_source_upper+t) + (p) * fms_u_cd_upper_mod = (cd_output_upper) + (p) * fms_v_cd_upper_mod)))) /\ (((((exists fs_h_cd_upper_old. fs_h_cd_upper_old + S (1) = S ((S (cd_output_upper)) * c)) /\ exists fs_q_cd_upper_old. b = fs_q_cd_upper_old * S ((S (cd_output_upper)) * c) + (1))) \/ (exists cd_source_upper. (((exists fms_gap_cd_upper_member. fms_gap_cd_upper_member + S (cd_source_upper) = (p)) /\ (((exists fs_h_fms_cd_upper_member. fs_h_fms_cd_upper_member + S (1) = S ((S (cd_source_upper)) * e)) /\ exists fs_q_fms_cd_upper_member. d = fs_q_fms_cd_upper_member * S ((S (cd_source_upper)) * e) + (1))))) /\ (exists fms_u_cd_upper_mod fms_v_cd_upper_mod. (cd_source_upper+t) + (p) * fms_u_cd_upper_mod = (cd_output_upper) + (p) * fms_v_cd_upper_mod))) -> (((exists fs_h_cd_upper_result. fs_h_cd_upper_result + S (1) = S ((S (cd_output_upper)) * uc)) /\ exists fs_q_cd_upper_result. ub = fs_q_cd_upper_result * S ((S (cd_output_upper)) * uc) + (1)))))))

Complete tactic proof in conservative notation

All 56 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

56 script commands · 19 reading checkpoints · 3 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (1)
01Fix variables and assumptionsL1–10

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro d
  4. L4
    intro e
  5. L5
    intro tb
  6. L6
    intro tc
  7. L7
    intro ub
  8. L8
    intro uc
  9. L9
    intro p
  10. L10
    intro t
02Fix variables and assumptionsL11–17

Work with arbitrary variables or the premises of the current implication.

  1. L11
    intro v
  2. L12
    intro hp
  3. L13
    intro htv
  4. L14
    intro hpull
  5. L15
    intro hunion
  6. L16
    intro z
  7. L17
    intro hz
03Establish hshiftL18–27

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular pushforward membership witness.

  1. L18
    have hshift : (BetaAt(tb,tc,z,1) → ∃ x. ModularSetMember(d,e,p,x) ∧ ModEq(p,x + t,z)) ∧ ((∃ x. ModularSetMember(d,e,p,x) ∧ ModEq(p,x + t,z)) → BetaAt(tb,tc,z,1))Definitions: BetaAt(tb,tc,z,1)ModularSetMember(d,e,p,x)ModEq(p,x + t,z)Original native command in the exact edition
  2. L19
    specialize finite_modular_pushforward_membership_witness d
  3. L20
    specialize finite_modular_pushforward_membership_witness e
  4. L21
    specialize finite_modular_pushforward_membership_witness tb
  5. L22
    specialize finite_modular_pushforward_membership_witness tc
  6. L23
    specialize finite_modular_pushforward_membership_witness p
  7. L24
    specialize finite_modular_pushforward_membership_witness t
  8. L25
    specialize finite_modular_pushforward_membership_witness v
  9. L26
    specialize finite_modular_pushforward_membership_witness z
  10. L27
    apply finite_modular_pushforward_membership_witness
04Use earlier factsL28–31

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L28
    exact hp
  2. L29
    exact htv
  3. L30
    exact hpull
  4. L31
    exact hz
05Separate the logical casesL32–32

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L32
    cases hshift
06Establish hunL33–36

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hunion.

  1. L33
    have hun : (BetaAt(ub,uc,z,1) → BetaAt(b,c,z,1) ∨ BetaAt(tb,tc,z,1)) ∧ (BetaAt(b,c,z,1) ∨ BetaAt(tb,tc,z,1) → BetaAt(ub,uc,z,1))Definitions: BetaAt(ub,uc,z,1)BetaAt(b,c,z,1)BetaAt(tb,tc,z,1)Original native command in the exact edition
  2. L34
    specialize hunion z
  3. L35
    apply hunion
  4. L36
    exact hz
07Separate the logical casesL37–38

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L37
    cases hun
  2. L38
    split
08Fix variables and assumptionsL39–39

Work with arbitrary variables or the premises of the current implication.

  1. L39
    intro hu
09Establish hcaseL40–42

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hun left.

  1. L40
    have hcase : BetaAt(b,c,z,1) ∨ BetaAt(tb,tc,z,1)Definitions: BetaAt(b,c,z,1)BetaAt(tb,tc,z,1)Original native command in the exact edition
  2. L41
    apply hun_left
  3. L42
    exact hu
10Separate the logical casesL43–44

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L43
    cases hcase
  2. L44
    left
11Use earlier factsL45–45

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L45
    exact hcase_left
12Separate the logical casesL46–46

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L46
    right
13Use earlier factsL47–48

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L47
    apply hshift_left
  2. L48
    exact hcase_right
14Fix variables and assumptionsL49–49

Work with arbitrary variables or the premises of the current implication.

  1. L49
    intro hcase
15Use earlier factsL50–50

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L50
    apply hun_right
16Separate the logical casesL51–52

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L51
    cases hcase
  2. L52
    left
17Use earlier factsL53–53

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L53
    exact hcase_left
18Separate the logical casesL54–54

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L54
    right
19Use earlier factsL55–56

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L55
    apply hshift_right
  2. L56
    exact hcase_right

Library-wide reading audit

Original defined command ledger · 56 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro d
  4. 0004intro e
  5. 0005intro tb
  6. 0006intro tc
  7. 0007intro ub
  8. 0008intro uc
  9. 0009intro p
  10. 0010intro t
  11. 0011intro v
  12. 0012intro hp
  13. 0013intro htv
  14. 0014intro hpull
  15. 0015intro hunion
  16. 0016intro z
  17. 0017intro hz
  18. 0018have hshift : (BetaAt(tb,tc,z,1) → ∃ x. ModularSetMember(d,e,p,x)ModEq(p,x + t,z)) ∧ ((∃ x. ModularSetMember(d,e,p,x)ModEq(p,x + t,z)) → BetaAt(tb,tc,z,1))
  19. 0019specialize finite_modular_pushforward_membership_witness d
  20. 0020specialize finite_modular_pushforward_membership_witness e
  21. 0021specialize finite_modular_pushforward_membership_witness tb
  22. 0022specialize finite_modular_pushforward_membership_witness tc
  23. 0023specialize finite_modular_pushforward_membership_witness p
  24. 0024specialize finite_modular_pushforward_membership_witness t
  25. 0025specialize finite_modular_pushforward_membership_witness v
  26. 0026specialize finite_modular_pushforward_membership_witness z
  27. 0027apply finite_modular_pushforward_membership_witness
  28. 0028exact hp
  29. 0029exact htv
  30. 0030exact hpull
  31. 0031exact hz
  32. 0032cases hshift
  33. 0033have hun : (BetaAt(ub,uc,z,1)BetaAt(b,c,z,1)BetaAt(tb,tc,z,1)) ∧ (BetaAt(b,c,z,1)BetaAt(tb,tc,z,1)BetaAt(ub,uc,z,1))
  34. 0034specialize hunion z
  35. 0035apply hunion
  36. 0036exact hz
  37. 0037cases hun
  38. 0038split
  39. 0039intro hu
  40. 0040have hcase : BetaAt(b,c,z,1)BetaAt(tb,tc,z,1)
  41. 0041apply hun_left
  42. 0042exact hu
  43. 0043cases hcase
  44. 0044left
  45. 0045exact hcase_left
  46. 0046right
  47. 0047apply hshift_left
  48. 0048exact hcase_right
  49. 0049intro hcase
  50. 0050apply hun_right
  51. 0051cases hcase
  52. 0052left
  53. 0053exact hcase_left
  54. 0054right
  55. 0055apply hshift_right
  56. 0056exact hcase_right