Spaces:
Running
Running
| import Formalization.Core | |
| universe u v | |
| namespace BehavioralSemantics | |
| theorem pullBundle_order_reflecting | |
| {S Z : Type u} {n : Nat} {V : Type v} [LE V] | |
| (encoder : S → Z) | |
| (surjective : Function.Surjective encoder) | |
| {h k : Bundle Z n V} | |
| (pulled : BundleLE (pullBundle encoder h) (pullBundle encoder k)) : | |
| BundleLE h k := by | |
| classical | |
| intro zs | |
| let ss : Tuple S n := fun i => Classical.choose (surjective (zs i)) | |
| have mapped : pullTuple encoder ss = zs := by | |
| funext i | |
| exact Classical.choose_spec (surjective (zs i)) | |
| have pointwise := pulled ss | |
| change h (pullTuple encoder ss) ≤ k (pullTuple encoder ss) at pointwise | |
| rw [mapped] at pointwise | |
| exact pointwise | |
| theorem claim3_safe_verification | |
| {S Z : Type u} {n : Nat} {V : Type v} [LE V] | |
| (le_transitive : ∀ {a b c : V}, a ≤ b → b ≤ c → a ≤ c) | |
| (encoder : S → Z) | |
| (surjective : Function.Surjective encoder) | |
| (concreteClosure : Bundle S n V → Bundle S n V) | |
| (abstractClosure : Bundle Z n V → Bundle Z n V) | |
| (closureOplax : | |
| ∀ h, BundleLE | |
| (concreteClosure (pullBundle encoder h)) | |
| (pullBundle encoder (abstractClosure h))) | |
| (h : Bundle Z n V) | |
| (concretePostfixed : | |
| PostFixed concreteClosure (pullBundle encoder h)) : | |
| PostFixed abstractClosure h := by | |
| apply pullBundle_order_reflecting encoder surjective | |
| intro ss | |
| exact le_transitive (concretePostfixed ss) (closureOplax h ss) | |
| theorem claim3_safe_construction | |
| {S Z : Type u} {n : Nat} {V : Type v} [LE V] | |
| (le_transitive : ∀ {a b c : V}, a ≤ b → b ≤ c → a ≤ c) | |
| (pushforward : Bundle S n V → Bundle Z n V) | |
| (concreteClosure : Bundle S n V → Bundle S n V) | |
| (abstractClosure : Bundle Z n V → Bundle Z n V) | |
| (pushforwardMonotone : | |
| ∀ {h k}, BundleLE h k → | |
| BundleLE (pushforward h) (pushforward k)) | |
| (closureLax : | |
| ∀ h, BundleLE | |
| (pushforward (concreteClosure h)) | |
| (abstractClosure (pushforward h))) | |
| (h : Bundle S n V) | |
| (concretePostfixed : PostFixed concreteClosure h) : | |
| PostFixed abstractClosure (pushforward h) := by | |
| intro zs | |
| exact le_transitive | |
| (pushforwardMonotone concretePostfixed zs) | |
| (closureLax h zs) | |
| end BehavioralSemantics | |