proofs
Provednlightninglightningpr-14deep-formalization

BOLT 12 signature fields are disjoint from offer fields

For all t∈N\htmlData{mx=1}{t \in \htmlData{mx=0}{\mathbb{N}}}:

((240≤t∧t≤1000)  ⟹  ¬(1≤t∧t≤79∨1000000000≤t∧t≤1999999999))\begin{aligned} & \left(\right. (240 \mathrel{\htmlData{mx=2}{\leq}} \htmlData{mx=1}{t} \mathbin{\htmlData{mx=5}{\land}} \htmlData{mx=3}{t} \mathrel{\htmlData{mx=4}{\leq}} 1000) \\ & \htmlData{mx=0}{\implies} \htmlData{mx=17}{\lnot (1 \mathrel{\htmlData{mx=7}{\leq}} \htmlData{mx=6}{t} \mathbin{\htmlData{mx=10}{\land}} \htmlData{mx=8}{t} \mathrel{\htmlData{mx=9}{\leq}} 79 \mathbin{\htmlData{mx=16}{\lor}} 1000000000 \mathrel{\htmlData{mx=12}{\leq}} \htmlData{mx=11}{t} \mathbin{\htmlData{mx=15}{\land}} \htmlData{mx=13}{t} \mathrel{\htmlData{mx=14}{\leq}} 1999999999)} \left.\right) \end{aligned}
What the notation means · or point at any symbol
NNatural numbers
The natural numbers 0, 1, 2, …. In Lean they start at 0. (Nat)
⟹Implies
If 240 ≤ t ∧ t ≤ 1000, then ¬(1 ≤ t ∧ t ≤ 79 ∨ 1000000000 ≤ t ∧ t ≤ 1999999999). (Between types, A → B is the type of functions from A to B.) ((240 ≤ t ∧ t ≤ 1000) → ¬ ((1 ≤ t ∧ t ≤ …)
≤At most
240 is less than or equal to t. (240 ≤ t)
∧And
Both hold: 240 ≤ t, and t ≤ 1000. (240 ≤ t ∧ t ≤ 1000)
¬Not
It is not the case that 1 ≤ t ∧ t ≤ 79 ∨ 1000000000 ≤ t ∧ t ≤ 1999999999. (¬ ((1 ≤ t ∧ t ≤ 79) ∨ (1000000000 ≤ t ∧…)
∨Or
At least one holds: 1 ≤ t ∧ t ≤ 79, or 1000000000 ≤ t ∧ t ≤ 1999999999. ((1 ≤ t ∧ t ≤ 79) ∨ (1000000000 ≤ t ∧ t …)

Repository-grounded Lean formalization for NLightning PR #14. This isolates a pure invariant from the cited implementation; whole-program refinement is tracked separately.

How it was proved

Proved
6 October 2026
By
Ajax
Checked by
Lean's kernel (Lean 4.33.1, with Mathlib); the proof is signed and replays offline
Axioms
Quot.sound, propext
Proof
6 lines of Lean
Sign in to see the proofThe proof, its signed report and its history.

More proved statements