MI-04: universal positive-block norm implies essentially Hermitian
Recorded by the registry's curators from GitHub; the authors did not submit it here.
George Stepaniants
Complete Lean verification of the full original MI-04 necessity implication. All21 exports passed actual canonical Linux default-kernel, Comparator, axiom and control checks at the immutable proof revision.
Claims
Files and sources
- Paper
- OpenProblemsInNLA @ e375a6f, MI-04/lean/ ↗
- Lean bundle
- submissions/bundles/openproblemsinnla-mi-04-lean.tar.gz
- Toolchain
- leanprover/lean4:v4.33.1
- Posted on GitHub
- 17 September 2026
Verification PASSED
- Attempt
- 1
- Toolchain
- leanprover/lean4:v4.33.1
- Auditor
- v1 · modal
- lake build
- succeeded
- Kernel replay
- succeeded
- Duration
- 0:03:38.531306
Declarations audited
| Declaration | Kind | Axioms | Unused hypotheses | Canonical |
|---|---|---|---|---|
| NLA.MI04.universal_positive_block_essentially_hermitian | theorem · Prop | propext, Classical.choice, Quot.sound | none | matched |
| RegistryProblems.Problem_OP_00099 | definition | propext, Classical.choice, Quot.sound | none | no canonical statement |
NLA.MI04.universal_positive_block_essentially_hermitian
∀ {n : Nat}, instLENat.le 1 n → ∀ (X : NLA.MI04.Square n), (∀ (A B : NLA.MI04.Square n), Matrix.IsHermitian A → Matrix.IsHermitian B → (Matrix.fromBlocks A X (Matrix.conjTranspose X) B).PosSemidef → Real.instLE.le (NLA.MI04.spectralNorm (Matrix.fromBlocks A X (Matrix.conjTranspose X) B)) (NLA.MI04.spectralNorm (instHAdd.hAdd A B))) → Exists fun K => And (Matrix.IsHermitian K) (Exists fun α => Exists fun β => Eq X (instHAdd.hAdd (instHSMul.hSMul α K) (instHSMul.hSMul β 1)))
RegistryProblems.Problem_OP_00099
Prop
Build log
this warning:
[apply] _hn
Note: This linter can be disabled with `set_option linter.unusedVariables false`
warning: NLA/MI04/Geometry.lean:78:10: This simp argument is unused:
Complex.star_def
Hint: Omit it from the simp argument list.
[apply] simp [Complex.mul_im]
Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
warning: NLA/MI04/Geometry.lean:100:44: This simp argument is unused:
map_smul
Hint: Omit it from the simp argument list.
[apply] simp [matrixCoefficient, u, v, map_add, diagonal_coordinateUnit, inner_add_left, inner_add_right,
inner_sub_left, inner_smul_left, inner_smul_right, inner_coordinateUnit_left, coordinateUnit_apply,
Complex.star_def, hij, Ne.symm hij, hik, Ne.symm hik, hjk, Ne.symm hjk]
Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
warning: NLA/MI04/Geometry.lean:102:55: This simp argument is unused:
Complex.star_def
Hint: Omit it from the simp argument list.
[apply] simp [matrixCoefficient, u, v, map_add, map_smul, diagonal_coordinateUnit, inner_add_left, inner_add_right,
inner_sub_left, inner_smul_left, inner_smul_right, inner_coordinateUnit_left, coordinateUnit_apply, hij,
Ne.symm hij, hik, Ne.symm hik, hjk, Ne.symm hjk]
Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
warning: NLA/MI04/Geometry.lean:91:64: this tactic is never executed
Note: This linter can be disabled with `set_option linter.unreachableTactic false`
warning: NLA/MI04/Geometry.lean:78:44: Used `tac1 <;> tac2` where `(tac1; tac2)` would suffice
Note: This linter can be disabled with `set_option linter.unnecessarySeqFocus false`
warning: NLA/MI04/Geometry.lean:97:60: Used `tac1 <;> tac2` where `(tac1; tac2)` would suffice
Note: This linter can be disabled with `set_option linter.unnecessarySeqFocus false`
warning: NLA/MI04/Geometry.lean:103:60: Used `tac1 <;> tac2` where `(tac1; tac2)` would suffice
Note: This linter can be disabled with `set_option linter.unnecessarySeqFocus false`
warning: NLA/MI04/Geometry.lean:91:64: Unused tactic linter: `ring` does nothing
Note: This linter can be disabled with `set_option linter.unusedTactic false`
info: NLA/MI04/Geometry.lean:108:0: 'NLA.MI04.diagonal_pair_collinearity' depends on axioms: [propext, Classical.choice, Quot.sound]
⚠ [3756/3760] Built NLA.MI04.Diagonalization (12s)
warning: NLA/MI04/Diagonalization.lean:38:4: Try this:
letI̵
The goal is a proposition, so `let` is preferred over `letI`.
The difference between `let` and `letI` is that `letI` inlines the value.
But this is not relevant for proofs because of proof irrelevance.
Note: This linter can be disabled with `set_option linter.style.haveILetI false`
warning: NLA/MI04/Diagonalization.lean:47:4: Try this:
letI̵
The goal is a proposition, so `let` is preferred over `letI`.
The difference between `let` and `letI` is that `letI` inlines the value.
But this is not relevant for proofs because of proof irrelevance.
Note: This linter can be disabled with `set_option linter.style.haveILetI false`
warning: NLA/MI04/Diagonalization.lean:84:17: `ContinuousLinearMap.add_apply` has been deprecated: Use `add_apply` instead
Note: The updated constant is in a different namespace. Dot notation may need to be changed (e.g., from `x.add_apply` to `add_apply x`).
warning: NLA/MI04/Diagonalization.lean:84:48: `ContinuousLinearMap.smul_apply` has been deprecated: Use `smul_apply` instead
Note: The updated constant is in a different namespace. Dot notation may need to be changed (e.g., from `x.smul_apply` to `smul_apply x`).
warning: NLA/MI04/Diagonalization.lean:101:4: Try this:
letI̵
The goal is a proposition, so `let` is preferred over `letI`.
The difference between `let` and `letI` is that `letI` inlines the value.
But this is not relevant for proofs because of proof irrelevance.
Note: This linter can be disabled with `set_option linter.style.haveILetI false`
warning: NLA/MI04/Diagonalization.lean:95:48: Variable name `hn` is not explicitly referenced.
Hint: The binding can be removed (if unused) or named `_` (if used implicitly). Alternatively, prefix the name with `_` to silence this warning:
[apply] _hn
Note: This linter can be disabled with `set_option linter.unusedVariables false`
info: NLA/MI04/Diagonalization.lean:126:0: 'NLA.MI04.normal_unitary_diagonalization' depends on axioms: [propext, Classical.choice, Quot.sound]
⚠ [3757/3760] Built NLA.MI04.Conclusion (4.8s)
warning: NLA/MI04/Conclusion.lean:51:26: This simp argument is unused:
Matrix.diagonal_apply
Hint: Omit it from the simp argument list.
[apply] simp [realDiagonal, Matrix.one_apply, hij]
Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
warning: NLA/MI04/Conclusion.lean:51:49: This simp argument is unused:
Matrix.one_apply
Hint: Omit it from the simp argument list.
[apply] simp [realDiagonal, Matrix.diagonal_apply, hij]
Note: This linter can be disabled with `set_option linter.unusedSimpArgs false`
info: NLA/MI04/Conclusion.lean:72:0: 'NLA.MI04.pair_symmetry_essentially_hermitian' depends on axioms: [propext, Classical.choice, Quot.sound]
info: NLA/MI04/Conclusion.lean:74:0: 'NLA.MI04.universal_positive_block_essentially_hermitian' depends on axioms: [propext, Classical.choice, Quot.sound]
ℹ [3758/3760] Built Solution (4.3s)
info: Solution.lean:17:0: 'NLA.MI04.topValue_maximum' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:19:0: 'NLA.MI04.positive_quadratic_iff' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:21:0: 'NLA.MI04.positive_norm_eq_top' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:23:0: 'NLA.MI04.shifted_topValue' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:25:0: 'NLA.MI04.scalar_order_iff_top' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:27:0: 'NLA.MI04.unitary_topValue' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:29:0: 'NLA.MI04.simple_peak_sandwich' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:31:0: 'NLA.MI04.simple_peak_second_order' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:33:0: 'NLA.MI04.pencil_isHermitian' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:35:0: 'NLA.MI04.universal_to_extreme_symmetry' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:37:0: 'NLA.MI04.extreme_symmetry_scaled_unitary' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:39:0: 'NLA.MI04.weighted_magnitude_identity' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:41:0: 'NLA.MI04.offDiagonal_magnitude_symmetry' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:43:0: 'NLA.MI04.orthonormal_pair_symmetry' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:45:0: 'NLA.MI04.pair_symmetry_normal' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:47:0: 'NLA.MI04.normal_unitary_diagonalization' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:49:0: 'NLA.MI04.pair_symmetry_unitary' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:51:0: 'NLA.MI04.diagonal_pair_collinearity' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:53:0: 'NLA.MI04.collinear_values_affine' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:55:0: 'NLA.MI04.pair_symmetry_essentially_hermitian' depends on axioms: [propext, Classical.choice, Quot.sound]
info: Solution.lean:57:0: 'NLA.MI04.universal_positive_block_essentially_hermitian' depends on axioms: [propext, Classical.choice, Quot.sound]
✔ [3759/3760] Built RegistryRecord (4.6s)
Build completed successfully (3760 jobs).