|
| 1 | +{-# OPTIONS --safe --without-K #-} |
| 2 | + |
| 3 | +module EchoIntegration where |
| 4 | + |
| 5 | +open import EchoChoreo |
| 6 | +open import EchoEpistemic |
| 7 | +open import EchoGraded |
| 8 | +open import EchoCharacteristic using (echo-true; echo-false; echo-true≢echo-false) |
| 9 | +open import EchoResidue using (no-section-collapse-to-residue) |
| 10 | + |
| 11 | +open import Data.Bool.Base using (Bool) |
| 12 | +open import Data.Product.Base using (Σ; _×_; _,_; proj₁) |
| 13 | +open import Relation.Binary.PropositionalEquality using (_≡_; _≢_; refl) |
| 14 | +open import Relation.Nullary using (¬_) |
| 15 | + |
| 16 | +-- Choreographic observation-preserving steps preserve any epistemic predicate |
| 17 | +-- that is stable under the hidden-state update. |
| 18 | +knowledge-preserved-under-choreo : |
| 19 | + ∀ {y : Bool} {P : Global → Set} → |
| 20 | + (∀ g → P g → P (scramble-server g)) → |
| 21 | + Knows Client P y → |
| 22 | + ∀ e → P (proj₁ (client-stability e)) |
| 23 | +knowledge-preserved-under-choreo = knowledge-along-client-stability |
| 24 | + |
| 25 | +-- Controlled degradation in graded echoes: |
| 26 | +-- distinct keep-grade witnesses become identified at residue grade. |
| 27 | +distinct-at-keep : echo-true ≢ echo-false |
| 28 | +distinct-at-keep = echo-true≢echo-false |
| 29 | + |
| 30 | +merged-at-residue : |
| 31 | + degrade keep≤residue echo-true ≡ degrade keep≤residue echo-false |
| 32 | +merged-at-residue = refl |
| 33 | + |
| 34 | +no-recovery-after-residue-degrade : |
| 35 | + ¬ (Σ (GEcho residue → GEcho keep) |
| 36 | + (λ raise → ∀ e → raise (degrade keep≤residue e) ≡ e)) |
| 37 | +no-recovery-after-residue-degrade = no-section-collapse-to-residue |
| 38 | + |
| 39 | +-- Integration witness: choreography can preserve knowledge while graded |
| 40 | +-- degradation still loses discriminating power in a controlled way. |
| 41 | +knowledge-and-controlled-degradation : |
| 42 | + ∀ {y : Bool} {P : Global → Set} → |
| 43 | + (∀ g → P g → P (scramble-server g)) → |
| 44 | + Knows Client P y → |
| 45 | + (∀ e → P (proj₁ (client-stability e))) |
| 46 | + × (degrade keep≤residue echo-true ≡ degrade keep≤residue echo-false) |
| 47 | +knowledge-and-controlled-degradation inv k = |
| 48 | + knowledge-preserved-under-choreo inv k , merged-at-residue |
0 commit comments