CR0015

crt_prefix_solution_transport_common_multiple

Congruence modulo any common multiple transports an actual simultaneous-list solution.

Alpha v34 checked-use · first admitted v24 · 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.

Historical partial components only: this chapter proves canonical solutions for finite positive pairwise-coprime systems and exact LCM solution classes. G011 is now closed in the separate Alpha-v27 generalized-crt branch for arbitrary pairwise-compatible systems, including noncoprime moduli. Full G011 proof · Alpha v27

Exact theorem in conservative defined notation

∀ r. ∀ s. ∀ b. ∀ c. ∀ l. ∀ M. ∀ x. ∀ y. (∀ z. ∀ n. Lt(z,l)Beta(b,c,z,n)Dvd(n,M)) → CRTPrefixSolution(r,s,b,c,l,x)ModEq(M,y,x)CRTPrefixSolution(r,s,b,c,l,y)

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

Definition DAG

Actual proof prerequisites

mod_eq_of_mod_eq_multiple · checked external prerequisitemod_eq_trans · checked external prerequisite
Original expanded first-order statement
forall r s b c l M x y. (forall gcrt_common_index_transport_multiple gcrt_common_modulus_transport_multiple. (exists ff_lt_gcrt_transport_multiple_bound. ff_lt_gcrt_transport_multiple_bound + S gcrt_common_index_transport_multiple = l) -> (((exists ff_h_gcrt_transport_multiple_entry. ff_h_gcrt_transport_multiple_entry + S (gcrt_common_modulus_transport_multiple) = S ((S (gcrt_common_index_transport_multiple)) * c)) /\ exists ff_q_gcrt_transport_multiple_entry. b = ff_q_gcrt_transport_multiple_entry * S ((S (gcrt_common_index_transport_multiple)) * c) + (gcrt_common_modulus_transport_multiple))) -> exists gcrt_common_quotient_transport_multiple. M = gcrt_common_modulus_transport_multiple * gcrt_common_quotient_transport_multiple) -> (forall gcrt_solution_index_transport_source gcrt_solution_residue_transport_source gcrt_solution_modulus_transport_source. (exists ff_lt_gcrt_transport_source_bound. ff_lt_gcrt_transport_source_bound + S gcrt_solution_index_transport_source = l) -> (((exists ff_h_gcrt_transport_source_residue. ff_h_gcrt_transport_source_residue + S (gcrt_solution_residue_transport_source) = S ((S (gcrt_solution_index_transport_source)) * s)) /\ exists ff_q_gcrt_transport_source_residue. r = ff_q_gcrt_transport_source_residue * S ((S (gcrt_solution_index_transport_source)) * s) + (gcrt_solution_residue_transport_source))) -> (((exists ff_h_gcrt_transport_source_modulus. ff_h_gcrt_transport_source_modulus + S (gcrt_solution_modulus_transport_source) = S ((S (gcrt_solution_index_transport_source)) * c)) /\ exists ff_q_gcrt_transport_source_modulus. b = ff_q_gcrt_transport_source_modulus * S ((S (gcrt_solution_index_transport_source)) * c) + (gcrt_solution_modulus_transport_source))) -> (exists hgcrt_mod_left_gcrt_transport_source_congruence hgcrt_mod_right_gcrt_transport_source_congruence. x + gcrt_solution_modulus_transport_source * hgcrt_mod_left_gcrt_transport_source_congruence = gcrt_solution_residue_transport_source + gcrt_solution_modulus_transport_source * hgcrt_mod_right_gcrt_transport_source_congruence)) -> (exists hgcrt_mod_left_gcrt_transport_congruence hgcrt_mod_right_gcrt_transport_congruence. y + M * hgcrt_mod_left_gcrt_transport_congruence = x + M * hgcrt_mod_right_gcrt_transport_congruence) -> (forall gcrt_solution_index_transport_result gcrt_solution_residue_transport_result gcrt_solution_modulus_transport_result. (exists ff_lt_gcrt_transport_result_bound. ff_lt_gcrt_transport_result_bound + S gcrt_solution_index_transport_result = l) -> (((exists ff_h_gcrt_transport_result_residue. ff_h_gcrt_transport_result_residue + S (gcrt_solution_residue_transport_result) = S ((S (gcrt_solution_index_transport_result)) * s)) /\ exists ff_q_gcrt_transport_result_residue. r = ff_q_gcrt_transport_result_residue * S ((S (gcrt_solution_index_transport_result)) * s) + (gcrt_solution_residue_transport_result))) -> (((exists ff_h_gcrt_transport_result_modulus. ff_h_gcrt_transport_result_modulus + S (gcrt_solution_modulus_transport_result) = S ((S (gcrt_solution_index_transport_result)) * c)) /\ exists ff_q_gcrt_transport_result_modulus. b = ff_q_gcrt_transport_result_modulus * S ((S (gcrt_solution_index_transport_result)) * c) + (gcrt_solution_modulus_transport_result))) -> (exists hgcrt_mod_left_gcrt_transport_result_congruence hgcrt_mod_right_gcrt_transport_result_congruence. y + gcrt_solution_modulus_transport_result * hgcrt_mod_left_gcrt_transport_result_congruence = gcrt_solution_residue_transport_result + gcrt_solution_modulus_transport_result * hgcrt_mod_right_gcrt_transport_result_congruence))

