{- Effects and Coeffects in Call-By-Push-Value -} -- This is an Agda formalization of Section 2 of "Effects and Coeffects in -- Call-By-Push-Value", available at https://github.com/plclub/cbpv-in-agda -- This code has been tested with Agda version 2.6.2.2 and standard library -- version 1.7.1. module Everything where {- Section 2.1 -} import Effects -- Preordered monoid along with properties of preordered monoids -- (named 'effects' as that is how they are used) import CBPV.Effects.SyntacticTyping -- Type-and-effect system for CBPV {- Section 2.2 -} import CBPV.Effects.Semantics -- Environment-based big-step operational -- semantics for CBPV instrumented with effects import CBPV.Effects.Determinism -- Operational semantics are deterministic {- Section 2.3 -} import CBPV.Effects.SemanticTyping -- Logical relation + semantic typing rules import CBPV.Effects.EffectSoundness -- Type-and-effect system accurately bounds -- effects at runtime {- Section 2.4 -} import CBV.Effects.Translation -- Standard CBV translation (extended with -- effects) is type-and-effect preserving import CBN.Monadic.Translation -- Standard CBN translation (extended with graded -- monads) is type-and-effect preserving import CBV.Monadic.Translation -- Standard CBV translation (now extended with -- graded monads) is type-and-effect preserving {- Section 2: Extra -} import CBPV.Effects.Adequacy -- Evaluation in environment-based big-step -- operational semantics implies multi-step -- reduction in substitution-based small-step -- semantics (with agreeing effects) {- Extra -} -- These are the same results as presented in section 2, though without effects. -- They are adapted from "Call-by-push-value in Coq: operational, equational, -- and denotational theory" (CPP 2019) import CBPV.Base.SyntacticTyping import CBPV.Base.Semantics import CBPV.Base.Determinism import CBPV.Base.SemanticTyping import CBPV.Base.TypeSoundness import CBN.Base.Translation import CBV.Base.Translation import CBPV.Base.Adequacy