Documentation

Cedar.Thm.SymCC.Opt.Enforcer

Proofs that the optimized functions in SymCCOpt.Enforcer are equivalent to the unoptimized ones in SymCC.Enforcer.

theorem Cedar.Thm.enforce_eq_map_union {xs : List Spec.Expr} {εnv : SymCC.SymEnv} :
SymCC.enforce xs εnv = Data.Set.map (fun (x : SymCC.Term) => SymCC.acyclicity x εnv.entities) (SymCC.footprints xs εnv) ∪ Data.Set.map (fun (x : SymCC.Term × SymCC.Term) => match x with | (t₁, t₂) => SymCC.transitivity t₁ t₂ εnv.entities) ((SymCC.footprints xs εnv).product (SymCC.footprints xs εnv))

Rephrases the unoptimized enforce as the union of the acyclicity and transitivity constraints using the Set.map/Set.product/∪ operations that the optimized enforce*CompiledPolicy* functions are defined with.

This theorem covers the "happy path" -- showing that if optimized policy compilation succeeds, then enforce and enforceCompiledPolicy are equivalent.

This theorem covers the "happy path" -- showing that if optimized policy compilation succeeds, then enforce and enforcePairCompiledPolicy are equivalent.

This theorem covers the "happy path" -- showing that if optimized policy compilation succeeds, then enforce and enforcePairCompiledPolicySet are equivalent.