/-- The summarizer agent may read the codebase. -/ theorem summarizer_may_read_code : evaluate agentPolicy ⟨"summarizer", "read", "/code"⟩ = .permit := ⊢ evaluate agentPolicy { user := "summarizer", action := "read", resource := "/code" } = Decision.permit All goals completed! 🐙 /-- ...but is explicitly forbidden from writing to it. -/ theorem summarizer_cannot_write_code : evaluate agentPolicy ⟨"summarizer", "write", "/code"⟩ = .deny := ⊢ evaluate agentPolicy { user := "summarizer", action := "write", resource := "/code" } = Decision.deny All goals completed! 🐙 /-- The deployer agent may ship to production. -/ theorem deployer_may_deploy : evaluate agentPolicy ⟨"deployer", "deploy", "/prod"⟩ = .permit := ⊢ evaluate agentPolicy { user := "deployer", action := "deploy", resource := "/prod" } = Decision.permit All goals completed! 🐙 /-- An unprovisioned agent matches no rule: the policy has *no opinion* on it. -/ theorem rogue_agent_unspecified : evaluate agentPolicy ⟨"rogue", "read", "/prod"⟩ = .notApplicable := ⊢ evaluate agentPolicy { user := "rogue", action := "read", resource := "/prod" } = Decision.notApplicable All goals completed! 🐙 /-- The auditor is matched *only* by an `abstain` rule: the policy speaks about it and still deliberately says nothing — a state a Bool could never capture. -/ theorem auditor_explicitly_undecided : evaluate agentPolicy ⟨"auditor", "read", "/logs"⟩ = .notApplicable := ⊢ evaluate agentPolicy { user := "auditor", action := "read", resource := "/logs" } = Decision.notApplicable All goals completed! 🐙