Complete unchanged native tactic proof

All 40 lines are the exact independently kernel-checked original script.

Read the argument

Proof checkpoints

40 script commands · 5 reading checkpoints · 0 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.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro r
  2. L2
    intro s
  3. L3
    intro b
  4. L4
    intro c
  5. L5
    intro l
  6. L6
    intro M
  7. L7
    intro x
  8. L8
    intro y
  9. L9
    intro hcommon
  10. L10
    intro hx
02Fix variables and assumptionsL11–17

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

  1. L11
    intro hmod
  2. L12
    intro i
  3. L13
    intro a
  4. L14
    intro m
  5. L15
    intro hi
  6. L16
    intro ha
  7. L17
    intro hm
03Use earlier factsL18–27

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

  1. L18
    specialize mod_eq_trans m
  2. L19
    specialize mod_eq_trans y
  3. L20
    specialize mod_eq_trans x
  4. L21
    specialize mod_eq_trans a
  5. L22
    apply mod_eq_trans
  6. L23
    specialize mod_eq_of_mod_eq_multiple m
  7. L24
    specialize mod_eq_of_mod_eq_multiple M
  8. L25
    specialize mod_eq_of_mod_eq_multiple y
  9. L26
    specialize mod_eq_of_mod_eq_multiple x
  10. L27
    apply mod_eq_of_mod_eq_multiple
04Use earlier factsL28–37

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

  1. L28
    specialize hcommon i
  2. L29
    specialize hcommon m
  3. L30
    apply hcommon
  4. L31
    exact hi
  5. L32
    exact hm
  6. L33
    exact hmod
  7. L34
    specialize hx i
  8. L35
    specialize hx a
  9. L36
    specialize hx m
  10. L37
    apply hx
05Use earlier factsL38–40

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

  1. L38
    exact hi
  2. L39
    exact ha
  3. L40
    exact hm

Library-wide reading audit

Original defined command ledger · 40 lines
  1. 0001intro r
  2. 0002intro s
  3. 0003intro b
  4. 0004intro c
  5. 0005intro l
  6. 0006intro M
  7. 0007intro x
  8. 0008intro y
  9. 0009intro hcommon
  10. 0010intro hx
  11. 0011intro hmod
  12. 0012intro i
  13. 0013intro a
  14. 0014intro m
  15. 0015intro hi
  16. 0016intro ha
  17. 0017intro hm
  18. 0018specialize mod_eq_trans m
  19. 0019specialize mod_eq_trans y
  20. 0020specialize mod_eq_trans x
  21. 0021specialize mod_eq_trans a
  22. 0022apply mod_eq_trans
  23. 0023specialize mod_eq_of_mod_eq_multiple m
  24. 0024specialize mod_eq_of_mod_eq_multiple M
  25. 0025specialize mod_eq_of_mod_eq_multiple y
  26. 0026specialize mod_eq_of_mod_eq_multiple x
  27. 0027apply mod_eq_of_mod_eq_multiple
  28. 0028specialize hcommon i
  29. 0029specialize hcommon m
  30. 0030apply hcommon
  31. 0031exact hi
  32. 0032exact hm
  33. 0033exact hmod
  34. 0034specialize hx i
  35. 0035specialize hx a
  36. 0036specialize hx m
  37. 0037apply hx
  38. 0038exact hi
  39. 0039exact ha
  40. 0040exact hm