FC0010

crt_canonical_prefix_solution_implies_normalized

Every historical strictly bounded canonical solution is also a zero-safe normalized solution, without changing either definition.

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.

All finite lists are included, even the empty list and zero moduli. A positive LCM gives x<M; at zero LCM congruence is exact equality and normalization deliberately does not require the impossible x<0.

Exact theorem in conservative defined notation

∀ r. ∀ s. ∀ b. ∀ c. ∀ l. ∀ x. ∀ M. CRTPrefixLCM(b,c,l,M) ∧ (Lt(x,M)CRTPrefixSolution(r,s,b,c,l,x)) → CRTNormalizedPrefixSolution(r,s,b,c,l,x,M)

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

Definition DAG

Actual proof prerequisites

none
Original expanded first-order statement
forall r s b c l x M. (((((forall gcrt_common_index_gfull_canonical_to_normal_source_lcm_own gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_own. (exists ff_lt_gcrt_gfull_canonical_to_normal_source_lcm_own_bound. ff_lt_gcrt_gfull_canonical_to_normal_source_lcm_own_bound + S gcrt_common_index_gfull_canonical_to_normal_source_lcm_own = l) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_source_lcm_own_entry. ff_h_gcrt_gfull_canonical_to_normal_source_lcm_own_entry + S (gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_own) = S ((S (gcrt_common_index_gfull_canonical_to_normal_source_lcm_own)) * c)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_source_lcm_own_entry. b = ff_q_gcrt_gfull_canonical_to_normal_source_lcm_own_entry * S ((S (gcrt_common_index_gfull_canonical_to_normal_source_lcm_own)) * c) + (gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_own))) -> exists gcrt_common_quotient_gfull_canonical_to_normal_source_lcm_own. M = gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_own * gcrt_common_quotient_gfull_canonical_to_normal_source_lcm_own) /\ forall gcrt_lcm_common_gfull_canonical_to_normal_source_lcm. (forall gcrt_common_index_gfull_canonical_to_normal_source_lcm_other gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_other. (exists ff_lt_gcrt_gfull_canonical_to_normal_source_lcm_other_bound. ff_lt_gcrt_gfull_canonical_to_normal_source_lcm_other_bound + S gcrt_common_index_gfull_canonical_to_normal_source_lcm_other = l) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_source_lcm_other_entry. ff_h_gcrt_gfull_canonical_to_normal_source_lcm_other_entry + S (gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_other) = S ((S (gcrt_common_index_gfull_canonical_to_normal_source_lcm_other)) * c)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_source_lcm_other_entry. b = ff_q_gcrt_gfull_canonical_to_normal_source_lcm_other_entry * S ((S (gcrt_common_index_gfull_canonical_to_normal_source_lcm_other)) * c) + (gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_other))) -> exists gcrt_common_quotient_gfull_canonical_to_normal_source_lcm_other. gcrt_lcm_common_gfull_canonical_to_normal_source_lcm = gcrt_common_modulus_gfull_canonical_to_normal_source_lcm_other * gcrt_common_quotient_gfull_canonical_to_normal_source_lcm_other) -> exists gcrt_lcm_quotient_gfull_canonical_to_normal_source_lcm. gcrt_lcm_common_gfull_canonical_to_normal_source_lcm = M * gcrt_lcm_quotient_gfull_canonical_to_normal_source_lcm)) /\ ((exists ff_lt_gcrt_gfull_canonical_to_normal_source_bounded. ff_lt_gcrt_gfull_canonical_to_normal_source_bounded + S x = M) /\ (forall gcrt_solution_index_gfull_canonical_to_normal_source_solution gcrt_solution_residue_gfull_canonical_to_normal_source_solution gcrt_solution_modulus_gfull_canonical_to_normal_source_solution. (exists ff_lt_gcrt_gfull_canonical_to_normal_source_solution_bound. ff_lt_gcrt_gfull_canonical_to_normal_source_solution_bound + S gcrt_solution_index_gfull_canonical_to_normal_source_solution = l) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_source_solution_residue. ff_h_gcrt_gfull_canonical_to_normal_source_solution_residue + S (gcrt_solution_residue_gfull_canonical_to_normal_source_solution) = S ((S (gcrt_solution_index_gfull_canonical_to_normal_source_solution)) * s)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_source_solution_residue. r = ff_q_gcrt_gfull_canonical_to_normal_source_solution_residue * S ((S (gcrt_solution_index_gfull_canonical_to_normal_source_solution)) * s) + (gcrt_solution_residue_gfull_canonical_to_normal_source_solution))) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_source_solution_modulus. ff_h_gcrt_gfull_canonical_to_normal_source_solution_modulus + S (gcrt_solution_modulus_gfull_canonical_to_normal_source_solution) = S ((S (gcrt_solution_index_gfull_canonical_to_normal_source_solution)) * c)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_source_solution_modulus. b = ff_q_gcrt_gfull_canonical_to_normal_source_solution_modulus * S ((S (gcrt_solution_index_gfull_canonical_to_normal_source_solution)) * c) + (gcrt_solution_modulus_gfull_canonical_to_normal_source_solution))) -> (exists hgcrt_mod_left_gcrt_gfull_canonical_to_normal_source_solution_congruence hgcrt_mod_right_gcrt_gfull_canonical_to_normal_source_solution_congruence. x + gcrt_solution_modulus_gfull_canonical_to_normal_source_solution * hgcrt_mod_left_gcrt_gfull_canonical_to_normal_source_solution_congruence = gcrt_solution_residue_gfull_canonical_to_normal_source_solution + gcrt_solution_modulus_gfull_canonical_to_normal_source_solution * hgcrt_mod_right_gcrt_gfull_canonical_to_normal_source_solution_congruence))))) -> (((((forall gcrt_common_index_gfull_canonical_to_normal_result_lcm_own gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_own. (exists ff_lt_gcrt_gfull_canonical_to_normal_result_lcm_own_bound. ff_lt_gcrt_gfull_canonical_to_normal_result_lcm_own_bound + S gcrt_common_index_gfull_canonical_to_normal_result_lcm_own = l) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_result_lcm_own_entry. ff_h_gcrt_gfull_canonical_to_normal_result_lcm_own_entry + S (gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_own) = S ((S (gcrt_common_index_gfull_canonical_to_normal_result_lcm_own)) * c)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_result_lcm_own_entry. b = ff_q_gcrt_gfull_canonical_to_normal_result_lcm_own_entry * S ((S (gcrt_common_index_gfull_canonical_to_normal_result_lcm_own)) * c) + (gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_own))) -> exists gcrt_common_quotient_gfull_canonical_to_normal_result_lcm_own. M = gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_own * gcrt_common_quotient_gfull_canonical_to_normal_result_lcm_own) /\ forall gcrt_lcm_common_gfull_canonical_to_normal_result_lcm. (forall gcrt_common_index_gfull_canonical_to_normal_result_lcm_other gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_other. (exists ff_lt_gcrt_gfull_canonical_to_normal_result_lcm_other_bound. ff_lt_gcrt_gfull_canonical_to_normal_result_lcm_other_bound + S gcrt_common_index_gfull_canonical_to_normal_result_lcm_other = l) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_result_lcm_other_entry. ff_h_gcrt_gfull_canonical_to_normal_result_lcm_other_entry + S (gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_other) = S ((S (gcrt_common_index_gfull_canonical_to_normal_result_lcm_other)) * c)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_result_lcm_other_entry. b = ff_q_gcrt_gfull_canonical_to_normal_result_lcm_other_entry * S ((S (gcrt_common_index_gfull_canonical_to_normal_result_lcm_other)) * c) + (gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_other))) -> exists gcrt_common_quotient_gfull_canonical_to_normal_result_lcm_other. gcrt_lcm_common_gfull_canonical_to_normal_result_lcm = gcrt_common_modulus_gfull_canonical_to_normal_result_lcm_other * gcrt_common_quotient_gfull_canonical_to_normal_result_lcm_other) -> exists gcrt_lcm_quotient_gfull_canonical_to_normal_result_lcm. gcrt_lcm_common_gfull_canonical_to_normal_result_lcm = M * gcrt_lcm_quotient_gfull_canonical_to_normal_result_lcm)) /\ ((M = 0 \/ (exists ff_lt_gcrt_gfull_canonical_to_normal_result_bound. ff_lt_gcrt_gfull_canonical_to_normal_result_bound + S x = M)) /\ (forall gcrt_solution_index_gfull_canonical_to_normal_result_solution gcrt_solution_residue_gfull_canonical_to_normal_result_solution gcrt_solution_modulus_gfull_canonical_to_normal_result_solution. (exists ff_lt_gcrt_gfull_canonical_to_normal_result_solution_bound. ff_lt_gcrt_gfull_canonical_to_normal_result_solution_bound + S gcrt_solution_index_gfull_canonical_to_normal_result_solution = l) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_result_solution_residue. ff_h_gcrt_gfull_canonical_to_normal_result_solution_residue + S (gcrt_solution_residue_gfull_canonical_to_normal_result_solution) = S ((S (gcrt_solution_index_gfull_canonical_to_normal_result_solution)) * s)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_result_solution_residue. r = ff_q_gcrt_gfull_canonical_to_normal_result_solution_residue * S ((S (gcrt_solution_index_gfull_canonical_to_normal_result_solution)) * s) + (gcrt_solution_residue_gfull_canonical_to_normal_result_solution))) -> (((exists ff_h_gcrt_gfull_canonical_to_normal_result_solution_modulus. ff_h_gcrt_gfull_canonical_to_normal_result_solution_modulus + S (gcrt_solution_modulus_gfull_canonical_to_normal_result_solution) = S ((S (gcrt_solution_index_gfull_canonical_to_normal_result_solution)) * c)) /\ exists ff_q_gcrt_gfull_canonical_to_normal_result_solution_modulus. b = ff_q_gcrt_gfull_canonical_to_normal_result_solution_modulus * S ((S (gcrt_solution_index_gfull_canonical_to_normal_result_solution)) * c) + (gcrt_solution_modulus_gfull_canonical_to_normal_result_solution))) -> (exists hgcrt_mod_left_gcrt_gfull_canonical_to_normal_result_solution_congruence hgcrt_mod_right_gcrt_gfull_canonical_to_normal_result_solution_congruence. x + gcrt_solution_modulus_gfull_canonical_to_normal_result_solution * hgcrt_mod_left_gcrt_gfull_canonical_to_normal_result_solution_congruence = gcrt_solution_residue_gfull_canonical_to_normal_result_solution + gcrt_solution_modulus_gfull_canonical_to_normal_result_solution * hgcrt_mod_right_gcrt_gfull_canonical_to_normal_result_solution_congruence)))))

Complete tactic proof in conservative notation

All 16 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

16 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–8

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 x
  7. L7
    intro M
  8. L8
    intro hc
02Separate the logical casesL9–11

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

  1. L9
    cases hc
  2. L10
    cases hc_right
  3. L11
    split
03Use earlier factsL12–12

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

  1. L12
    exact hc_left
04Separate the logical casesL13–14

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

  1. L13
    split
  2. L14
    right
05Use earlier factsL15–16

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

  1. L15
    exact hc_right_left
  2. L16
    exact hc_right_right

Library-wide reading audit

Original defined command ledger · 16 lines
  1. 0001intro r
  2. 0002intro s
  3. 0003intro b
  4. 0004intro c
  5. 0005intro l
  6. 0006intro x
  7. 0007intro M
  8. 0008intro hc
  9. 0009cases hc
  10. 0010cases hc_right
  11. 0011split
  12. 0012exact hc_left
  13. 0013split
  14. 0014right
  15. 0015exact hc_right_left
  16. 0016exact hc_right_right