mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-31 03:05:21 +00:00
143 lines
5 KiB
Text
143 lines
5 KiB
Text
import Semantics.FixedPoint
|
|
import Semantics.CompressionMechanics
|
|
|
|
namespace Semantics.DefectMechanics
|
|
|
|
open Semantics
|
|
open Semantics.CompressionMechanics
|
|
open Semantics.AtomicResolution
|
|
open Semantics.LandauerCompression
|
|
|
|
/--
|
|
Conservative defect-style witness over the mechanical compression layer.
|
|
This tracks only bounded distortion and vacancy-like cardinality. It does not
|
|
identify a defect species or infer atomistic geometry.
|
|
-/
|
|
structure DefectWitness where
|
|
mechanical : MechanicalCompressionWitness
|
|
vacancyCount : Nat
|
|
distortionScore : Q16_16
|
|
defectBudget : Q16_16
|
|
deriving Repr, Inhabited
|
|
|
|
/--
|
|
The vacancy-like count does not exceed the supported occupancy bound.
|
|
-/
|
|
def vacancyCovered (w : DefectWitness) : Bool :=
|
|
decide (w.vacancyCount ≤ w.mechanical.atomic.occupancyBound)
|
|
|
|
/--
|
|
The distortion score remains within the declared defect budget.
|
|
-/
|
|
def distortionBounded (w : DefectWitness) : Bool :=
|
|
Q16_16.le w.distortionScore w.defectBudget
|
|
|
|
/--
|
|
The declared defect budget stays within the available actuation budget.
|
|
-/
|
|
def defectBudgeted (w : DefectWitness) : Bool :=
|
|
Q16_16.le w.defectBudget w.mechanical.actuationBudget
|
|
|
|
/--
|
|
Defect admissibility requires the mechanical witness plus bounded vacancy-like
|
|
count and bounded distortion.
|
|
-/
|
|
def defectAdmissible (w : DefectWitness) : Bool :=
|
|
mechanicallyAdmissible w.mechanical &&
|
|
vacancyCovered w &&
|
|
distortionBounded w &&
|
|
defectBudgeted w
|
|
|
|
/--
|
|
Canonical constructor over an existing mechanical witness.
|
|
-/
|
|
def witnessOfMechanical
|
|
(mechanical : MechanicalCompressionWitness)
|
|
(vacancyCount : Nat)
|
|
(distortionScore defectBudget : Q16_16) :
|
|
DefectWitness :=
|
|
{ mechanical := mechanical
|
|
, vacancyCount := vacancyCount
|
|
, distortionScore := distortionScore
|
|
, defectBudget := defectBudget }
|
|
|
|
/--
|
|
If all constituent bounds hold, the defect witness is admissible.
|
|
-/
|
|
theorem defectAdmissibleOfBounds
|
|
(w : DefectWitness)
|
|
(hMechanical : mechanicallyAdmissible w.mechanical = true)
|
|
(hVacancy : vacancyCovered w = true)
|
|
(hDistortion : distortionBounded w = true)
|
|
(hBudget : defectBudgeted w = true) :
|
|
defectAdmissible w = true := by
|
|
simp [defectAdmissible, hMechanical, hVacancy, hDistortion, hBudget]
|
|
|
|
/--
|
|
The vacancy-covered predicate exposes the underlying occupancy bound.
|
|
-/
|
|
theorem vacancyCountLeOccupancyBound
|
|
(w : DefectWitness)
|
|
(hVacancy : vacancyCovered w = true) :
|
|
w.vacancyCount ≤ w.mechanical.atomic.occupancyBound := by
|
|
simpa [vacancyCovered] using hVacancy
|
|
|
|
/--
|
|
Vacancy-like cardinality also contracts through compression under the same
|
|
alignment, contraction, contact, and site assumptions already required by the
|
|
mechanical witness.
|
|
-/
|
|
theorem compressionContractsVacancyCount
|
|
(w : DefectWitness)
|
|
(hAlign : summaryAligned w.mechanical = true)
|
|
(hContract : w.mechanical.compression.postSummary.shape.basisDim ≤
|
|
w.mechanical.compression.preSummary.shape.basisDim)
|
|
(hSites : siteCovered w.mechanical.atomic = true)
|
|
(hOcc : occupancyCovered w.mechanical.atomic = true)
|
|
(hVacancy : vacancyCovered w = true) :
|
|
w.vacancyCount + erasedDirections w.mechanical.compression ≤
|
|
w.mechanical.compression.preSummary.shape.basisDim := by
|
|
have hVacancyOcc :
|
|
w.vacancyCount ≤ w.mechanical.atomic.occupancyBound := by
|
|
exact vacancyCountLeOccupancyBound w hVacancy
|
|
have hOccSites :
|
|
w.mechanical.atomic.occupancyBound ≤ w.mechanical.atomic.resolvedSites := by
|
|
simpa [occupancyCovered] using hOcc
|
|
have hVacancySites :
|
|
w.vacancyCount ≤ w.mechanical.atomic.resolvedSites := by
|
|
exact Nat.le_trans hVacancyOcc hOccSites
|
|
have hSummary :
|
|
w.mechanical.atomic.environment.summary = w.mechanical.compression.postSummary := by
|
|
simpa [summaryAligned] using hAlign
|
|
have hResolvedContract :
|
|
w.mechanical.atomic.resolvedSites + erasedDirections w.mechanical.compression ≤
|
|
w.mechanical.compression.preSummary.shape.basisDim := by
|
|
exact compressionContractsAtomicResolution
|
|
w.mechanical.compression w.mechanical.atomic hSummary hContract hSites
|
|
calc
|
|
w.vacancyCount + erasedDirections w.mechanical.compression
|
|
≤ w.mechanical.atomic.resolvedSites + erasedDirections w.mechanical.compression := by
|
|
exact Nat.add_le_add_right hVacancySites _
|
|
_ ≤ w.mechanical.compression.preSummary.shape.basisDim := hResolvedContract
|
|
|
|
/--
|
|
Distortion bounded by the defect budget and defect budget bounded by actuation
|
|
imply distortion bounded by the actuation budget.
|
|
-/
|
|
theorem distortionLeActuationBudget
|
|
(w : DefectWitness)
|
|
(hDistortion : distortionBounded w = true)
|
|
(hBudget : defectBudgeted w = true) :
|
|
Q16_16.le w.distortionScore w.mechanical.actuationBudget = true := by
|
|
simp [distortionBounded, defectBudgeted, Q16_16.le] at hDistortion hBudget ⊢
|
|
exact Int.le_trans hDistortion hBudget
|
|
|
|
def sampleDefectWitness : DefectWitness :=
|
|
witnessOfMechanical sampleMechanicalCompressionWitness 1 Q16_16.one Q16_16.one
|
|
|
|
#eval vacancyCovered sampleDefectWitness
|
|
#eval distortionBounded sampleDefectWitness
|
|
#eval defectBudgeted sampleDefectWitness
|
|
#eval defectAdmissible sampleDefectWitness
|
|
|
|
end Semantics.DefectMechanics
|