HL0019

hensel_signed_blend_zero_iff

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

The recoded natural value is zero modulo an old or new modulus exactly when the original signed value is zero there.

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 m M h A B C. M = S h -> (exists q. M = m * q) -> C = A + h * B -> (((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = B + m * hgcrt_mod_right_hpl_mod)) /\ ((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = B + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod)))

Constructive proof overview

Generated structural guide

The recoded natural value is zero modulo an old or new modulus exactly when the original signed value is zero there.

The unchanged tactic script uses 2 declared prerequisites and contains 26 exact native proof lines.

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

Proof neighborhood

Direct dependencies

HL0018 hensel_signed_blend_mod_iff zero_add Stable theorem; checked-use authorized

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

26 script commands · 4 reading checkpoints · 2 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.

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

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

  1. L1
    intro m
  2. L2
    intro M
  3. L3
    intro h
  4. L4
    intro A
  5. L5
    intro B
  6. L6
    intro C
  7. L7
    intro hM
  8. L8
    intro hdiv
  9. L9
    intro hC
02Establish hiffL10–19

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hensel signed blend mod iff.

  1. L10
    have hiff : (((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = (0 + B) + m * hgcrt_mod_right_hpl_mod)) /\ ((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = (0 + B) + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod)))
  2. L11
    specialize hensel_signed_blend_mod_iff m
  3. L12
    specialize hensel_signed_blend_mod_iff M
  4. L13
    specialize hensel_signed_blend_mod_iff h
  5. L14
    specialize hensel_signed_blend_mod_iff A
  6. L15
    specialize hensel_signed_blend_mod_iff B
  7. L16
    specialize hensel_signed_blend_mod_iff C
  8. L17
    specialize hensel_signed_blend_mod_iff 0
  9. L18
    apply hensel_signed_blend_mod_iff
  10. L19
    exact hM
03Use earlier factsL20–21

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

  1. L20
    exact hdiv
  2. L21
    exact hC
04Establish hzeroL22–26

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

  1. L22
    have hzero : 0 + B = B
  2. L23
    apply zero_add
  3. L24
    rewrite hzero at hiff
  4. L25
    rewrite hzero at hiff
  5. L26
    exact hiff

Library-wide reading audit

Original exact command ledger · 26 lines
  1. 0001intro m
  2. 0002intro M
  3. 0003intro h
  4. 0004intro A
  5. 0005intro B
  6. 0006intro C
  7. 0007intro hM
  8. 0008intro hdiv
  9. 0009intro hC
  10. 0010have hiff : (((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = (0 + B) + m * hgcrt_mod_right_hpl_mod)) /\ ((exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. A + m * hgcrt_mod_left_hpl_mod = (0 + B) + m * hgcrt_mod_right_hpl_mod) -> (exists hgcrt_mod_left_hpl_mod hgcrt_mod_right_hpl_mod. C + m * hgcrt_mod_left_hpl_mod = 0 + m * hgcrt_mod_right_hpl_mod)))
  11. 0011specialize hensel_signed_blend_mod_iff m
  12. 0012specialize hensel_signed_blend_mod_iff M
  13. 0013specialize hensel_signed_blend_mod_iff h
  14. 0014specialize hensel_signed_blend_mod_iff A
  15. 0015specialize hensel_signed_blend_mod_iff B
  16. 0016specialize hensel_signed_blend_mod_iff C
  17. 0017specialize hensel_signed_blend_mod_iff 0
  18. 0018apply hensel_signed_blend_mod_iff
  19. 0019exact hM
  20. 0020exact hdiv
  21. 0021exact hC
  22. 0022have hzero : 0 + B = B
  23. 0023apply zero_add
  24. 0024rewrite hzero at hiff
  25. 0025rewrite hzero at hiff
  26. 0026exact hiff