{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-orphans #-} module Test.Cardano.Ledger.Conway.Imp (spec) where import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext (ContextError)) import Cardano.Ledger.Alonzo.Rules ( AlonzoUtxoPredFailure, AlonzoUtxosPredFailure, AlonzoUtxowPredFailure, ) import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure, BabbageUtxowPredFailure) import Cardano.Ledger.Babbage.TxInfo (BabbageContextError) import Cardano.Ledger.BaseTypes (Inject) import Cardano.Ledger.Conway (ConwayEra) import Cardano.Ledger.Conway.Core import Cardano.Ledger.Conway.Rules ( ConwayBbodyPredFailure, ConwayCertsPredFailure, ConwayDelegPredFailure, ConwayEpochEvent, ConwayGovCertPredFailure, ConwayGovPredFailure, ConwayHardForkEvent, ConwayLedgerPredFailure, ConwayNewEpochEvent, ConwayUtxoPredFailure, ConwayUtxowPredFailure, ) import Cardano.Ledger.Conway.TxInfo (ConwayContextError) import Cardano.Ledger.Shelley.API.Mempool (ApplyTx (..)) import Cardano.Ledger.Shelley.Rules ( ShelleyPoolPredFailure, ShelleyUtxoPredFailure, ShelleyUtxowPredFailure, ) import Control.State.Transition.Extended import Data.Typeable (Typeable) import qualified Test.Cardano.Ledger.Alonzo.Imp as AlonzoImp import qualified Test.Cardano.Ledger.Babbage.Imp as BabbageImp import qualified Test.Cardano.Ledger.Conway.Imp.BbodySpec as Bbody import qualified Test.Cardano.Ledger.Conway.Imp.CertsSpec as Certs import qualified Test.Cardano.Ledger.Conway.Imp.DelegSpec as Deleg import qualified Test.Cardano.Ledger.Conway.Imp.EnactSpec as Enact import qualified Test.Cardano.Ledger.Conway.Imp.EpochSpec as Epoch import qualified Test.Cardano.Ledger.Conway.Imp.GovCertSpec as GovCert import qualified Test.Cardano.Ledger.Conway.Imp.GovSpec as Gov import qualified Test.Cardano.Ledger.Conway.Imp.HardForkSpec as HardFork import qualified Test.Cardano.Ledger.Conway.Imp.LedgerSpec as Ledger import qualified Test.Cardano.Ledger.Conway.Imp.RatifySpec as Ratify import qualified Test.Cardano.Ledger.Conway.Imp.UtxoSpec as Utxo import qualified Test.Cardano.Ledger.Conway.Imp.UtxosSpec as Utxos import qualified Test.Cardano.Ledger.Conway.Imp.UtxowSpec as Utxow import Test.Cardano.Ledger.Conway.ImpTest import Test.Cardano.Ledger.Imp.Common import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp spec :: forall era. ( ConwayEraImp era , EraSpecificSpec era , Inject (BabbageContextError era) (ContextError era) , Inject (ConwayContextError era) (ContextError era) , InjectRuleFailure "LEDGER" ConwayGovPredFailure era , InjectRuleFailure "LEDGER" ConwayCertsPredFailure era , InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era , InjectRuleFailure "LEDGER" BabbageUtxowPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era , InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era , InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era , InjectRuleFailure "LEDGER" ConwayDelegPredFailure era , InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era , InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era , InjectRuleFailure "LEDGER" ConwayUtxoPredFailure era , InjectRuleFailure "LEDGER" ConwayUtxowPredFailure era , InjectRuleFailure "BBODY" ConwayBbodyPredFailure era , InjectRuleEvent "TICK" ConwayEpochEvent era , Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era , Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era , Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era , ApplyTx era , NFData (Event (EraRule "ENACT" era)) , ToExpr (Event (EraRule "ENACT" era)) , Eq (Event (EraRule "ENACT" era)) , Typeable (Event (EraRule "ENACT" era)) , ToExpr (Event (EraRule "BBODY" era)) ) => Spec spec :: forall era. (ConwayEraImp era, EraSpecificSpec era, Inject (BabbageContextError era) (ContextError era), Inject (ConwayContextError era) (ContextError era), InjectRuleFailure "LEDGER" ConwayGovPredFailure era, InjectRuleFailure "LEDGER" ConwayCertsPredFailure era, InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era, InjectRuleFailure "LEDGER" BabbageUtxowPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era, InjectRuleFailure "LEDGER" ConwayDelegPredFailure era, InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era, InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era, InjectRuleFailure "LEDGER" ConwayUtxoPredFailure era, InjectRuleFailure "LEDGER" ConwayUtxowPredFailure era, InjectRuleFailure "BBODY" ConwayBbodyPredFailure era, InjectRuleEvent "TICK" ConwayEpochEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, ApplyTx era, NFData (Event (EraRule "ENACT" era)), ToExpr (Event (EraRule "ENACT" era)), Eq (Event (EraRule "ENACT" era)), Typeable (Event (EraRule "ENACT" era)), ToExpr (Event (EraRule "BBODY" era))) => Spec spec = do forall era. (AlonzoEraImp era, EraSpecificSpec era, BabbageEraTxBody era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era, InjectRuleFailure "LEDGER" BabbageUtxowPredFailure era, Inject (BabbageContextError era) (ContextError era)) => Spec BabbageImp.spec @era forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) -> Spec withEachEraVersion @era (SpecWith (ImpInit (LedgerSpec era)) -> Spec) -> SpecWith (ImpInit (LedgerSpec era)) -> Spec forall a b. (a -> b) -> a -> b $ forall era. (ConwayEraImp era, Inject (BabbageContextError era) (ContextError era), Inject (ConwayContextError era) (ContextError era), InjectRuleFailure "LEDGER" ConwayGovPredFailure era, InjectRuleFailure "LEDGER" ConwayCertsPredFailure era, InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" ConwayDelegPredFailure era, InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era, InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era, InjectRuleFailure "LEDGER" ConwayUtxoPredFailure era, InjectRuleFailure "LEDGER" ConwayUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era, InjectRuleFailure "BBODY" ConwayBbodyPredFailure era, InjectRuleEvent "TICK" ConwayEpochEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, ApplyTx era, NFData (Event (EraRule "ENACT" era)), ToExpr (Event (EraRule "ENACT" era)), Eq (Event (EraRule "ENACT" era)), Typeable (Event (EraRule "ENACT" era)), ToExpr (Event (EraRule "BBODY" era))) => SpecWith (ImpInit (LedgerSpec era)) conwayEraGenericSpec @era conwayEraGenericSpec :: forall era. ( ConwayEraImp era , Inject (BabbageContextError era) (ContextError era) , Inject (ConwayContextError era) (ContextError era) , InjectRuleFailure "LEDGER" ConwayGovPredFailure era , InjectRuleFailure "LEDGER" ConwayCertsPredFailure era , InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era , InjectRuleFailure "LEDGER" ConwayDelegPredFailure era , InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era , InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era , InjectRuleFailure "LEDGER" ConwayUtxoPredFailure era , InjectRuleFailure "LEDGER" ConwayUtxowPredFailure era , InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era , InjectRuleFailure "BBODY" ConwayBbodyPredFailure era , InjectRuleEvent "TICK" ConwayEpochEvent era , Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era , Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era , Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era , ApplyTx era , NFData (Event (EraRule "ENACT" era)) , ToExpr (Event (EraRule "ENACT" era)) , Eq (Event (EraRule "ENACT" era)) , Typeable (Event (EraRule "ENACT" era)) , ToExpr (Event (EraRule "BBODY" era)) ) => SpecWith (ImpInit (LedgerSpec era)) conwayEraGenericSpec :: forall era. (ConwayEraImp era, Inject (BabbageContextError era) (ContextError era), Inject (ConwayContextError era) (ContextError era), InjectRuleFailure "LEDGER" ConwayGovPredFailure era, InjectRuleFailure "LEDGER" ConwayCertsPredFailure era, InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" ConwayDelegPredFailure era, InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era, InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era, InjectRuleFailure "LEDGER" ConwayUtxoPredFailure era, InjectRuleFailure "LEDGER" ConwayUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era, InjectRuleFailure "BBODY" ConwayBbodyPredFailure era, InjectRuleEvent "TICK" ConwayEpochEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, ApplyTx era, NFData (Event (EraRule "ENACT" era)), ToExpr (Event (EraRule "ENACT" era)), Eq (Event (EraRule "ENACT" era)), Typeable (Event (EraRule "ENACT" era)), ToExpr (Event (EraRule "BBODY" era))) => SpecWith (ImpInit (LedgerSpec era)) conwayEraGenericSpec = do String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "BBODY" SpecWith (ImpInit (LedgerSpec era)) forall era. (AlonzoEraImp era, BabbageEraTxBody era, InjectRuleFailure "BBODY" ConwayBbodyPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, ToExpr (Event (EraRule "BBODY" era)), ConwayEraPParams era) => SpecWith (ImpInit (LedgerSpec era)) Bbody.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "CERTS" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" ConwayCertsPredFailure era, InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Certs.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DELEG" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" ConwayDelegPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Deleg.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "ENACT" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, NFData (Event (EraRule "ENACT" era)), ToExpr (Event (EraRule "ENACT" era)), Eq (Event (EraRule "ENACT" era)), Typeable (Event (EraRule "ENACT" era)), Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, InjectRuleEvent "TICK" ConwayEpochEvent era, InjectRuleFailure "LEDGER" ConwayGovPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Enact.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "EPOCH" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleEvent "TICK" ConwayEpochEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era) => SpecWith (ImpInit (LedgerSpec era)) Epoch.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "GOV" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" ConwayGovPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Gov.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "GOVCERT" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era, InjectRuleFailure "LEDGER" ConwayGovPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) GovCert.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "LEDGER" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era, InjectRuleFailure "LEDGER" ConwayUtxoPredFailure era, InjectRuleFailure "LEDGER" ConwayGovPredFailure era, ApplyTx era) => SpecWith (ImpInit (LedgerSpec era)) Ledger.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "HARDFORK" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) HardFork.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "RATIFY" SpecWith (ImpInit (LedgerSpec era)) forall era. (HasCallStack, ConwayEraImp era) => SpecWith (ImpInit (LedgerSpec era)) Ratify.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "UTXO" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, Inject (ConwayContextError era) (ContextError era)) => SpecWith (ImpInit (LedgerSpec era)) Utxo.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "UTXOS" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, Inject (BabbageContextError era) (ContextError era), Inject (ConwayContextError era) (ContextError era), InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxos.spec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "UTXOW" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, InjectRuleFailure "LEDGER" ConwayUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxow.spec conwayEraSpecificSpec :: ( ConwayEraImp era , ShelleyEraTxCert era ) => SpecWith (ImpInit (LedgerSpec era)) conwayEraSpecificSpec :: forall era. (ConwayEraImp era, ShelleyEraTxCert era) => SpecWith (ImpInit (LedgerSpec era)) conwayEraSpecificSpec = do String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Conway era specific Imp spec" (SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era))) -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a b. (a -> b) -> a -> b $ String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Certificates without deposits" (SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era))) -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a b. (a -> b) -> a -> b $ do String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DELEG" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, ShelleyEraTxCert era) => SpecWith (ImpInit (LedgerSpec era)) Deleg.conwayEraSpecificSpec String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "UTXO" SpecWith (ImpInit (LedgerSpec era)) forall era. (ConwayEraImp era, ShelleyEraTxCert era) => SpecWith (ImpInit (LedgerSpec era)) Utxo.conwayEraSpecificSpec instance EraSpecificSpec ConwayEra where eraSpecificSpec :: SpecWith (ImpInit (LedgerSpec ConwayEra)) eraSpecificSpec = SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (ShelleyEraImp era, ShelleyEraTxCert era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) ShelleyImp.shelleyEraSpecificSpec SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall a b. SpecM (ImpInit (LedgerSpec ConwayEra)) a -> SpecM (ImpInit (LedgerSpec ConwayEra)) b -> SpecM (ImpInit (LedgerSpec ConwayEra)) b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (AlonzoEraImp era, ShelleyEraTxCert era, InjectRuleFailure "LEDGER" ShelleyDelegPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) AlonzoImp.alonzoEraSpecificSpec SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall a b. SpecM (ImpInit (LedgerSpec ConwayEra)) a -> SpecM (ImpInit (LedgerSpec ConwayEra)) b -> SpecM (ImpInit (LedgerSpec ConwayEra)) b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (AlonzoEraImp era, ShelleyEraTxCert era, BabbageEraTxBody era) => SpecWith (ImpInit (LedgerSpec era)) BabbageImp.babbageEraSpecificSpec SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall a b. SpecM (ImpInit (LedgerSpec ConwayEra)) a -> SpecM (ImpInit (LedgerSpec ConwayEra)) b -> SpecM (ImpInit (LedgerSpec ConwayEra)) b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (ConwayEraImp era, ShelleyEraTxCert era) => SpecWith (ImpInit (LedgerSpec era)) conwayEraSpecificSpec