{-# LANGUAGE DataKinds #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway.Gov () where import Cardano.Ledger.Conway (ConwayEra) import Cardano.Ledger.Conway.Core (EraPParams (..)) import Cardano.Ledger.Conway.Governance import Cardano.Ledger.Conway.Rules import Lens.Micro ((&), (.~), (^.)) import qualified Lib as Agda import Test.Cardano.Ledger.Conformance import Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway.Base () import Test.Cardano.Ledger.Constrained.Conway import Test.Cardano.Ledger.Conway.Arbitrary () import Test.Cardano.Ledger.Imp.Common instance ( NFData (SpecRep (ConwayGovPredFailure ConwayEra)) , IsConwayUniv fn ) => ExecSpecRule fn "GOV" ConwayEra where type ExecContext fn "GOV" ConwayEra = EnactState ConwayEra environmentSpec :: HasCallStack => ExecContext fn "GOV" ConwayEra -> Specification fn (ExecEnvironment fn "GOV" ConwayEra) environmentSpec ExecContext fn "GOV" ConwayEra _ = forall (fn :: [*] -> * -> *). IsConwayUniv fn => Specification fn (GovEnv ConwayEra) govEnvSpec stateSpec :: HasCallStack => ExecContext fn "GOV" ConwayEra -> ExecEnvironment fn "GOV" ConwayEra -> Specification fn (ExecState fn "GOV" ConwayEra) stateSpec ExecContext fn "GOV" ConwayEra _ = forall (fn :: [*] -> * -> *). IsConwayUniv fn => GovEnv ConwayEra -> Specification fn (Proposals ConwayEra) govProposalsSpec signalSpec :: HasCallStack => ExecContext fn "GOV" ConwayEra -> ExecEnvironment fn "GOV" ConwayEra -> ExecState fn "GOV" ConwayEra -> Specification fn (ExecSignal fn "GOV" ConwayEra) signalSpec ExecContext fn "GOV" ConwayEra _ = forall (fn :: [*] -> * -> *). IsConwayUniv fn => GovEnv ConwayEra -> Proposals ConwayEra -> Specification fn (GovSignal ConwayEra) govProceduresSpec runAgdaRule :: HasCallStack => SpecRep (ExecEnvironment fn "GOV" ConwayEra) -> SpecRep (ExecState fn "GOV" ConwayEra) -> SpecRep (ExecSignal fn "GOV" ConwayEra) -> Either OpaqueErrorString (SpecRep (ExecState fn "GOV" ConwayEra)) runAgdaRule SpecRep (ExecEnvironment fn "GOV" ConwayEra) env SpecRep (ExecState fn "GOV" ConwayEra) st SpecRep (ExecSignal fn "GOV" ConwayEra) sig = forall a. ComputationResult Text a -> Either OpaqueErrorString a unComputationResult forall a b. (a -> b) -> a -> b $ GovEnv -> GovState -> [Either GovVote GovProposal] -> T_ComputationResult_46 Text GovState Agda.govStep SpecRep (ExecEnvironment fn "GOV" ConwayEra) env SpecRep (ExecState fn "GOV" ConwayEra) st SpecRep (ExecSignal fn "GOV" ConwayEra) sig translateInputs :: HasCallStack => ExecEnvironment fn "GOV" ConwayEra -> ExecState fn "GOV" ConwayEra -> ExecSignal fn "GOV" ConwayEra -> ExecContext fn "GOV" ConwayEra -> ImpTestM ConwayEra (SpecRep (ExecEnvironment fn "GOV" ConwayEra), SpecRep (ExecState fn "GOV" ConwayEra), SpecRep (ExecSignal fn "GOV" ConwayEra)) translateInputs env :: ExecEnvironment fn "GOV" ConwayEra env@GovEnv {PParams ConwayEra gePParams :: forall era. GovEnv era -> PParams era gePParams :: PParams ConwayEra gePParams} ExecState fn "GOV" ConwayEra st ExecSignal fn "GOV" ConwayEra sig ExecContext fn "GOV" ConwayEra enactState = do GovEnv agdaEnv <- forall a (m :: * -> *) b. (HasCallStack, Show a, MonadIO m) => Either a b -> m b expectRight forall a b. (a -> b) -> a -> b $ forall ctx a. ctx -> SpecTransM ctx a -> Either Text a runSpecTransM EnactState ConwayEra ctx forall a b. (a -> b) -> a -> b $ forall ctx a. SpecTranslate ctx a => a -> SpecTransM ctx (SpecRep a) toSpecRep ExecEnvironment fn "GOV" ConwayEra env GovState agdaSt <- forall a (m :: * -> *) b. (HasCallStack, Show a, MonadIO m) => Either a b -> m b expectRight forall a b. (a -> b) -> a -> b $ forall ctx a. ctx -> SpecTransM ctx a -> Either Text a runSpecTransM EnactState ConwayEra ctx forall a b. (a -> b) -> a -> b $ forall ctx a. SpecTranslate ctx a => a -> SpecTransM ctx (SpecRep a) toSpecRep ExecState fn "GOV" ConwayEra st [Either GovVote GovProposal] agdaSig <- forall a (m :: * -> *) b. (HasCallStack, Show a, MonadIO m) => Either a b -> m b expectRight forall a b. (a -> b) -> a -> b $ forall ctx a. ctx -> SpecTransM ctx a -> Either Text a runSpecTransM EnactState ConwayEra ctx forall a b. (a -> b) -> a -> b $ forall ctx a. SpecTranslate ctx a => a -> SpecTransM ctx (SpecRep a) toSpecRep ExecSignal fn "GOV" ConwayEra sig forall (f :: * -> *) a. Applicative f => a -> f a pure (GovEnv agdaEnv, GovState agdaSt, [Either GovVote GovProposal] agdaSig) where ctx :: EnactState ConwayEra ctx = ExecContext fn "GOV" ConwayEra enactState forall a b. a -> (a -> b) -> b & forall era. Lens' (EnactState era) (GovRelation StrictMaybe era) ensPrevGovActionIdsL forall s t a b. ASetter s t a b -> b -> s -> t .~ forall era. GovRelation PRoot era -> GovRelation StrictMaybe era toPrevGovActionIds (ExecState fn "GOV" ConwayEra st forall s a. s -> Getting a s a -> a ^. forall era. Lens' (Proposals era) (GovRelation PRoot era) pRootsL) forall a b. a -> (a -> b) -> b & forall era. EraPParams era => Lens' (EnactState era) ProtVer ensProtVerL forall s t a b. ASetter s t a b -> b -> s -> t .~ (PParams ConwayEra gePParams forall s a. s -> Getting a s a -> a ^. forall era. EraPParams era => Lens' (PParams era) ProtVer ppProtocolVersionL)