Documentation

Cedar.Thm.SymCC.WellTyped

This file contains some results about wellTypedPolicies and wellTypedPolicy preserving the validity or results of some definitions (StronglyWellFormedFor*, evaluate, isAuthorized, etc.).

If a policy p is well-typed via wellTypedPolicy, then there is a well-typed TypedExpr corresponding to p's condition.

@[irreducible]
theorem Cedar.Thm.substitute_action_preserves_valid_refs {Γ : Validation.TypeEnv} {request : Spec.Request} {entities : Spec.Entities} {expr : Spec.Expr} (hinst : InstanceOfWellFormedEnvironment request entities Γ) :
entities.ValidRefsFor expr entities.ValidRefsFor (Validation.substituteAction request.action expr)

wellTypedPolicy preserves Entities.ValidRefsFor.

theorem Cedar.Thm.wellTypedPolicy_preserves_valid_refs {Γ : Validation.TypeEnv} {request : Spec.Request} {entities : Spec.Entities} {p p' : Spec.Policy} (hinst : InstanceOfWellFormedEnvironment request entities Γ) (hwt : SymCC.wellTypedPolicy p Γ = Except.ok p') (hswf : entities.ValidRefsFor p.toExpr) :
entities.ValidRefsFor p'.toExpr

wellTypedPolicy preserves Entities.ValidRefsFor.

theorem Cedar.Thm.wellTypedPolicy_preserves_evaluation {Γ : Validation.TypeEnv} {request : Spec.Request} {entities : Spec.Entities} {p p' : Spec.Policy} (hinst : InstanceOfWellFormedEnvironment request entities Γ) (hwt : SymCC.wellTypedPolicy p Γ = Except.ok p') :
Spec.evaluate p.toExpr request entities = Spec.evaluate p'.toExpr request entities

wellTypedPolicy preserves the result of evaluate.

theorem Cedar.Thm.wellTypedPolicies_preserves_satisfiedWithEffect {Γ : Validation.TypeEnv} {entities : Spec.Entities} {request : Spec.Request} {p p' : Spec.Policy} (effect : Spec.Effect) (hinst : InstanceOfWellFormedEnvironment request entities Γ) (hwt : SymCC.wellTypedPolicy p Γ = Except.ok p') :
Spec.satisfiedWithEffect effect p request entities = Spec.satisfiedWithEffect effect p' request entities
theorem Cedar.Thm.wellTypedPolicies_preserves_satisfiedPolicies {Γ : Validation.TypeEnv} {entities : Spec.Entities} {request : Spec.Request} {ps ps' : Spec.Policies} (effect : Spec.Effect) (hinst : InstanceOfWellFormedEnvironment request entities Γ) (hwt : SymCC.wellTypedPolicies ps Γ = Except.ok ps') :
Spec.satisfiedPolicies effect ps request entities = Spec.satisfiedPolicies effect ps' request entities
theorem Cedar.Thm.wellTypedPolicies_preserves_errored {Γ : Validation.TypeEnv} {entities : Spec.Entities} {request : Spec.Request} {p p' : Spec.Policy} (hinst : InstanceOfWellFormedEnvironment request entities Γ) (hwt : SymCC.wellTypedPolicy p Γ = Except.ok p') :
Spec.errored p request entities = Spec.errored p' request entities
theorem Cedar.Thm.wellTypedPolicies_preserves_errorPolicies {Γ : Validation.TypeEnv} {entities : Spec.Entities} {request : Spec.Request} {ps ps' : Spec.Policies} (hinst : InstanceOfWellFormedEnvironment request entities Γ) (hwt : SymCC.wellTypedPolicies ps Γ = Except.ok ps') :
Spec.errorPolicies ps request entities = Spec.errorPolicies ps' request entities
theorem Cedar.Thm.wellTypedPolicies_preserves_isAuthorized {Γ : Validation.TypeEnv} {entities : Spec.Entities} {request : Spec.Request} {ps ps' : Spec.Policies} (hinst : InstanceOfWellFormedEnvironment request entities Γ) (hwt : SymCC.wellTypedPolicies ps Γ = Except.ok ps') :
Spec.isAuthorized request entities ps = Spec.isAuthorized request entities ps'

wellTypedPolicies preserves the result of isAuthorized.