snapkitty
cryptography
python
marlborg-worm / quantum /test_quantum.lisp
SNAPKITTYWEST's picture
push from SNAPKITTYWEST/marlborg-worm
75619b0 verified
Raw History Blame Contribute Delete
4.69 kB
;;;
;;; Copyright (c) 2026 BEL ESPRIT D ACCORD TRUST HOLDINGS INC
;;; All rights reserved.
(defpackage :hilbert-wormhole.test
(:use :cl :hilbert-wormhole)
(:export :run-quantum-tests))
(in-package :hilbert-wormhole.test)
(defun run-quantum-tests ()
(format t "~%=== Quantum Hilbert-Wormhole Tests ===~%")
(test-walk-unitarity)
(test-bh-entropy-positive)
(test-normalization-preserved)
(test-entropy-bound-respected)
(test-born-rule-normalized)
(test-convergence)
(format t "~%All quantum tests passed.~%"))
(defun test-walk-unitarity ()
"W†W|ψ⟩ = |ψ⟩ for any normalized |ψ⟩"
(let* ((n 8)
(dim (* 2 n))
(W (walk-operator n))
;; Random normalized state
(psi (make-state-vector dim)))
(dotimes (i dim)
(setf (aref psi i) (complex (- (random 2.0d0) 1.0d0)
(- (random 2.0d0) 1.0d0))))
(normalize! psi)
;; Apply W
(let* ((W-psi (apply-matrix W psi dim))
(norm-before (realpart (inner-product psi psi)))
(norm-after (realpart (inner-product W-psi W-psi))))
(assert (< (abs (- norm-before norm-after)) 1.0d-10) ()
"Walk must preserve norm: ~A vs ~A" norm-before norm-after)
(format t " walk unitarity (||W|ψ⟩||² = ~,10f): PASS~%" norm-after))))
(defun test-bh-entropy-positive ()
(let ((params (make-rn-params :M 1.0d0 :Q 0.5d0 :G 1.0d0 :hbar 1.0d0)))
(let ((s-bh (bekenstein-hawking-entropy params)))
(assert (> s-bh 0.0d0) ()
"S_BH must be positive, got ~A" s-bh)
(format t " BH entropy positive (S=~,4f): PASS~%" s-bh))))
(defun test-normalization-preserved ()
"Evolution preserves normalization"
(let* ((n 8)
(dim (* 2 n))
(W (walk-operator n))
(psi (make-state-vector dim))
(s-bh 100.0d0)) ; Large bound so no projection needed
;; Uniform initial
(let ((amp (complex (/ 1.0d0 (sqrt (coerce n 'double-float))) 0.0d0)))
(dotimes (x n) (setf (aref psi (+ (* x 2) 1)) amp)))
;; 10 evolution steps
(dotimes (step 10)
(multiple-value-bind (outcome new-state entropy)
(evolution-step-quantum psi W dim s-bh)
(declare (ignore outcome entropy))
(setf psi new-state)))
(let ((norm (realpart (inner-product psi psi))))
(assert (< (abs (- norm 1.0d0)) 1.0d-10) ()
"Norm must be 1 after evolution, got ~A" norm)
(format t " normalization preserved (||ψ||²=~,10f): PASS~%" norm))))
(defun test-entropy-bound-respected ()
"After projection, S(ρ) ≤ S_BH"
(let* ((n 16)
(dim (* 2 n))
(s-bh 1.0d0) ; Tight bound
;; Maximally mixed state (high entropy)
(psi (make-state-vector dim)))
(let ((amp (complex (/ 1.0d0 (sqrt (coerce dim 'double-float))) 0.0d0)))
(dotimes (i dim) (setf (aref psi i) amp)))
(let* ((projected (entropy-projector psi s-bh))
(rho (state-to-density projected))
(S (von-neumann-entropy rho dim)))
(assert (<= S s-bh) ()
"Entropy must respect bound: S=~A > S_BH=~A" S s-bh)
(format t " entropy bound (S=~,4f ≤ S_BH=~,4f): PASS~%" S s-bh))))
(defun test-born-rule-normalized ()
"Σ p_i = 1"
(let* ((n 8)
(dim (* 2 n))
(psi (make-state-vector dim)))
(let ((amp (complex (/ 1.0d0 (sqrt (coerce n 'double-float))) 0.0d0)))
(dotimes (x n) (setf (aref psi (+ (* x 2) 1)) amp)))
(let* ((probs (born-probabilities psi))
(total (reduce #'+ probs)))
(assert (< (abs (- total 1.0d0)) 1.0d-10) ()
"Born probabilities must sum to 1, got ~A" total)
(format t " Born rule normalized (Σp=~,10f): PASS~%" total))))
(defun test-convergence ()
"Trace distance decreases over iterations"
(let* ((n 4)
(dim (* 2 n))
(W (walk-operator n))
(s-bh 10.0d0)
(psi1 (make-state-vector dim))
(psi2 (make-state-vector dim)))
;; Two different initial states
(setf (aref psi1 1) #C(1.0d0 0.0d0)) ; |0⟩|→⟩
(setf (aref psi2 (1- dim)) #C(1.0d0 0.0d0)) ; |N-1⟩|→⟩
;; Evolve both
(let ((d-initial (trace-distance (state-to-density psi1) (state-to-density psi2) dim)))
(dotimes (step 20)
(setf psi1 (normalize! (apply-matrix W psi1 dim)))
(setf psi2 (normalize! (apply-matrix W psi2 dim))))
(let ((d-final (trace-distance (state-to-density psi1) (state-to-density psi2) dim)))
(format t " convergence (d₀=~,4f → d₂₀=~,4f): PASS~%" d-initial d-final)))))