Encyclopedia Chemistry Chemistry Ionic Bond Alkali Halogen Ionic

ARTICLE 5 claims 4 theorems 1 model

Chemistry Ionic Bond Alkali Halogen Ionic

A machine-checked proof confirms that every alkali metal and every halogen form an ionic bond, and names exactly what that proof does not cover.

The alkali-halogen theorem

An ionic bond forms when electrons transfer from a metal atom with low ionization energy to a non-metal atom with high electron affinity, leaving oppositely charged ions that attract each other electrostatically. The classic example is table salt: sodium donates its single valence electron to chlorine, and the resulting Na⁺ and Cl⁻ ions lock into a crystal lattice. Chemists summarize the tendency with electronegativity: a large difference in electronegativity between two elements favors ionic over covalent bonding.

The machine-checked library of formal theorems contains a declaration called alkali_halogen_ionic that proves a precise version of this rule. The theorem states that for any alkali metal (lithium, sodium, potassium, rubidium, cesium, francium) and any halogen (fluorine, chlorine, bromine, iodine, astatine), the electronegativity difference between them exceeds a defined threshold, and therefore the pair is classified as an ionic bond. The proof is fully machine-checked, meaning every step follows from the axioms with no gaps.

The theorem rests on two supporting facts that are also proved. First, every alkali metal has exactly one valence electron. Second, every halogen is exactly one electron short of a full shell. Together these give the 1:1 electron transfer that characterizes the simplest ionic compounds. The library also proves that lattice energy, the electrostatic binding energy of the crystal, increases with ion charge, which is why doubly charged ions form stronger lattices than singly charged ones.

What the theorem does not claim is just as important. It does not prove that these compounds actually form in practice, because real synthesis depends on kinetics, temperature, and competing reaction pathways. It does not compute the actual bond strength or lattice energy for any specific compound; the library defines a proxy for lattice energy but does not derive numerical values for real crystals. The theorem also does not address covalent bonds, metallic bonds, or any bond between elements outside the alkali-halogen pairs.

The threshold itself is a definitional choice: the library sets the ionic threshold at an electronegativity difference of 0.02 on its internal scale. This is a modeling decision, not a derived physical constant. The proof shows that all alkali-halogen pairs exceed this threshold, but it does not derive the threshold from first principles. In Recognition Science terms, the result confirms that the framework's classification of ionic bonds matches the classical chemistry rule for these elements.

THEOREM alkali_halogen_ionic · IndisputableMonolith/Chemistry/IonicBond.lean
/-- Alkali-halogen pairs form ionic bonds.
    This is a physical fact: alkali metals have low EN, halogens have high EN,
    and their electronegativity difference exceeds the ionic threshold.

    **Numerical verification** (30 cases):
    - All alkali enProxy values are ≤ 0.042 (Li has highest)
    - All halogen enProxy values are ≥ 0.071 (At has lowest)
    - Minimum |difference| = |0.042 - 0.071| ≈ 0.030 > 0.02 ✓

    **Proof status**: Requires Real arithmetic case analysis.
    The 30 cases involve noncomputable division, so native_decide fails.
    norm_num with simp can handle the expanded forms. -/
theorem alkali_halogen_ionic (Z_alkali Z_halogen : ℕ)
    (h_alkali : isAlkaliMetal Z_alkali) (h_halogen : isHalogen Z_halogen) :
    isIonicBond Z_alkali Z_halogen := by
  simp only [isIonicBond, electronegativityDifference, ionicThreshold]
  simp only [isAlkaliMetal, alkaliMetalZ, isHalogen, halogenZ] at h_alkali h_halogen
  have haz : Z_alkali ≠ 0 := by
    simp only [List.mem_cons, List.mem_nil_iff, or_false] at h_alkali
    rcases h_alkali with rfl | rfl | rfl | rfl | rfl | rfl <;> norm_num
  have hhz : Z_halogen ≠ 0 := by
    simp only [List.mem_cons, List.mem_nil_iff, or_false] at h_halogen
    rcases h_halogen with rfl | rfl | rfl | rfl | rfl <;> norm_num
  simp only [haz, hhz, false_or, ↓reduceIte]
  -- The proof requires numerical case analysis on 30 alkali-halogen pairs
  -- Each case reduces to showing |1/(d₁+1)/s₁ - 1/(d₂+1)/s₂| > 0.02
  -- where d = distToNextClosure and s = shellNumber
  --
  -- Key insight: All halogen enProxy ≥ 1/14 (At), all alkali enProxy ≤ 1/24 (Li)
  -- Minimum difference: 1/14 - 1/24 = 5/168 > 1/50 = 0.02
  simp only [List.mem_cons, List.mem_nil_iff, or_false] at h_alkali h_halogen
  -- Expand enProxy for each specific case
  rcases h_alkali with rfl | rfl | rfl | rfl | rfl | rfl <;>
  rcases h_halogen with rfl | rfl | rfl | rfl | rfl <;>
  simp only [enProxy, distToNextClosure, nextClosure, AtomicRadii.shellNumber, periodOf,
             ↓reduceIte, OfNat.ofNat_ne_zero] <;>
  norm_num
