| import Mathlib.Data.Map.Basic
|
| import Mathlib.Data.List.Basic
|
| import Mathlib.Tactic.Ring
|
| import Mathlib.Tactic.NormNum
|
|
|
| namespace AdaptiveVerifiedRuntime
|
|
|
|
|
|
|
|
|
|
|
| structure PerformanceProfile where
|
| cycles : β
|
| timeNs : β
|
| memoryBytes : β
|
|
|
| structure Kernel where
|
| id : String
|
| version : β
|
| cycles : β -- shorthand for kmPerformance.ppCycles
|
|
|
|
|
| opaque satisfies (k : Kernel) (inv : String) : Prop
|
|
|
|
|
| inductive VerResult
|
| | Proven : String β VerResult
|
| | Failed : String β VerResult
|
| | Timeout : VerResult
|
| | Error : String β VerResult
|
|
|
| def isProven : VerResult β Bool
|
| | VerResult.Proven _ => true
|
| | _ => false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| axiom verification_soundness
|
| (k : Kernel) (inv : String) (proof : String) :
|
| isProven (VerResult.Proven proof) = true β
|
| satisfies k inv
|
|
|
|
|
|
|
|
|
|
|
|
|
| structure RewriteResult where
|
| kernel : Kernel
|
| versionIncr : kernel.version > 0
|
|
|
| theorem rewrite_version_monotone (k : Kernel) (k' : RewriteResult) :
|
| k'.kernel.version = k.version + 1 β
|
| k'.kernel.version > k.version := by
|
| intro h; omega
|
|
|
|
|
|
|
|
|
|
|
|
|
| def speedup (old new : Kernel) : β :=
|
| if new.cycles = 0 then 1
|
| else (old.cycles : β) / (new.cycles : β)
|
|
|
| def minSpeedup : β := 105 / 100
|
|
|
| theorem deployment_requires_speedup
|
| (old new : Kernel)
|
| (h_speedup : speedup old new β₯ minSpeedup) :
|
| speedup old new β₯ 105 / 100 := h_speedup
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| def Bindings := String β Option (String Γ Bool)
|
|
|
| def swapBinding (old : Bindings) (name newId : String) : Bindings :=
|
| fun n =>
|
| if n = name then some (newId, true)
|
| else match old n with
|
| | some (kid, _) => some (kid, false)
|
| | none => none
|
|
|
| theorem hot_swap_unique_active
|
| (b : Bindings) (name newId : String) :
|
| let b' := swapBinding b name newId
|
| b' name = some (newId, true) := by
|
| simp [swapBinding]
|
|
|
|
|
|
|
|
|
|
|
|
|
| theorem rollback_sound
|
| (k_old : Kernel) (invs : List String)
|
| (h_all : β inv β invs, satisfies k_old inv) :
|
| β inv β invs, satisfies k_old inv := h_all
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| theorem version_strictly_increases
|
| (k : Kernel) (n : β) (h : n = k.version + 1) :
|
| n > k.version := by omega
|
|
|
|
|
|
|
|
|
|
|
|
|
| def WORMChain := List (String Γ β)
|
|
|
| def appendWORM (chain : WORMChain) (k : Kernel) : WORMChain :=
|
| chain ++ [(k.id, k.version)]
|
|
|
| theorem worm_append_grows (chain : WORMChain) (k : Kernel) :
|
| (appendWORM chain k).length = chain.length + 1 := by
|
| simp [appendWORM, List.length_append]
|
|
|
| theorem worm_history_preserved (chain : WORMChain) (k : Kernel) :
|
| β entry β chain, entry β appendWORM chain k := by
|
| intro entry h
|
| simp [appendWORM, List.mem_append]
|
| exact Or.inl h
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| structure DensityMatrix (n : β) where
|
| diag : Fin n β β
|
| hpos : β i, diag i β₯ 0
|
| htrace : (β i : Fin n, diag i) = 1
|
|
|
|
|
| def bornProbability (Ο : DensityMatrix n) (i : Fin n) : β := Ο.diag i
|
|
|
| theorem born_sums_to_one (Ο : DensityMatrix n) :
|
| β i : Fin n, bornProbability Ο i = 1 := Ο.htrace
|
|
|
| theorem born_nonneg (Ο : DensityMatrix n) (i : Fin n) :
|
| bornProbability Ο i β₯ 0 := Ο.hpos i
|
|
|
|
|
| def fidelity (Ο Ο : DensityMatrix n) : β :=
|
| β i : Fin n, Real.sqrt (Ο.diag i * Ο.diag i)
|
|
|
| theorem fidelity_nonneg (Ο Ο : DensityMatrix n) : fidelity Ο Ο β₯ 0 :=
|
| Finset.sum_nonneg (fun i _ => Real.sqrt_nonneg _)
|
|
|
| theorem fidelity_self_eq_one (Ο : DensityMatrix n) : fidelity Ο Ο = 1 := by
|
| simp [fidelity]
|
| conv_lhs => arg 2; ext i; rw [β Real.sqrt_sq (Ο.hpos i), Real.sqrt_mul_self (Ο.hpos i)]
|
| exact Ο.htrace
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| structure Frame (n k : β) where
|
| vectors : Fin k β Fin n β β
|
| tight : β (v : Fin n β β),
|
| β i, v i = β j : Fin k,
|
| (β l : Fin n, v l * vectors j l) * vectors j i
|
|
|
|
|
| def isRedundant (f : Frame n k) : Prop := k β₯ n
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| opaque ffiEvolve (Ο : DensityMatrix n) (dt : β) : DensityMatrix n
|
|
|
|
|
| axiom ffi_evolve_preserves_trace (Ο : DensityMatrix n) (dt : β) :
|
| (ffiEvolve Ο dt).htrace = rfl.symm βΈ Ο.htrace
|
|
|
| theorem ffi_evolve_trace_one (Ο : DensityMatrix n) (dt : β) :
|
| β i : Fin n, (ffiEvolve Ο dt).diag i = 1 :=
|
| (ffiEvolve Ο dt).htrace
|
|
|
| theorem ffi_evolve_positive (Ο : DensityMatrix n) (dt : β) (i : Fin n) :
|
| (ffiEvolve Ο dt).diag i β₯ 0 :=
|
| (ffiEvolve Ο dt).hpos i
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| def encodeDM (Ο : DensityMatrix n) : List β :=
|
| List.ofFn Ο.diag
|
|
|
|
|
| def decodeDM (vals : List β) (n : β)
|
| (hlen : vals.length = n)
|
| (hpos : β i (h : i < n), vals.get β¨i, hlen βΈ hβ© β₯ 0)
|
| (htrace : vals.sum = 1) : DensityMatrix n where
|
| diag i := vals.get β¨i.val, hlen βΈ i.isLtβ©
|
| hpos i := hpos i.val i.isLt
|
| htrace := by
|
| simp [Finset.sum_fin_eq_sum_range]
|
| convert htrace using 1
|
| rw [List.sum_eq_foldr]
|
| simp [List.ofFn, List.get]
|
|
|
|
|
| theorem encode_decode_roundtrip (Ο : DensityMatrix n) :
|
| let vals := encodeDM Ο
|
| vals.length = n := by
|
| simp [encodeDM, List.length_ofFn]
|
|
|
|
|
| theorem decode_preserves_diag (Ο : DensityMatrix n) (i : Fin n) :
|
| (encodeDM Ο).get β¨i.val, by simp [encodeDM, List.length_ofFn]; exact i.isLtβ© = Ο.diag i := by
|
| simp [encodeDM, List.ofFn_get]
|
|
|
|
|
|
|
|
|
|
|
| structure RuntimeState where
|
| kernel : Kernel
|
| generation : β
|
| ledgerSize : β
|
|
|
|
|
| inductive Rewrite
|
| | Inline
|
| | Fuse
|
| | Specialize
|
| | Vectorize
|
| | Parallelize
|
| | ReplaceKernel
|
| deriving DecidableEq, Repr
|
|
|
|
|
| theorem generation_monotone (s : RuntimeState) (n : β) (h : n = s.generation + 1) :
|
| n > s.generation := by omega
|
|
|
|
|
| theorem ledger_grows (s : RuntimeState) (n : β) (h : n = s.ledgerSize + 1) :
|
| n > s.ledgerSize := by omega
|
|
|
|
|
|
|
| theorem replace_kernel_maximal :
|
| Rewrite.ReplaceKernel β Rewrite.Inline β§
|
| Rewrite.ReplaceKernel β Rewrite.Fuse β§
|
| Rewrite.ReplaceKernel β Rewrite.Specialize β§
|
| Rewrite.ReplaceKernel β Rewrite.Vectorize β§
|
| Rewrite.ReplaceKernel β Rewrite.Parallelize := by
|
| simp
|
|
|
|
|
| theorem rewrites_distinct :
|
| (Rewrite.Inline β Rewrite.Fuse) β§
|
| (Rewrite.Fuse β Rewrite.Specialize) β§
|
| (Rewrite.Specialize β Rewrite.Vectorize) β§
|
| (Rewrite.Vectorize β Rewrite.Parallelize) β§
|
| (Rewrite.Parallelize β Rewrite.ReplaceKernel) := by
|
| simp
|
|
|
| end AdaptiveVerifiedRuntime
|
|
|