Support, norm and Euclidean norm on
DefinitionCandesTao_Decoding_NormsThree elementary notions used throughout the mission, for real vectors indexed by .
-
A vector is supported on an index set when for every . This is how the paper's "real vector supported on a set " and its coefficient vectors are represented: a vector of full length whose coordinates outside vanish, so that is simply the matrix–vector product .
-
The norm (paper, Section 1.2).
-
The Euclidean norm , used both for coefficient vectors in and for vectors in ; the paper writes it or .
These are the only norms that enter the restricted isometry constants of Definition 1.1 and the two -minimization problems and of the mission.
Formalization Note Both norms are explicit finite sums rather than instances of Mathlib's normed-space structure on EuclideanSpace, so that every statement of the mission can be audited by hand against the paper.
import Mathlib.Analysis.Real.Sqrt
import Mathlib.Data.Matrix.Mul
namespace CandesTao.Decoding
/-- A vector `c ∈ ℝ^m` is supported on the index set `T` when every coordinate outside `T`
is zero. -/
def SupportedOn {m : ℕ} (c : Fin m → ℝ) (T : Finset (Fin m)) : Prop :=
∀ j, j ∉ T → c j = 0
/-- The ℓ¹ norm `‖c‖_{ℓ¹} = ∑_j |c_j|`. -/
def l1Norm {m : ℕ} (c : Fin m → ℝ) : ℝ := ∑ j, |c j|
/-- The Euclidean (ℓ²) norm `‖x‖ = (∑_i x_i²)^{1/2}`. -/
noncomputable def l2Norm {n : ℕ} (x : Fin n → ℝ) : ℝ := Real.sqrt (∑ i, x i ^ 2)
end CandesTao.DecodingRead-back
What the Lean code literally says, in plain math · claude-fable-5-1
SupportedOn (full name CandesTao.Decoding.SupportedOn). This is a definition of a proposition (a truth-valued statement), not a theorem. It takes three inputs: a natural number (an implicit argument, inferred from ), a vector of real numbers indexed by , and a finite set of indices (since the index set is itself finite, may be any subset of it). The proposition asserts
i.e. every coordinate of whose index lies outside is exactly zero; equivalently, the set is contained in . Nothing is asserted about the coordinates with (they may be zero or nonzero), so this is containment of the support in , not equality of the support with . Edge cases: if is the whole index set the proposition holds for every ; if it says that is the zero vector; if the index set is empty, the only possible is , and the proposition holds vacuously for the unique (empty) vector .
l1Norm (full name CandesTao.Decoding.l1Norm). This is a definition of a real number. It takes a natural number (implicit, inferred from ) and a vector of real numbers indexed by , and returns
the sum, over every index in the full index set (not over any subset), of the ordinary absolute value of the real number . Edge case: for the sum is empty and the value is . The definition asserts nothing beyond this formula (for instance, it does not itself state nonnegativity or that this is a norm); it simply names this real number.
l2Norm (full name CandesTao.Decoding.l2Norm). This is a definition of a real number (flagged as noncomputable, which carries no mathematical content). It takes a natural number (implicit, inferred from ; note the dimension variable is called here whereas the two declarations above use , and there is no linkage between them) and a vector of real numbers indexed by , and returns
where means (the exponent is the natural number ) and the sum runs over the entire index set. The square root is Mathlib's real square-root function , which on a nonnegative argument returns the unique nonnegative real with , and on a negative argument returns the junk value . Here the radicand is a sum of squares of real numbers and hence always , so the junk branch is never reached and the value is the ordinary nonnegative square root. Edge case: for the sum is empty, the radicand is , and the value is . Nothing beyond this formula (for example, that it is a norm) is asserted by the definition.
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.