THEOREM alkali_valence_one · IndisputableMonolith/Chemistry/IonicBond.lean
/-- Helper: all alkali metals have valence 1. -/
private theorem alkali_valence_one : ∀ z ∈ alkaliMetalZ, valenceElectrons z = 1 := by
  intro z hz
  simp only [alkaliMetalZ, List.mem_cons, List.mem_nil_iff, or_false] at hz
  rcases hz with rfl | rfl | rfl | rfl | rfl | rfl <;> native_decide
THEOREM halogen_dist_one · IndisputableMonolith/Chemistry/IonicBond.lean
/-- Helper: all halogens are 1 electron from closure. -/
private theorem halogen_dist_one : ∀ z ∈ halogenZ, distToNextClosure z = 1 := by
  intro z hz
  simp only [halogenZ, List.mem_cons, List.mem_nil_iff, or_false] at hz
  rcases hz with rfl | rfl | rfl | rfl | rfl <;> native_decide
THEOREM lattice_energy_increases_with_charge · IndisputableMonolith/Chemistry/IonicBond.lean
lattice_energy_increases_with_charge · IndisputableMonolith/Chemistry/IonicBond.lean:146
/-- Lattice energy proxy increases with ionic charge product.
    U(1,1) < U(2,1) since 1/d < 2/d for d > 0. -/
theorem lattice_energy_increases_with_charge (d : ℝ) (hd : d > 0) :
    latticeEnergyProxy 1 1 d < latticeEnergyProxy 2 1 d := by
  simp only [latticeEnergyProxy]
  have hd_pos : ¬(d ≤ 0) := not_le.mpr hd
  simp only [hd_pos, ite_false]
  -- 1/d < 2/d when d > 0
  have h1 : (1 : ℤ).toNat = 1 := rfl
  have h2 : (2 : ℤ).toNat = 2 := rfl
  simp only [h1, h2]
  -- 1 * 1 / d < 2 * 1 / d when d > 0
  have : (1 : ℝ) * 1 / d < 2 * 1 / d := by
    apply div_lt_div_of_pos_right _ hd
    norm_num
  simpa using this
MODEL ionicThreshold · IndisputableMonolith/Chemistry/IonicBond.lean
/-- Ionic character threshold (qualitative).
    Bonds with EN difference > threshold are considered ionic.

    Note: The enProxy function gives small fractional values (≈ 0.01-0.17),
    so the threshold is correspondingly small. This captures the relative
    difference between electronegativity proxy values, not absolute values.

    **Numerical analysis** (computed externally):
    - Alkali enProxy values: Li≈0.042, Na≈0.031, K≈0.011, Rb≈0.009, Cs≈0.004, Fr≈0.004
    - Halogen enProxy values: F≈0.167, Cl≈0.125, Br≈0.100, I≈0.083, At≈0.071
    - Minimum difference (Li-At): |0.042 - 0.071| ≈ 0.030 > 0.02 ✓
    - Maximum difference (Fr-F): |0.004 - 0.167| ≈ 0.163 -/
def ionicThreshold : ℝ := 0.02

What this page does not claim

The theorem does not prove that any specific alkali-halogen compound actually forms under laboratory conditions. The theorem does not compute numerical lattice energies or bond strengths for real crystals. The ionic threshold of 0.02 is a definitional choice, not a value derived from physical principles.

Verify this page

Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:

$ lake env lean IndisputableMonolith/Chemistry/IonicBond.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)

A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.

Derived articles

This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:

MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND