Documentation

LeanPool.HighContrastHomogenization.Geometry.BlockBridge

High-contrast homogenization: Geometry.BlockBridge #

Imported from the Apache-2.0 HighContrastHomogenization development at commit 7a13dbcd8d6609264a713373f5c69ceeac870472.

The bridge between the two block dialects #

A doubled block matrix is carried in two equivalent ways. The structural carrier BlockMat d records the four d × d corners separately and comes with its own multiplication, transpose, inverse, dilation, reflection, quadratic-form order BlockMatLoewnerLE, and positivity predicate BlockPosDef. The flattened carrier FullBlockMat d = Matrix (BlockCoord d) (BlockCoord d) ℝ is a genuine matrix ring over the doubled index type, so it carries mathlib's multiplication, inverse, Loewner order, PosDef, and square root; the canonical block geometry of e.scale.selection.canonical.metric is developed there.

This file shows that the flattening map toFullBlockMat identifies the two: it is a ring isomorphism onto FullBlockMat d sending each structural operation to its matrix counterpart, and — on symmetric data — it identifies BlockMatLoewnerLE with the Loewner order and BlockPosDef with PosDef.

Symmetry is needed for one direction only. A Loewner inequality between flattened matrices always implies the corresponding inequality of quadratic forms; the converse needs the difference to be Hermitian, which for real data is exactly the symmetry of the two blocks. This asymmetry is recorded in the two one-directional lemmas, and blockMatLoewnerLE_iff_le assumes symmetry of both arguments.

The final section transports the primal-adjoint involution H^♯ = R H^{-1} R, formed with the swap matrix R of s.scale.selection. The structural blockSharp and the flattened fullBlockSharp correspond under the bridge with no hypotheses at all, so its rules — involution, order reversal, homogeneity of degree minus one — become available in the structural dialect by transport.

Structure transport #

toFullBlockMat is the map that assembles the four corners into one matrix over the doubled index type; it is mathlib's Matrix.fromBlocks.

The flattening map is injective; ofFullBlockMat is its inverse.

Flattening turns the structural product into the matrix product.

Flattening turns the structural block diagonal into Matrix.fromBlocks.

Flattening turns the structural identity into the matrix identity.

Flattening turns the structural transpose into the matrix transpose.

Over the reals the structural transpose is the conjugate transpose of the flattened matrix.

Flattening turns the structural inverse into the matrix inverse. The structural inverse is defined by flattening, inverting and unflattening, so this is the round trip.

Flattening turns the structural dilation into the scalar action.

Flattening turns the structural reflection matrix R into fullBlockRefl.

Flattening turns the structural shear G_h into fullBlockShear.

Flattening turns the structural corner swap into conjugation by R.

Symmetry and the quadratic form #

The structural entry function is the entry function of the flattened matrix.

Structural symmetry is symmetry of the flattened matrix.

Structural symmetry makes the flattened matrix Hermitian.

The structural quadratic form is the flattened quadratic form.

Flattening a doubled vector detects vanishing.

Order transport #

Only the passage from the quadratic-form order to the Loewner order needs symmetry, and it needs it on both arguments: the Loewner order is defined by positive semidefiniteness of the difference, and a real matrix is positive semidefinite only if it is symmetric.

The Loewner order implies the quadratic-form order. No symmetry hypothesis is needed in this direction.

The difference of two symmetric blocks is positive semidefinite as soon as the quadratic forms compare. This is the intermediate through which the order transport runs.

The quadratic-form order implies the Loewner order, for symmetric blocks.

The two positivity predicates agree on symmetric blocks.

Positive definiteness of a symmetric block transports to the flattened matrix.

The sharp involution #

The structural sharp is the corner swap of the structural inverse; flattening turns the corner swap into conjugation by R and the structural inverse into the matrix inverse, so it agrees exactly with fullBlockSharp.

The sharp map is an involution, in the structural dialect.

The sharp map reverses the order, in the structural dialect.

The sharp map is homogeneous of degree minus one, in the structural dialect.