kovefbSXbQ / verification /Formalization /SafeTransfer.lean
DineshAI's picture
Add Lean 4 kernel proofs for all six claims
6bbcc6f verified
Raw
History Blame Contribute Delete
2.26 kB
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