Proofs that the optimized functions in SymCCOpt.Enforcer are equivalent to the unoptimized ones in SymCC.Enforcer.
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.