diff --git a/.hlint.yaml b/.hlint.yaml index 3b768acc183..05378b3c7eb 100644 --- a/.hlint.yaml +++ b/.hlint.yaml @@ -33,3 +33,5 @@ - ignore: {name: Use guards, within: [PlutusTx.Ord.Class]} # parens around lambda params in TH quotations are required by the parser - ignore: {name: Redundant bracket, within: [PlutusTx.IsData.TH]} + +- ignore: {name: Use const, within: [Spec.Data.Value.Budget]} diff --git a/plutus-tx-plugin/plutus-tx-plugin.cabal b/plutus-tx-plugin/plutus-tx-plugin.cabal index 8b00accf204..3c476964d46 100644 --- a/plutus-tx-plugin/plutus-tx-plugin.cabal +++ b/plutus-tx-plugin/plutus-tx-plugin.cabal @@ -269,6 +269,7 @@ test-suite plutus-ledger-api-plugin-test Spec.Data.MintValue.V3 Spec.Data.ScriptContext Spec.Data.Value + Spec.Data.Value.Budget Spec.Envelope Spec.MintValue.V3 Spec.ReturnUnit.V1 diff --git a/plutus-tx-plugin/test-ledger-api/Spec.hs b/plutus-tx-plugin/test-ledger-api/Spec.hs index 3c7aebe63a2..f4b1fba389f 100644 --- a/plutus-tx-plugin/test-ledger-api/Spec.hs +++ b/plutus-tx-plugin/test-ledger-api/Spec.hs @@ -5,6 +5,7 @@ import Spec.Data.Budget qualified import Spec.Data.MintValue.V3 qualified import Spec.Data.ScriptContext qualified import Spec.Data.Value qualified +import Spec.Data.Value.Budget qualified import Spec.Envelope qualified import Spec.MintValue.V3 qualified import Spec.ReturnUnit.V1 qualified @@ -27,6 +28,7 @@ tests = , Spec.Data.Budget.tests , Spec.Data.ScriptContext.tests , Spec.Data.Value.test_EqValue + , Spec.Data.Value.Budget.tests , Spec.Data.MintValue.V3.tests , Spec.Envelope.tests , Spec.ReturnUnit.V1.tests diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget.hs b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget.hs new file mode 100644 index 00000000000..e669c64f9d7 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget.hs @@ -0,0 +1,819 @@ +{-# LANGUAGE BlockArguments #-} +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE NoImplicitPrelude #-} + +{-| +Budget comparison between the builtin Value ops ('unsafeDataAsValue', +'lookupCoin', 'unionValue') and the pure Plutus Tx Data-backed Value API +('valueOf', 'unionWith') across a scaling series of Value sizes: + +* S1 — ada only (1 token). +* S3 — ada + 2 single-token policies (3 tokens total). +* S8 — ada + 7 single-token policies (8 tokens total); tuned so the builtin + vs non-builtin CPU ratio at an ada lookup is near 1:1 — the crossover. +* S100 — ada + 10 policies with 10 tokens each (~100 tokens). + +Currency symbols are 28 bytes and token names are 32 bytes, matching the +sizes that appear on-chain. + +Every bundle starts from a 'BuiltinData' input — the same representation a +validator receives from the ledger — so the two paths are exercised on +identical lifted inputs and the only variation is how each unwraps the +'BuiltinData' before operating on it. + +See issue IntersectMBO\/plutus-private#2177. -} +module Spec.Data.Value.Budget where + +import PlutusTx.Prelude + +import PlutusLedgerApi.Test.V1.Data.Value (listsToValue) +import PlutusLedgerApi.V1.Data.Value qualified as DValue +import PlutusTx.Builtins qualified as B +import PlutusTx.Builtins.Internal qualified as BI +import PlutusTx.Code (CompiledCode, unsafeApplyCode) +import PlutusTx.IsData qualified as Tx +import PlutusTx.Lift (liftCodeDef) +import PlutusTx.TH (compile) +import PlutusTx.Test (goldenBundle) +import Test.Tasty (TestTree) +import Test.Tasty.Extras (runTestNested, testNestedGhc) + +tests :: TestTree +tests = + runTestNested ["test-ledger-api", "Spec", "Data", "Value", "Budget"] + . pure + . testNestedGhc + $ [ -- S1: ada-only. Hit on ada, plus a miss. + goldenBundle + "lookup_S1_ada_builtin" + lookupAdaBuiltin + (lookupAdaBuiltin `unsafeApplyCode` valueS1) + , goldenBundle + "lookup_S1_ada_nonbuiltin" + lookupAdaNonBuiltin + (lookupAdaNonBuiltin `unsafeApplyCode` valueS1) + , goldenBundle + "lookup_S1_miss_builtin" + lookupMissBuiltin + (lookupMissBuiltin `unsafeApplyCode` valueS1) + , goldenBundle + "lookup_S1_miss_nonbuiltin" + lookupMissNonBuiltin + (lookupMissNonBuiltin `unsafeApplyCode` valueS1) + , goldenBundle + "lookup_S1_ada_handrolled" + lookupAdaHandrolled + (lookupAdaHandrolled `unsafeApplyCode` valueS1) + , goldenBundle + "lookup_S1_miss_handrolled" + lookupMissHandrolled + (lookupMissHandrolled `unsafeApplyCode` valueS1) + , -- S3: ada + two single-token policies. + goldenBundle + "lookup_S3_ada_builtin" + lookupAdaBuiltin + (lookupAdaBuiltin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_ada_nonbuiltin" + lookupAdaNonBuiltin + (lookupAdaNonBuiltin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_middle_builtin" + lookupCs01Tn01Builtin + (lookupCs01Tn01Builtin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_middle_nonbuiltin" + lookupCs01Tn01NonBuiltin + (lookupCs01Tn01NonBuiltin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_last_builtin" + lookupCs02Tn02Builtin + (lookupCs02Tn02Builtin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_last_nonbuiltin" + lookupCs02Tn02NonBuiltin + (lookupCs02Tn02NonBuiltin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_miss_builtin" + lookupMissBuiltin + (lookupMissBuiltin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_miss_nonbuiltin" + lookupMissNonBuiltin + (lookupMissNonBuiltin `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_ada_handrolled" + lookupAdaHandrolled + (lookupAdaHandrolled `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_middle_handrolled" + lookupCs01Tn01Handrolled + (lookupCs01Tn01Handrolled `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_last_handrolled" + lookupCs02Tn02Handrolled + (lookupCs02Tn02Handrolled `unsafeApplyCode` valueS3) + , goldenBundle + "lookup_S3_miss_handrolled" + lookupMissHandrolled + (lookupMissHandrolled `unsafeApplyCode` valueS3) + , -- S8: ada + 7 single-token policies. Tuned so the builtin/non-builtin + -- CPU ratio at the "ada hit" position lands near 1:1 — this is the + -- crossover scenario, where the `unsafeDataAsValue` traversal cost has + -- grown to match the short-circuited `valueOf` cost for an ada lookup. + goldenBundle + "lookup_S8_ada_builtin" + lookupAdaBuiltin + (lookupAdaBuiltin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_ada_nonbuiltin" + lookupAdaNonBuiltin + (lookupAdaNonBuiltin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_middle_builtin" + lookupCs04Tn04Builtin + (lookupCs04Tn04Builtin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_middle_nonbuiltin" + lookupCs04Tn04NonBuiltin + (lookupCs04Tn04NonBuiltin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_last_builtin" + lookupCs07Tn07Builtin + (lookupCs07Tn07Builtin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_last_nonbuiltin" + lookupCs07Tn07NonBuiltin + (lookupCs07Tn07NonBuiltin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_miss_builtin" + lookupMissBuiltin + (lookupMissBuiltin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_miss_nonbuiltin" + lookupMissNonBuiltin + (lookupMissNonBuiltin `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_ada_handrolled" + lookupAdaHandrolled + (lookupAdaHandrolled `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_middle_handrolled" + lookupCs04Tn04Handrolled + (lookupCs04Tn04Handrolled `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_last_handrolled" + lookupCs07Tn07Handrolled + (lookupCs07Tn07Handrolled `unsafeApplyCode` valueS8) + , goldenBundle + "lookup_S8_miss_handrolled" + lookupMissHandrolled + (lookupMissHandrolled `unsafeApplyCode` valueS8) + , -- S100: ada + 10 policies × 10 tokens each. + goldenBundle + "lookup_S100_ada_builtin" + lookupAdaBuiltin + (lookupAdaBuiltin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_ada_nonbuiltin" + lookupAdaNonBuiltin + (lookupAdaNonBuiltin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_middle_builtin" + lookupCs05Tn05Builtin + (lookupCs05Tn05Builtin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_middle_nonbuiltin" + lookupCs05Tn05NonBuiltin + (lookupCs05Tn05NonBuiltin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_last_builtin" + lookupCs10Tn10Builtin + (lookupCs10Tn10Builtin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_last_nonbuiltin" + lookupCs10Tn10NonBuiltin + (lookupCs10Tn10NonBuiltin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_miss_builtin" + lookupMissBuiltin + (lookupMissBuiltin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_miss_nonbuiltin" + lookupMissNonBuiltin + (lookupMissNonBuiltin `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_ada_handrolled" + lookupAdaHandrolled + (lookupAdaHandrolled `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_middle_handrolled" + lookupCs05Tn05Handrolled + (lookupCs05Tn05Handrolled `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_last_handrolled" + lookupCs10Tn10Handrolled + (lookupCs10Tn10Handrolled `unsafeApplyCode` valueS100) + , goldenBundle + "lookup_S100_miss_handrolled" + lookupMissHandrolled + (lookupMissHandrolled `unsafeApplyCode` valueS100) + , -- Union-and-lookup: combine two copies of each shape and inspect + -- ada in the result. Conservation-of-value pattern. + goldenBundle + "union_S1_builtin" + unionAdaBuiltin + (unionAdaBuiltin `unsafeApplyCode` valueS1 `unsafeApplyCode` valueS1) + , goldenBundle + "union_S1_nonbuiltin" + unionAdaNonBuiltin + (unionAdaNonBuiltin `unsafeApplyCode` valueS1 `unsafeApplyCode` valueS1) + , goldenBundle + "union_S3_builtin" + unionAdaBuiltin + (unionAdaBuiltin `unsafeApplyCode` valueS3 `unsafeApplyCode` valueS3) + , goldenBundle + "union_S3_nonbuiltin" + unionAdaNonBuiltin + (unionAdaNonBuiltin `unsafeApplyCode` valueS3 `unsafeApplyCode` valueS3) + , goldenBundle + "union_S8_builtin" + unionAdaBuiltin + (unionAdaBuiltin `unsafeApplyCode` valueS8 `unsafeApplyCode` valueS8) + , goldenBundle + "union_S8_nonbuiltin" + unionAdaNonBuiltin + (unionAdaNonBuiltin `unsafeApplyCode` valueS8 `unsafeApplyCode` valueS8) + , goldenBundle + "union_S100_builtin" + unionAdaBuiltin + (unionAdaBuiltin `unsafeApplyCode` valueS100 `unsafeApplyCode` valueS100) + , goldenBundle + "union_S100_nonbuiltin" + unionAdaNonBuiltin + (unionAdaNonBuiltin `unsafeApplyCode` valueS100 `unsafeApplyCode` valueS100) + , goldenBundle + "union_S1_handrolled" + unionAdaHandrolled + (unionAdaHandrolled `unsafeApplyCode` valueS1 `unsafeApplyCode` valueS1) + , goldenBundle + "union_S3_handrolled" + unionAdaHandrolled + (unionAdaHandrolled `unsafeApplyCode` valueS3 `unsafeApplyCode` valueS3) + , goldenBundle + "union_S8_handrolled" + unionAdaHandrolled + (unionAdaHandrolled `unsafeApplyCode` valueS8 `unsafeApplyCode` valueS8) + , goldenBundle + "union_S100_handrolled" + unionAdaHandrolled + (unionAdaHandrolled `unsafeApplyCode` valueS100 `unsafeApplyCode` valueS100) + , -- Standalone `unsafeDataAsValue` per shape. Isolates the conversion + -- tax from downstream ops. + goldenBundle + "unValueData_S1" + unValueDataOnly + (unValueDataOnly `unsafeApplyCode` valueS1) + , goldenBundle + "unValueData_S3" + unValueDataOnly + (unValueDataOnly `unsafeApplyCode` valueS3) + , goldenBundle + "unValueData_S8" + unValueDataOnly + (unValueDataOnly `unsafeApplyCode` valueS8) + , goldenBundle + "unValueData_S100" + unValueDataOnly + (unValueDataOnly `unsafeApplyCode` valueS100) + ] + +-- -------------------------------------------------------------------------- +-- Raw 28-byte currency-symbol bytes. +-- -------------------------------------------------------------------------- + +bsPolicyMiss :: BuiltinByteString +bsPolicyMiss = "policy_Miss_________________" +{-# INLINEABLE bsPolicyMiss #-} + +bsPolicy01 :: BuiltinByteString +bsPolicy01 = "policy_01___________________" +{-# INLINEABLE bsPolicy01 #-} + +bsPolicy02 :: BuiltinByteString +bsPolicy02 = "policy_02___________________" +{-# INLINEABLE bsPolicy02 #-} + +bsPolicy03 :: BuiltinByteString +bsPolicy03 = "policy_03___________________" +{-# INLINEABLE bsPolicy03 #-} + +bsPolicy04 :: BuiltinByteString +bsPolicy04 = "policy_04___________________" +{-# INLINEABLE bsPolicy04 #-} + +bsPolicy05 :: BuiltinByteString +bsPolicy05 = "policy_05___________________" +{-# INLINEABLE bsPolicy05 #-} + +bsPolicy06 :: BuiltinByteString +bsPolicy06 = "policy_06___________________" +{-# INLINEABLE bsPolicy06 #-} + +bsPolicy07 :: BuiltinByteString +bsPolicy07 = "policy_07___________________" +{-# INLINEABLE bsPolicy07 #-} + +bsPolicy08 :: BuiltinByteString +bsPolicy08 = "policy_08___________________" +{-# INLINEABLE bsPolicy08 #-} + +bsPolicy09 :: BuiltinByteString +bsPolicy09 = "policy_09___________________" +{-# INLINEABLE bsPolicy09 #-} + +bsPolicy10 :: BuiltinByteString +bsPolicy10 = "policy_10___________________" +{-# INLINEABLE bsPolicy10 #-} + +-- -------------------------------------------------------------------------- +-- Raw 32-byte token-name bytes. +-- -------------------------------------------------------------------------- + +bsTokMiss :: BuiltinByteString +bsTokMiss = "token_Miss______________________" +{-# INLINEABLE bsTokMiss #-} + +bsTok01 :: BuiltinByteString +bsTok01 = "token_01________________________" +{-# INLINEABLE bsTok01 #-} + +bsTok02 :: BuiltinByteString +bsTok02 = "token_02________________________" +{-# INLINEABLE bsTok02 #-} + +bsTok03 :: BuiltinByteString +bsTok03 = "token_03________________________" +{-# INLINEABLE bsTok03 #-} + +bsTok04 :: BuiltinByteString +bsTok04 = "token_04________________________" +{-# INLINEABLE bsTok04 #-} + +bsTok05 :: BuiltinByteString +bsTok05 = "token_05________________________" +{-# INLINEABLE bsTok05 #-} + +bsTok06 :: BuiltinByteString +bsTok06 = "token_06________________________" +{-# INLINEABLE bsTok06 #-} + +bsTok07 :: BuiltinByteString +bsTok07 = "token_07________________________" +{-# INLINEABLE bsTok07 #-} + +bsTok08 :: BuiltinByteString +bsTok08 = "token_08________________________" +{-# INLINEABLE bsTok08 #-} + +bsTok09 :: BuiltinByteString +bsTok09 = "token_09________________________" +{-# INLINEABLE bsTok09 #-} + +bsTok10 :: BuiltinByteString +bsTok10 = "token_10________________________" +{-# INLINEABLE bsTok10 #-} + +-- -------------------------------------------------------------------------- +-- Typed 'CurrencySymbol' wrappers. +-- -------------------------------------------------------------------------- + +csPolicyMiss :: DValue.CurrencySymbol +csPolicyMiss = DValue.CurrencySymbol bsPolicyMiss +{-# INLINEABLE csPolicyMiss #-} + +cs01 :: DValue.CurrencySymbol +cs01 = DValue.CurrencySymbol bsPolicy01 +{-# INLINEABLE cs01 #-} + +cs02 :: DValue.CurrencySymbol +cs02 = DValue.CurrencySymbol bsPolicy02 +{-# INLINEABLE cs02 #-} + +cs03 :: DValue.CurrencySymbol +cs03 = DValue.CurrencySymbol bsPolicy03 +{-# INLINEABLE cs03 #-} + +cs04 :: DValue.CurrencySymbol +cs04 = DValue.CurrencySymbol bsPolicy04 +{-# INLINEABLE cs04 #-} + +cs05 :: DValue.CurrencySymbol +cs05 = DValue.CurrencySymbol bsPolicy05 +{-# INLINEABLE cs05 #-} + +cs06 :: DValue.CurrencySymbol +cs06 = DValue.CurrencySymbol bsPolicy06 +{-# INLINEABLE cs06 #-} + +cs07 :: DValue.CurrencySymbol +cs07 = DValue.CurrencySymbol bsPolicy07 +{-# INLINEABLE cs07 #-} + +cs08 :: DValue.CurrencySymbol +cs08 = DValue.CurrencySymbol bsPolicy08 +{-# INLINEABLE cs08 #-} + +cs09 :: DValue.CurrencySymbol +cs09 = DValue.CurrencySymbol bsPolicy09 +{-# INLINEABLE cs09 #-} + +cs10 :: DValue.CurrencySymbol +cs10 = DValue.CurrencySymbol bsPolicy10 +{-# INLINEABLE cs10 #-} + +-- -------------------------------------------------------------------------- +-- Typed 'TokenName' wrappers. +-- -------------------------------------------------------------------------- + +tnMiss :: DValue.TokenName +tnMiss = DValue.TokenName bsTokMiss +{-# INLINEABLE tnMiss #-} + +tn01 :: DValue.TokenName +tn01 = DValue.TokenName bsTok01 +{-# INLINEABLE tn01 #-} + +tn02 :: DValue.TokenName +tn02 = DValue.TokenName bsTok02 +{-# INLINEABLE tn02 #-} + +tn03 :: DValue.TokenName +tn03 = DValue.TokenName bsTok03 +{-# INLINEABLE tn03 #-} + +tn04 :: DValue.TokenName +tn04 = DValue.TokenName bsTok04 +{-# INLINEABLE tn04 #-} + +tn05 :: DValue.TokenName +tn05 = DValue.TokenName bsTok05 +{-# INLINEABLE tn05 #-} + +tn06 :: DValue.TokenName +tn06 = DValue.TokenName bsTok06 +{-# INLINEABLE tn06 #-} + +tn07 :: DValue.TokenName +tn07 = DValue.TokenName bsTok07 +{-# INLINEABLE tn07 #-} + +tn08 :: DValue.TokenName +tn08 = DValue.TokenName bsTok08 +{-# INLINEABLE tn08 #-} + +tn09 :: DValue.TokenName +tn09 = DValue.TokenName bsTok09 +{-# INLINEABLE tn09 #-} + +tn10 :: DValue.TokenName +tn10 = DValue.TokenName bsTok10 +{-# INLINEABLE tn10 #-} + +-- -------------------------------------------------------------------------- +-- Haskell-side helper tables for building S100. +-- -------------------------------------------------------------------------- + +s100Policies :: [DValue.CurrencySymbol] +s100Policies = [cs01, cs02, cs03, cs04, cs05, cs06, cs07, cs08, cs09, cs10] + +s100Tokens :: [DValue.TokenName] +s100Tokens = [tn01, tn02, tn03, tn04, tn05, tn06, tn07, tn08, tn09, tn10] + +-- -------------------------------------------------------------------------- +-- Sample Values encoded as BuiltinData. +-- -------------------------------------------------------------------------- + +valueS1 :: CompiledCode B.BuiltinData +valueS1 = liftCodeDef . Tx.toBuiltinData $ do + listsToValue [(DValue.adaSymbol, [(DValue.adaToken, 1000000)])] + +valueS3 :: CompiledCode B.BuiltinData +valueS3 = liftCodeDef . Tx.toBuiltinData $ do + listsToValue + [ (DValue.adaSymbol, [(DValue.adaToken, 1000000)]) + , (cs01, [(tn01, 42)]) + , (cs02, [(tn02, 7)]) + ] + +valueS8 :: CompiledCode B.BuiltinData +valueS8 = liftCodeDef . Tx.toBuiltinData $ do + listsToValue + [ (DValue.adaSymbol, [(DValue.adaToken, 1000000)]) + , (cs01, [(tn01, 1)]) + , (cs02, [(tn02, 1)]) + , (cs03, [(tn03, 1)]) + , (cs04, [(tn04, 1)]) + , (cs05, [(tn05, 1)]) + , (cs06, [(tn06, 1)]) + , (cs07, [(tn07, 1)]) + ] + +valueS100 :: CompiledCode B.BuiltinData +valueS100 = liftCodeDef . Tx.toBuiltinData $ do + listsToValue $ (DValue.adaSymbol, [(DValue.adaToken, 1000000)]) + : [(cs, [(tn, 1) | tn <- s100Tokens]) | cs <- s100Policies] + +-- -------------------------------------------------------------------------- +-- Compiled lookup operations. +-- +-- Each pair computes the same logical result from a BuiltinData input: +-- how many units of a given (policy, token) the value contains. +-- +-- Builtin path: BuiltinData -(unsafeDataAsValue)-> BuiltinValue +-- -(lookupCoin)-> Integer +-- Non-builtin path: BuiltinData -(unsafeFromBuiltinData)-> Value +-- -(valueOf)-> Integer +-- -------------------------------------------------------------------------- + +lookupAdaBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupAdaBuiltin = + $$(compile [||\bd -> B.lookupCoin "" "" (B.unsafeDataAsValue bd)||]) + +lookupAdaNonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupAdaNonBuiltin = + $$( compile + [|| + \bd -> + DValue.valueOf (Tx.unsafeFromBuiltinData bd) DValue.adaSymbol DValue.adaToken + ||] + ) + +lookupMissBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupMissBuiltin = + $$(compile [||\bd -> B.lookupCoin bsPolicyMiss bsTokMiss (B.unsafeDataAsValue bd)||]) + +lookupMissNonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupMissNonBuiltin = + $$(compile [||\bd -> DValue.valueOf (Tx.unsafeFromBuiltinData bd) csPolicyMiss tnMiss||]) + +lookupCs01Tn01Builtin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs01Tn01Builtin = + $$(compile [||\bd -> B.lookupCoin bsPolicy01 bsTok01 (B.unsafeDataAsValue bd)||]) + +lookupCs01Tn01NonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs01Tn01NonBuiltin = + $$(compile [||\bd -> DValue.valueOf (Tx.unsafeFromBuiltinData bd) cs01 tn01||]) + +lookupCs02Tn02Builtin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs02Tn02Builtin = + $$(compile [||\bd -> B.lookupCoin bsPolicy02 bsTok02 (B.unsafeDataAsValue bd)||]) + +lookupCs02Tn02NonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs02Tn02NonBuiltin = + $$(compile [||\bd -> DValue.valueOf (Tx.unsafeFromBuiltinData bd) cs02 tn02||]) + +lookupCs04Tn04Builtin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs04Tn04Builtin = + $$(compile [||\bd -> B.lookupCoin bsPolicy04 bsTok04 (B.unsafeDataAsValue bd)||]) + +lookupCs04Tn04NonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs04Tn04NonBuiltin = + $$(compile [||\bd -> DValue.valueOf (Tx.unsafeFromBuiltinData bd) cs04 tn04||]) + +lookupCs05Tn05Builtin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs05Tn05Builtin = + $$(compile [||\bd -> B.lookupCoin bsPolicy05 bsTok05 (B.unsafeDataAsValue bd)||]) + +lookupCs05Tn05NonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs05Tn05NonBuiltin = + $$(compile [||\bd -> DValue.valueOf (Tx.unsafeFromBuiltinData bd) cs05 tn05||]) + +lookupCs07Tn07Builtin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs07Tn07Builtin = + $$(compile [||\bd -> B.lookupCoin bsPolicy07 bsTok07 (B.unsafeDataAsValue bd)||]) + +lookupCs07Tn07NonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs07Tn07NonBuiltin = + $$(compile [||\bd -> DValue.valueOf (Tx.unsafeFromBuiltinData bd) cs07 tn07||]) + +lookupCs10Tn10Builtin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs10Tn10Builtin = + $$(compile [||\bd -> B.lookupCoin bsPolicy10 bsTok10 (B.unsafeDataAsValue bd)||]) + +lookupCs10Tn10NonBuiltin :: CompiledCode (B.BuiltinData -> Integer) +lookupCs10Tn10NonBuiltin = + $$(compile [||\bd -> DValue.valueOf (Tx.unsafeFromBuiltinData bd) cs10 tn10||]) + +-- -------------------------------------------------------------------------- +-- Hand-rolled helpers operating directly on raw BuiltinData. +-- +-- These bypass the CurrencySymbol / TokenName newtype wrappers and the +-- Maybe / withCurrencySymbol continuation indirection that PlutusLedgerApi's +-- `valueOf` chains together. The union variant additionally exploits the +-- ledger invariant that output Values have strictly positive quantities, +-- so it skips the zero-filter that `unionWith` does via the `These` algebra. +-- -------------------------------------------------------------------------- + +-- | Look up a key in a Data-encoded map, short-circuiting on first match. +lookupKeyInMap + :: B.BuiltinData + -> BI.BuiltinList (BI.BuiltinPair B.BuiltinData B.BuiltinData) + -> Maybe B.BuiltinData +lookupKeyInMap k = go + where + go = B.caseList' Nothing \hd -> + if B.equalsData k (BI.fst hd) + then \_ -> Just (BI.snd hd) + else go +{-# INLINEABLE lookupKeyInMap #-} + +-- | Return 'True' if a key appears in a Data-encoded map. +containsKeyInMap + :: B.BuiltinData + -> BI.BuiltinList (BI.BuiltinPair B.BuiltinData B.BuiltinData) + -> Bool +containsKeyInMap k = go + where + go = B.caseList' False \hd -> + if B.equalsData k (BI.fst hd) + then \_ -> True + else go +{-# INLINEABLE containsKeyInMap #-} + +-- | Append two BuiltinLists. +appendBuiltinList + :: forall a + . BI.BuiltinList a + -> BI.BuiltinList a + -> BI.BuiltinList a +appendBuiltinList l1 l2 = go l1 + where + go = + B.caseList' + l2 + (\hd tl -> BI.mkCons hd (go tl)) +{-# INLINEABLE appendBuiltinList #-} + +{-| Look up the integer quantity for a (currency, token) pair directly from +a 'BuiltinData'-encoded 'Value'. Returns 0 if either key is missing. + +This replicates what `valueOf` does semantically but without going through +`CurrencySymbol`/`TokenName` newtype wrappers, `AssocMap.lookup`'s +`Maybe`-wrapping, or `withCurrencySymbol`'s continuation. -} +handRolledLookup :: B.BuiltinData -> BuiltinByteString -> BuiltinByteString -> Integer +handRolledLookup bd cs tn = goOuter (BI.unsafeDataAsMap bd) + where + goOuter = B.caseList' 0 \hd -> + if B.equalsByteString cs (BI.unsafeDataAsB (BI.fst hd)) + then \_ -> goInner (BI.unsafeDataAsMap (BI.snd hd)) + else goOuter + + goInner = B.caseList' 0 \hd -> + if B.equalsByteString tn (BI.unsafeDataAsB (BI.fst hd)) + then \_ -> BI.unsafeDataAsI (BI.snd hd) + else goInner +{-# INLINEABLE handRolledLookup #-} + +{-| Union two 'BuiltinData'-encoded 'Value's. Produces a new 'BuiltinData'. +Assumes all quantities are strictly positive (ledger invariant for Values +from tx outputs), so it does not filter out zero entries. -} +handRolledUnion :: B.BuiltinData -> B.BuiltinData -> B.BuiltinData +handRolledUnion bd1 bd2 = + let outer1 = BI.unsafeDataAsMap bd1 + outer2 = BI.unsafeDataAsMap bd2 + in BI.mkMap (appendBuiltinList (mergeOuters outer1 outer2) (filterMissingOuter outer2 outer1)) + where + mergeOuters l1 l2 = goOuter l1 + where + goOuter = + B.caseList' (BI.mkNilPairData BI.unitval) \hd -> + let csData = BI.fst hd + inner1 = BI.snd hd + mergedValue = case lookupKeyInMap csData l2 of + Just inner2Data -> + let i1 = BI.unsafeDataAsMap inner1 + i2 = BI.unsafeDataAsMap inner2Data + in BI.mkMap (appendBuiltinList (mergeInners i1 i2) (filterMissingOuter i2 i1)) + Nothing -> inner1 + in \tl -> BI.mkCons (BI.mkPairData csData mergedValue) (goOuter tl) + + mergeInners l1 l2 = goInner l1 + where + goInner = + B.caseList' (BI.mkNilPairData BI.unitval) \hd -> + let tnData = BI.fst hd + amt1 = BI.unsafeDataAsI (BI.snd hd) + combined = case lookupKeyInMap tnData l2 of + Just amt2Data -> amt1 + BI.unsafeDataAsI amt2Data + Nothing -> amt1 + in \tl -> + BI.mkCons + (BI.mkPairData tnData (BI.mkI combined)) + (goInner tl) + + -- Keep entries from l2 whose key is NOT in l1. + filterMissingOuter l2 l1 = go l2 + where + go = B.caseList' (BI.mkNilPairData BI.unitval) \hd -> + if containsKeyInMap (BI.fst hd) l1 + then \tl -> go tl + else \tl -> BI.mkCons hd (go tl) +{-# INLINEABLE handRolledUnion #-} + +-- -------------------------------------------------------------------------- +-- Compiled hand-rolled lookup operations. +-- -------------------------------------------------------------------------- + +lookupAdaHandrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupAdaHandrolled = + $$(compile [||\bd -> handRolledLookup bd "" ""||]) + +lookupMissHandrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupMissHandrolled = + $$(compile [||\bd -> handRolledLookup bd bsPolicyMiss bsTokMiss||]) + +lookupCs01Tn01Handrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupCs01Tn01Handrolled = + $$(compile [||\bd -> handRolledLookup bd bsPolicy01 bsTok01||]) + +lookupCs02Tn02Handrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupCs02Tn02Handrolled = + $$(compile [||\bd -> handRolledLookup bd bsPolicy02 bsTok02||]) + +lookupCs04Tn04Handrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupCs04Tn04Handrolled = + $$(compile [||\bd -> handRolledLookup bd bsPolicy04 bsTok04||]) + +lookupCs05Tn05Handrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupCs05Tn05Handrolled = + $$(compile [||\bd -> handRolledLookup bd bsPolicy05 bsTok05||]) + +lookupCs07Tn07Handrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupCs07Tn07Handrolled = + $$(compile [||\bd -> handRolledLookup bd bsPolicy07 bsTok07||]) + +lookupCs10Tn10Handrolled :: CompiledCode (B.BuiltinData -> Integer) +lookupCs10Tn10Handrolled = + $$(compile [||\bd -> handRolledLookup bd bsPolicy10 bsTok10||]) + +-- -------------------------------------------------------------------------- +-- Compiled union-and-lookup operations. +-- +-- Combine two incoming BuiltinData-encoded values and inspect how much ada +-- the result contains. This is the conservation-of-value pattern from the +-- issue: validators union the values from their inputs and outputs and +-- then compare specific coins. +-- -------------------------------------------------------------------------- + +unionAdaBuiltin :: CompiledCode (B.BuiltinData -> B.BuiltinData -> Integer) +unionAdaBuiltin = + $$( compile + [|| + \bd1 bd2 -> + B.lookupCoin + "" + "" + (B.unionValue (B.unsafeDataAsValue bd1) (B.unsafeDataAsValue bd2)) + ||] + ) + +unionAdaNonBuiltin :: CompiledCode (B.BuiltinData -> B.BuiltinData -> Integer) +unionAdaNonBuiltin = + $$( compile + [|| + \bd1 bd2 -> + DValue.valueOf + ( DValue.unionWith + (+) + (Tx.unsafeFromBuiltinData bd1) + (Tx.unsafeFromBuiltinData bd2) + ) + DValue.adaSymbol + DValue.adaToken + ||] + ) + +{-| Hand-rolled union (materializes a new BuiltinData), then hand-rolled ada lookup. +Exploits the positive-quantities invariant. -} +unionAdaHandrolled :: CompiledCode (B.BuiltinData -> B.BuiltinData -> Integer) +unionAdaHandrolled = + $$( compile + [|| + \bd1 bd2 -> + handRolledLookup (handRolledUnion bd1 bd2) "" "" + ||] + ) + +-- -------------------------------------------------------------------------- +-- Standalone `unsafeDataAsValue` measurement. +-- +-- Isolates the conversion cost from any downstream operation, so the +-- per-shape `unValueData` overhead can be read directly. +-- -------------------------------------------------------------------------- + +unValueDataOnly :: CompiledCode (B.BuiltinData -> BI.BuiltinValue) +unValueDataOnly = + $$(compile [||\bd -> B.unsafeDataAsValue bd||]) diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.eval new file mode 100644 index 00000000000..e094ba39874 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 22_108_153 +Memory: 3_677 +AST Size: 11 +Flat Size: 3_858 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.pir new file mode 100644 index 00000000000..3bd6dbbd83f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> lookupCoin # # (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.uplc new file mode 100644 index 00000000000..5d697a8b042 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_builtin.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> case (constr 0 [#, #, (unValueData bd)]) [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.eval new file mode 100644 index 00000000000..f313377ad25 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_353_446 +Memory: 7_662 +AST Size: 88 +Flat Size: 3_926 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.pir new file mode 100644 index 00000000000..81e9f1391da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.pir @@ -0,0 +1,42 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.uplc new file mode 100644 index 00000000000..651f17f7064 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_handrolled.golden.uplc @@ -0,0 +1,24 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> goOuter (unMapData bd)) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.eval new file mode 100644 index 00000000000..f1eea8bb542 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_387_176 +Memory: 7_998 +AST Size: 94 +Flat Size: 3_939 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.pir new file mode 100644 index 00000000000..2672e2ee826 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.pir @@ -0,0 +1,59 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..c79b11401da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_ada_nonbuiltin.golden.uplc @@ -0,0 +1,32 @@ +(program + 1.1.0 + (\bd -> + (\m -> + (\s -> + case + (s s m) + [ (\a -> + (\m -> + (\s -> case (s s m) [(\a -> unIData a), 0]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData a)) + , 0 ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.eval new file mode 100644 index 00000000000..6a016cde6ec --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 22_108_153 +Memory: 3_677 +AST Size: 11 +Flat Size: 3_920 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.pir new file mode 100644 index 00000000000..862b0f6279d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.uplc new file mode 100644 index 00000000000..220ba9709c0 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.eval new file mode 100644 index 00000000000..07d6347a670 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 8_982_620 +Memory: 50_089 +AST Size: 88 +Flat Size: 3_988 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.pir new file mode 100644 index 00000000000..f391779b504 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.uplc new file mode 100644 index 00000000000..f88e5f6e4af --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.eval new file mode 100644 index 00000000000..c1d52c5e017 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 31_000_233 +Memory: 47_517 +AST Size: 72 +Flat Size: 3_981 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.pir new file mode 100644 index 00000000000..ee0d514dd1e --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..6235b46a816 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_last_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.eval new file mode 100644 index 00000000000..6a016cde6ec --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 22_108_153 +Memory: 3_677 +AST Size: 11 +Flat Size: 3_920 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.pir new file mode 100644 index 00000000000..6b8f2799634 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.uplc new file mode 100644 index 00000000000..d862ab5a84c --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.eval new file mode 100644 index 00000000000..353be572bc5 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 4_964_700 +Memory: 27_759 +AST Size: 88 +Flat Size: 3_988 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.pir new file mode 100644 index 00000000000..d3a5c0da166 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.uplc new file mode 100644 index 00000000000..5cc9ec0d59e --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.eval new file mode 100644 index 00000000000..2d2f0e89bee --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 16_636_433 +Memory: 27_507 +AST Size: 72 +Flat Size: 3_981 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.pir new file mode 100644 index 00000000000..e61cb135819 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..dfecd29470a --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_middle_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.eval new file mode 100644 index 00000000000..9e4a2c80a80 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 22_108_153 +Memory: 3_677 +AST Size: 11 +Flat Size: 3_920 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.pir new file mode 100644 index 00000000000..40a1a391f44 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.uplc new file mode 100644 index 00000000000..40a8101bb1f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.eval new file mode 100644 index 00000000000..120a6e3872b --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 4_903_333 +Memory: 27_595 +AST Size: 88 +Flat Size: 3_988 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.pir new file mode 100644 index 00000000000..a3c3a0d8865 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.uplc new file mode 100644 index 00000000000..876a0f904b0 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.eval new file mode 100644 index 00000000000..f56f345feef --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 16_239_066 +Memory: 25_243 +AST Size: 72 +Flat Size: 3_981 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.pir new file mode 100644 index 00000000000..c130d333d7d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..74f90331c32 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S100_miss_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.eval new file mode 100644 index 00000000000..f2ba2e01541 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 895_629 +Memory: 1_257 +AST Size: 11 +Flat Size: 33 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.pir new file mode 100644 index 00000000000..3bd6dbbd83f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> lookupCoin # # (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.uplc new file mode 100644 index 00000000000..5d697a8b042 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_builtin.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> case (constr 0 [#, #, (unValueData bd)]) [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.eval new file mode 100644 index 00000000000..5aaf27e77e7 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_353_446 +Memory: 7_662 +AST Size: 88 +Flat Size: 101 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.pir new file mode 100644 index 00000000000..81e9f1391da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.pir @@ -0,0 +1,42 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.uplc new file mode 100644 index 00000000000..651f17f7064 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_handrolled.golden.uplc @@ -0,0 +1,24 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> goOuter (unMapData bd)) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.eval new file mode 100644 index 00000000000..84bafe26209 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_387_176 +Memory: 7_998 +AST Size: 94 +Flat Size: 114 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.pir new file mode 100644 index 00000000000..2672e2ee826 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.pir @@ -0,0 +1,59 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..c79b11401da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_ada_nonbuiltin.golden.uplc @@ -0,0 +1,32 @@ +(program + 1.1.0 + (\bd -> + (\m -> + (\s -> + case + (s s m) + [ (\a -> + (\m -> + (\s -> case (s s m) [(\a -> unIData a), 0]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData a)) + , 0 ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.eval new file mode 100644 index 00000000000..2001fae1352 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 895_629 +Memory: 1_257 +AST Size: 11 +Flat Size: 95 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.pir new file mode 100644 index 00000000000..40a1a391f44 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.uplc new file mode 100644 index 00000000000..40a8101bb1f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.eval new file mode 100644 index 00000000000..f828d4b12b5 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 885_413 +Memory: 5_265 +AST Size: 88 +Flat Size: 163 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.pir new file mode 100644 index 00000000000..a3c3a0d8865 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.uplc new file mode 100644 index 00000000000..876a0f904b0 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.eval new file mode 100644 index 00000000000..b5b925317da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_875_266 +Memory: 5_233 +AST Size: 72 +Flat Size: 156 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.pir new file mode 100644 index 00000000000..c130d333d7d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..74f90331c32 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S1_miss_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.eval new file mode 100644 index 00000000000..1f6e8f02550 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_672_681 +Memory: 1_345 +AST Size: 11 +Flat Size: 166 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.pir new file mode 100644 index 00000000000..3bd6dbbd83f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> lookupCoin # # (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.uplc new file mode 100644 index 00000000000..5d697a8b042 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_builtin.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> case (constr 0 [#, #, (unValueData bd)]) [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.eval new file mode 100644 index 00000000000..b8a18235baa --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_353_446 +Memory: 7_662 +AST Size: 88 +Flat Size: 234 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.pir new file mode 100644 index 00000000000..81e9f1391da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.pir @@ -0,0 +1,42 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.uplc new file mode 100644 index 00000000000..651f17f7064 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_handrolled.golden.uplc @@ -0,0 +1,24 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> goOuter (unMapData bd)) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.eval new file mode 100644 index 00000000000..4a0481a6691 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_387_176 +Memory: 7_998 +AST Size: 94 +Flat Size: 247 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.pir new file mode 100644 index 00000000000..2672e2ee826 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.pir @@ -0,0 +1,59 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..c79b11401da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_ada_nonbuiltin.golden.uplc @@ -0,0 +1,32 @@ +(program + 1.1.0 + (\bd -> + (\m -> + (\s -> + case + (s s m) + [ (\a -> + (\m -> + (\s -> case (s s m) [(\a -> unIData a), 0]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData a)) + , 0 ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.eval new file mode 100644 index 00000000000..8332bd04041 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_672_681 +Memory: 1_345 +AST Size: 11 +Flat Size: 228 + +(con integer 7) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.pir new file mode 100644 index 00000000000..faaee1c52d0 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.uplc new file mode 100644 index 00000000000..eb97847aa57 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.eval new file mode 100644 index 00000000000..223849724be --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 2_152_156 +Memory: 12_128 +AST Size: 88 +Flat Size: 297 + +(con integer 7) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.pir new file mode 100644 index 00000000000..e1b4709ac5c --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.uplc new file mode 100644 index 00000000000..eb8317e652c --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.eval new file mode 100644 index 00000000000..f57b16f61a3 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 6_581_773 +Memory: 13_500 +AST Size: 72 +Flat Size: 290 + +(con integer 7) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.pir new file mode 100644 index 00000000000..def92fbab05 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..fc826290d96 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_last_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.eval new file mode 100644 index 00000000000..5563cdd21b9 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_672_681 +Memory: 1_345 +AST Size: 11 +Flat Size: 228 + +(con integer 42) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.pir new file mode 100644 index 00000000000..8c9fb7cb75b --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.uplc new file mode 100644 index 00000000000..07a4a523728 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.eval new file mode 100644 index 00000000000..82317eeac91 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_750_364 +Memory: 9_895 +AST Size: 88 +Flat Size: 297 + +(con integer 42) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.pir new file mode 100644 index 00000000000..302cc0ede13 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.uplc new file mode 100644 index 00000000000..63e26914b20 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.eval new file mode 100644 index 00000000000..f0b9d284556 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 5_145_393 +Memory: 11_499 +AST Size: 72 +Flat Size: 290 + +(con integer 42) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.pir new file mode 100644 index 00000000000..8dc106936fe --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..e9e3493bf34 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_middle_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.eval new file mode 100644 index 00000000000..20f926bab5a --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_672_681 +Memory: 1_345 +AST Size: 11 +Flat Size: 228 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.pir new file mode 100644 index 00000000000..40a1a391f44 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.uplc new file mode 100644 index 00000000000..40a8101bb1f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.eval new file mode 100644 index 00000000000..fc07fe2f774 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_688_997 +Memory: 9_731 +AST Size: 88 +Flat Size: 297 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.pir new file mode 100644 index 00000000000..a3c3a0d8865 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.uplc new file mode 100644 index 00000000000..876a0f904b0 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.eval new file mode 100644 index 00000000000..fedbc567290 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 4_748_026 +Memory: 9_235 +AST Size: 72 +Flat Size: 290 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.pir new file mode 100644 index 00000000000..c130d333d7d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..74f90331c32 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S3_miss_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.eval new file mode 100644 index 00000000000..7f6b76a6c32 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_611_149 +Memory: 1_565 +AST Size: 11 +Flat Size: 497 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.pir new file mode 100644 index 00000000000..3bd6dbbd83f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> lookupCoin # # (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.uplc new file mode 100644 index 00000000000..5d697a8b042 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_builtin.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> case (constr 0 [#, #, (unValueData bd)]) [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.eval new file mode 100644 index 00000000000..0d671e6f046 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_353_446 +Memory: 7_662 +AST Size: 88 +Flat Size: 565 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.pir new file mode 100644 index 00000000000..81e9f1391da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.pir @@ -0,0 +1,42 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.uplc new file mode 100644 index 00000000000..651f17f7064 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_handrolled.golden.uplc @@ -0,0 +1,24 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> goOuter (unMapData bd)) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.eval new file mode 100644 index 00000000000..72a2f00c8d2 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_387_176 +Memory: 7_998 +AST Size: 94 +Flat Size: 578 + +(con integer 1000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.pir new file mode 100644 index 00000000000..2672e2ee826 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.pir @@ -0,0 +1,59 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..c79b11401da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_ada_nonbuiltin.golden.uplc @@ -0,0 +1,32 @@ +(program + 1.1.0 + (\bd -> + (\m -> + (\s -> + case + (s s m) + [ (\a -> + (\m -> + (\s -> case (s s m) [(\a -> unIData a), 0]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData a)) + , 0 ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData (B #) (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.eval new file mode 100644 index 00000000000..edaf9339416 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_611_149 +Memory: 1_565 +AST Size: 11 +Flat Size: 559 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.pir new file mode 100644 index 00000000000..ee746c2315d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.uplc new file mode 100644 index 00000000000..4a1675b00e7 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.eval new file mode 100644 index 00000000000..90861f4de5b --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 4_161_116 +Memory: 23_293 +AST Size: 88 +Flat Size: 627 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.pir new file mode 100644 index 00000000000..c6fc0e4849e --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.uplc new file mode 100644 index 00000000000..8361f368439 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.eval new file mode 100644 index 00000000000..9afb3da1436 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 13_763_673 +Memory: 23_505 +AST Size: 72 +Flat Size: 620 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.pir new file mode 100644 index 00000000000..5a5bd6f126c --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..7bc8377db62 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_last_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.eval new file mode 100644 index 00000000000..edaf9339416 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_611_149 +Memory: 1_565 +AST Size: 11 +Flat Size: 559 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.pir new file mode 100644 index 00000000000..e6edfbb2050 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.uplc new file mode 100644 index 00000000000..90ffcd928da --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.eval new file mode 100644 index 00000000000..e2dde25d3a3 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 2_955_740 +Memory: 16_594 +AST Size: 88 +Flat Size: 627 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.pir new file mode 100644 index 00000000000..655b93080f6 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.uplc new file mode 100644 index 00000000000..175357505aa --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.eval new file mode 100644 index 00000000000..25a7649c339 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 9_454_533 +Memory: 17_502 +AST Size: 72 +Flat Size: 620 + +(con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.pir new file mode 100644 index 00000000000..219a84aee93 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..6e8e6b6e029 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_middle_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.eval new file mode 100644 index 00000000000..6eca3aab428 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_611_149 +Memory: 1_565 +AST Size: 11 +Flat Size: 559 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.pir new file mode 100644 index 00000000000..40a1a391f44 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.pir @@ -0,0 +1,5 @@ +\(bd : data) -> + lookupCoin + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unValueData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.uplc new file mode 100644 index 00000000000..40a8101bb1f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_builtin.golden.uplc @@ -0,0 +1,9 @@ +(program + 1.1.0 + (\bd -> + case + (constr 0 + [ #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , (unValueData bd) ]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.eval new file mode 100644 index 00000000000..5211e187612 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_697_957 +Memory: 20_896 +AST Size: 88 +Flat Size: 627 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.pir new file mode 100644 index 00000000000..a3c3a0d8865 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.pir @@ -0,0 +1,43 @@ +letrec + !goInner : + list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +\(bd : data) -> goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.uplc new file mode 100644 index 00000000000..876a0f904b0 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_handrolled.golden.uplc @@ -0,0 +1,33 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter bd -> + goOuter (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd -> + case + (equalsByteString + #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.eval new file mode 100644 index 00000000000..fb21823bf6d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 11_929_926 +Memory: 19_240 +AST Size: 72 +Flat Size: 620 + +(con integer 0) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.pir new file mode 100644 index 00000000000..c130d333d7d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.pir @@ -0,0 +1,63 @@ +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) (m : list (pair data data)) -> + (letrec + !go : list (pair data data) -> Maybe data + = (let + a = pair data data + in + /\r -> + \(z : r) (f : a -> list a -> r) (xs : list a) -> + case r xs [f, z]) + {Maybe data} + (Nothing {data}) + (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + in + go) + m +in +\(bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + Maybe_match + {data} + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..74f90331c32 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/lookup_S8_miss_nonbuiltin.golden.uplc @@ -0,0 +1,30 @@ +(program + 1.1.0 + (\bd -> + (\value -> + (\lookup' -> + case + (lookup' + (B #706f6c6963795f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + value) + [ (\a -> + (\m -> + case + (lookup' + (B #746f6b656e5f4d6973735f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f) + m) + [(\a -> unIData a), 0]) + (unMapData a)) + , 0 ]) + (\k m -> + (\s -> s s m) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (unMapData bd))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.eval new file mode 100644 index 00000000000..c7ae8c9e97f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.eval @@ -0,0 +1,6 @@ +CPU: 576_790 +Memory: 756 +AST Size: 6 +Flat Size: 22 + +(con value [(#, [(#, 1000000)])]) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.pir new file mode 100644 index 00000000000..a65e944af8f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> unValueData bd \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.uplc new file mode 100644 index 00000000000..31f57dc2290 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S1.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.eval new file mode 100644 index 00000000000..2c0f60a6724 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.eval @@ -0,0 +1,120 @@ +CPU: 21_732_650 +Memory: 3_176 +AST Size: 6 +Flat Size: 3_848 + +(con + value + [ (#, [(#, 1000000)]) + , ( #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) ] ) + , ( #706f6c6963795f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [ (#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30385f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , (#746f6b656e5f30395f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1) + , ( #746f6b656e5f31305f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , 1 ) ] ) ] +) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.pir new file mode 100644 index 00000000000..a65e944af8f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> unValueData bd \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.uplc new file mode 100644 index 00000000000..31f57dc2290 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S100.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.eval new file mode 100644 index 00000000000..6acb0182f51 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.eval @@ -0,0 +1,13 @@ +CPU: 1_344_398 +Memory: 844 +AST Size: 6 +Flat Size: 156 + +(con + value + [ (#, [(#, 1000000)]) + , ( #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 42)] ) + , ( #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 7)] ) ] +) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.pir new file mode 100644 index 00000000000..a65e944af8f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> unValueData bd \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.uplc new file mode 100644 index 00000000000..31f57dc2290 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S3.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.eval new file mode 100644 index 00000000000..3ac52537077 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.eval @@ -0,0 +1,23 @@ +CPU: 3_263_978 +Memory: 1_064 +AST Size: 6 +Flat Size: 487 + +(con + value + [ (#, [(#, 1000000)]) + , ( #706f6c6963795f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30315f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1)] ) + , ( #706f6c6963795f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30325f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1)] ) + , ( #706f6c6963795f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30335f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1)] ) + , ( #706f6c6963795f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30345f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1)] ) + , ( #706f6c6963795f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30355f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1)] ) + , ( #706f6c6963795f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30365f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1)] ) + , ( #706f6c6963795f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f + , [(#746f6b656e5f30375f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f, 1)] ) ] +) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.pir new file mode 100644 index 00000000000..a65e944af8f --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.pir @@ -0,0 +1 @@ +\(bd : data) -> unValueData bd \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.uplc new file mode 100644 index 00000000000..31f57dc2290 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/unValueData_S8.golden.uplc @@ -0,0 +1 @@ +(program 1.1.0 (\bd -> unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.eval new file mode 100644 index 00000000000..7e2219bb6f7 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 79_832_775 +Memory: 11_319 +AST Size: 20 +Flat Size: 7_702 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.pir new file mode 100644 index 00000000000..f226115fa05 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.pir @@ -0,0 +1,2 @@ +\(bd : data) (bd : data) -> + lookupCoin # # (unionValue (unValueData bd) (unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.uplc new file mode 100644 index 00000000000..c7488da8bb1 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_builtin.golden.uplc @@ -0,0 +1,6 @@ +(program + 1.1.0 + (\bd bd -> + case + (constr 0 [#, #, (unionValue (unValueData bd) (unValueData bd))]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.eval new file mode 100644 index 00000000000..1d3216a9250 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 11_352_082_063 +Memory: 18_777_525 +AST Size: 408 +Flat Size: 8_061 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.pir new file mode 100644 index 00000000000..08edc1b6e68 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.pir @@ -0,0 +1,268 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +let + !filterMissingOuter : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(l : list (pair data data)) (l : list (pair data data)) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + case + (list (pair data data) -> list (pair data data)) + ((let + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + letrec + !go : list (pair data data) -> bool + = \(xs : list (pair data data)) -> + case + bool + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> bool) + (equalsData + k + (case + data + hd + [ (\(l : data) (r : data) -> + l) ])) + [ (/\dead -> go) + , (/\dead -> + \(ds : + list (pair data data)) -> + True) ] + {all dead. dead}) + , False ] + in + go) + l) + [ (\(tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + , (\(tl : list (pair data data)) -> go tl) ]) + , [] ] + in + go l + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookupKeyInMap : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + go + !caseList' : all a r. r -> (a -> list a -> r) -> list a -> r + = /\a r -> \(z : r) (f : a -> list a -> r) (xs : list a) -> case r xs [f, z] +in +\(bd : data) + (bd : data) -> + let + !bd : + data + = let + !outer : list (pair data data) = unMapData bd + in + letrec + !goOuter : + list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~csData : data + = case data hd [(\(l : data) (r : data) -> l)] + in + \(tl : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + csData + (Maybe_match + {data} + (lookupKeyInMap csData outer) + {all dead. data} + (\(inner2Data : data) -> + /\dead -> + let + !i : list (pair data data) + = unMapData inner2Data + in + letrec + !goInner : + list (pair data data) -> + list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~tnData : data + = case + data + hd + [ (\(l : data) + (r : data) -> + l) ] + in + \(tl : + list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + tnData + (iData + (Maybe_match + {data} + (lookupKeyInMap + tnData + i) + {all dead. + integer} + (\(amt2Data : + data) -> + /\dead -> + addInteger + (unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + (unIData + amt2Data)) + (/\dead -> + unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + {all dead. + dead}))) + (goInner tl)) + , [] ] + in + let + !i : list (pair data data) + = unMapData + (case + data + hd + [(\(l : data) (r : data) -> r)]) + in + mapData + (letrec + !go : + list (pair data data) -> + list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter i i) + (\(hd : pair data data) + (tl : list (pair data data)) -> + mkCons + {pair data data} + hd + (go tl)) + in + go (goInner i))) + (/\dead -> + case data hd [(\(l : data) (r : data) -> r)]) + {all dead. dead})) + (goOuter tl)) + , [] ] + in + let + !outer : list (pair data data) = unMapData bd + in + mapData + (letrec + !go : list (pair data data) -> list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter outer outer) + (\(hd : pair data data) (tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + in + go (goOuter outer)) + in + goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.uplc new file mode 100644 index 00000000000..3147aafb29d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_handrolled.golden.uplc @@ -0,0 +1,180 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter + bd + bd -> + goOuter + (unMapData + ((\outer -> + (\caseList' -> + (\lookupKeyInMap -> + (\filterMissingOuter -> + (\goOuter -> + (\outer -> + mapData + ((\s -> s s (goOuter outer)) + (\s -> + caseList' + (filterMissingOuter outer outer) + (\hd tl -> + force mkCons hd (s s tl))))) + (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case hd [(\l r -> l)]) + (case + (lookupKeyInMap + (case hd [(\l r -> l)]) + outer) + [ (\inner2Data -> + (\i -> + (\goInner -> + (\i -> + mapData + ((\s -> + s + s + (goInner + i)) + (\s -> + caseList' + (filterMissingOuter + i + i) + (\hd + tl -> + force + mkCons + hd + (s + s + tl))))) + (unMapData + (case + hd + [ (\l + r -> + r) ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case + hd + [ (\l + r -> + l) ]) + (iData + (case + (lookupKeyInMap + (case + hd + [ (\l + r -> + l) ]) + i) + [ (\amt2Data -> + addInteger + (unIData + (case + hd + [ (\l + r -> + r) ])) + (unIData + amt2Data)) + , (unIData + (case + hd + [ (\l + r -> + r) ])) ]))) + (s + s + tl)) + , [] ]))) + (unMapData + inner2Data)) + , (case hd [(\l r -> r)]) ])) + (s s tl)) + , [] ]))) + (\l l -> + (\s -> s s l) + (\s list -> + case + list + [ (\hd -> + (\k -> + (\s -> + case + (s s l) + [ (\tl -> + force mkCons hd (s s tl)) + , (\tl -> s s tl) ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> True) ]) + , False ])) + (case hd [(\l r -> l)])) + , [] ]))) + (\k -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (\z f xs -> case xs [f, z])) + (unMapData bd)))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.eval new file mode 100644 index 00000000000..2256a5cf5e9 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 3_460_294_959 +Memory: 7_669_071 +AST Size: 617 +Flat Size: 8_310 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.pir new file mode 100644 index 00000000000..007e3ec9923 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.pir @@ -0,0 +1,411 @@ +let + !`$fToDataInteger_$ctoBuiltinData` : integer -> data + = \(i : integer) -> iData i + data (These :: * -> * -> *) a b | These_match where + That : b -> These a b + These : a -> b -> These a b + This : a -> These a b + !`$fToDataThese_$ctoBuiltinData` : + all a b. (\a -> a -> data) a -> (\a -> a -> data) b -> These a b -> data + = /\a b -> + \(`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : These a b) -> + These_match + {a} + {b} + ds + {data} + (\(arg : b) -> constrData 1 (mkCons {data} (`$dToData` arg) [])) + (\(arg : a) (arg : b) -> + constrData + 2 + (mkCons + {data} + (`$dToData` arg) + (mkCons {data} (`$dToData` arg) []))) + (\(arg : a) -> constrData 0 (mkCons {data} (`$dToData` arg) [])) + ~`$dToData` : These integer integer -> data + = `$fToDataThese_$ctoBuiltinData` + {integer} + {integer} + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + !`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` : + all a b. (\a -> data -> a) a -> (\a -> data -> a) b -> data -> These a b + = /\a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (d : data) -> + (let + b = list data + in + /\r -> + \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) + {These a b} + (unConstrData d) + (\(index : integer) (args : list data) -> + case + (list data -> These a b) + index + [ (\(ds : list data) -> + This {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + That {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + These + {a} + {b} + (`$dUnsafeFromData` (headList {data} ds)) + (`$dUnsafeFromData` + (headList {data} (tailList {data} ds)))) ] + args) + !`$fToDataMap_$ctoBuiltinData` : + all k a. (\k a -> list (pair data data)) k a -> data + = /\k a -> \(ds : (\k a -> list (pair data data)) k a) -> mapData ds + !map : + all k a b. + (\a -> data -> a) a -> + (\a -> a -> data) b -> + (a -> b) -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dToData` : (\a -> a -> data) b) + (f : a -> b) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (eta : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + (case data hd [(\(l : data) (r : data) -> l)]) + (`$dToData` + (f + (`$dUnsafeFromData` + (case + data + hd + [(\(l : data) (r : data) -> r)]))))) + (go eta)) + , [] ] + in + go +in +letrec + !safeAppend : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) (xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] + !eta : list (pair data data) = safeAppend tl xs + !nilCase : list (pair data data) + = mkCons {pair data data} (mkPairData k v) [] + in + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> + list (pair data data)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) + [ (/\dead -> + \(eta : list (pair data data)) -> + mkCons {pair data data} hd (go eta)) + , (/\dead -> + mkCons {pair data data} (mkPairData k v)) ] + {all dead. dead}) + , nilCase ] + in + go eta) + , xs ] +in +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + \(m : list (pair data data)) -> go m + !union : + all k a b. + (\a -> data -> a) a -> + (\a -> data -> a) b -> + (\a -> a -> data) a -> + (\a -> a -> data) b -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b -> + (\k a -> list (pair data data)) k (These a b) + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : (\k a -> list (pair data data)) k a) -> + letrec + !goRight : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goRight tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (That {a} {b} (`$dUnsafeFromData` v)))) + (goRight tl)) + {all dead. dead}) + , [] ] + in + \(ds : (\k a -> list (pair data data)) k b) -> + letrec + !goLeft : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goLeft tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (This {a} {b} (`$dUnsafeFromData` v)))) + (goLeft tl)) + {all dead. dead}) + , [] ] + in + safeAppend (goLeft ds) (goRight ds) +in +\(bd : data) (bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = let + !ls : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + !rs : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + map + {bytestring} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (map + {bytestring} + {These integer integer} + {integer} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {integer} + {integer} + unIData + unIData) + `$fToDataInteger_$ctoBuiltinData` + (\(k' : These integer integer) -> + These_match + {integer} + {integer} + k' + {integer} + (\(b : integer) -> addInteger 0 b) + (\(a : integer) (b : integer) -> addInteger a b) + (\(a : integer) -> addInteger 0 a))) + (map + {bytestring} + {These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta)) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {These integer integer}) + (\(k : + These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)) -> + These_match + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + k + {(\k a -> list (pair data data)) + bytestring + (These integer integer)} + (\(b : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> That {integer} {integer} ds) + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) + (b : (\k a -> list (pair data data)) bytestring integer) -> + union + {bytestring} + {integer} + {integer} + unIData + unIData + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + a + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> This {integer} {integer} ds) + a)) + (union + {bytestring} + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + ls + rs)) + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..4bfc7ccdca8 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S100_nonbuiltin.golden.uplc @@ -0,0 +1,318 @@ +(program + 1.1.0 + ((\map -> + (\`$fToDataMap_$ctoBuiltinData` -> + (\`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` -> + (\`$fToDataThese_$ctoBuiltinData` -> + (\`$fToDataInteger_$ctoBuiltinData` -> + (\safeAppend + bd + bd -> + (\lookup' -> + (\value -> + case + (lookup' (B #) value) + [ (\a -> + case + (lookup' (B #) (unMapData a)) + [(\a -> unIData a), 0]) + , 0 ]) + ((\ls -> + (\rs -> + case + (constr 0 + [ (\eta -> unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , (case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + unIData + unIData) + , `$fToDataInteger_$ctoBuiltinData` + , (\k' -> + case + k' + [ (\b -> addInteger 0 b) + , (\a b -> addInteger a b) + , (\a -> + addInteger 0 a) ]) ]) + [map]) + , ((\union -> + case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + (\eta -> unMapData eta) + (\eta -> unMapData eta)) + , `$fToDataMap_$ctoBuiltinData` + , (\k -> + case + k + [ (\b -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 0 + [ds]) + , b ]) + [map]) + , (\a + b -> + case + (constr 0 + [ unIData + , unIData + , `$fToDataInteger_$ctoBuiltinData` + , `$fToDataInteger_$ctoBuiltinData` + , a + , b ]) + [union]) + , (\a -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 2 + [ds]) + , a ]) + [map]) ]) + , (case + (constr 0 + [ (\eta -> + unMapData eta) + , (\eta -> + unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , `$fToDataMap_$ctoBuiltinData` + , ls + , rs ]) + [union]) ]) + [map]) + (\`$dUnsafeFromData` + `$dUnsafeFromData` + `$dToData` + `$dToData` + ds -> + (\goRight + ds -> + safeAppend + ((\s -> + s s ds) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 2 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l + r -> + r) ])) + , [] ])) + (goRight ds)) + ((\s -> + s s) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 0 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l r -> + r) ])) + , [] ])))) ]) + [map]) + (unMapData bd)) + (unMapData bd))) + (\k -> + (\go m -> go m) + ((\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])))) + ((\s -> s s) + (\s xs xs -> + case + xs + [ (\hd tl -> + (\v -> + (\k -> + (\eta -> + (\cse -> + (\nilCase -> + (\s -> s s eta) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [ (\l r -> + l) ])) + [ (\eta -> + force mkCons + hd + (s s eta)) + , cse ]) + , nilCase ])) + (cse [])) + (force mkCons (mkPairData k v))) + (case (constr 0 [s, tl, xs]) [s])) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) + , xs ]))) + (\i -> iData i)) + (\`$dToData` `$dToData` ds -> + case + ds + [ (\arg -> constrData 1 (force mkCons (`$dToData` arg) [])) + , (\arg arg -> + constrData + 2 + (force mkCons + (`$dToData` arg) + (force mkCons (`$dToData` arg) []))) + , (\arg -> + constrData 0 (force mkCons (`$dToData` arg) [])) ])) + (\`$dUnsafeFromData` `$dUnsafeFromData` d -> + case + (unConstrData d) + [ (\index args -> + case + index + [ (\ds -> + constr 2 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 0 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 1 + [ (`$dUnsafeFromData` (force headList ds)) + , (`$dUnsafeFromData` + (force headList (force tailList ds))) ]) ] + args) ])) + (\ds -> mapData ds)) + (\`$dUnsafeFromData` `$dToData` f -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd eta -> + force mkCons + (mkPairData + (case hd [(\l r -> l)]) + (`$dToData` + (f (`$dUnsafeFromData` (case hd [(\l r -> r)]))))) + (s s eta)) + , [] ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.eval new file mode 100644 index 00000000000..375bd2bc96e --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 1_876_591 +Memory: 2_279 +AST Size: 20 +Flat Size: 53 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.pir new file mode 100644 index 00000000000..f226115fa05 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.pir @@ -0,0 +1,2 @@ +\(bd : data) (bd : data) -> + lookupCoin # # (unionValue (unValueData bd) (unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.uplc new file mode 100644 index 00000000000..c7488da8bb1 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_builtin.golden.uplc @@ -0,0 +1,6 @@ +(program + 1.1.0 + (\bd bd -> + case + (constr 0 [#, #, (unionValue (unValueData bd) (unValueData bd))]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.eval new file mode 100644 index 00000000000..296edfdc157 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 16_522_223 +Memory: 59_750 +AST Size: 408 +Flat Size: 413 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.pir new file mode 100644 index 00000000000..08edc1b6e68 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.pir @@ -0,0 +1,268 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +let + !filterMissingOuter : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(l : list (pair data data)) (l : list (pair data data)) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + case + (list (pair data data) -> list (pair data data)) + ((let + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + letrec + !go : list (pair data data) -> bool + = \(xs : list (pair data data)) -> + case + bool + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> bool) + (equalsData + k + (case + data + hd + [ (\(l : data) (r : data) -> + l) ])) + [ (/\dead -> go) + , (/\dead -> + \(ds : + list (pair data data)) -> + True) ] + {all dead. dead}) + , False ] + in + go) + l) + [ (\(tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + , (\(tl : list (pair data data)) -> go tl) ]) + , [] ] + in + go l + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookupKeyInMap : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + go + !caseList' : all a r. r -> (a -> list a -> r) -> list a -> r + = /\a r -> \(z : r) (f : a -> list a -> r) (xs : list a) -> case r xs [f, z] +in +\(bd : data) + (bd : data) -> + let + !bd : + data + = let + !outer : list (pair data data) = unMapData bd + in + letrec + !goOuter : + list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~csData : data + = case data hd [(\(l : data) (r : data) -> l)] + in + \(tl : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + csData + (Maybe_match + {data} + (lookupKeyInMap csData outer) + {all dead. data} + (\(inner2Data : data) -> + /\dead -> + let + !i : list (pair data data) + = unMapData inner2Data + in + letrec + !goInner : + list (pair data data) -> + list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~tnData : data + = case + data + hd + [ (\(l : data) + (r : data) -> + l) ] + in + \(tl : + list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + tnData + (iData + (Maybe_match + {data} + (lookupKeyInMap + tnData + i) + {all dead. + integer} + (\(amt2Data : + data) -> + /\dead -> + addInteger + (unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + (unIData + amt2Data)) + (/\dead -> + unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + {all dead. + dead}))) + (goInner tl)) + , [] ] + in + let + !i : list (pair data data) + = unMapData + (case + data + hd + [(\(l : data) (r : data) -> r)]) + in + mapData + (letrec + !go : + list (pair data data) -> + list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter i i) + (\(hd : pair data data) + (tl : list (pair data data)) -> + mkCons + {pair data data} + hd + (go tl)) + in + go (goInner i))) + (/\dead -> + case data hd [(\(l : data) (r : data) -> r)]) + {all dead. dead})) + (goOuter tl)) + , [] ] + in + let + !outer : list (pair data data) = unMapData bd + in + mapData + (letrec + !go : list (pair data data) -> list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter outer outer) + (\(hd : pair data data) (tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + in + go (goOuter outer)) + in + goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.uplc new file mode 100644 index 00000000000..3147aafb29d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_handrolled.golden.uplc @@ -0,0 +1,180 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter + bd + bd -> + goOuter + (unMapData + ((\outer -> + (\caseList' -> + (\lookupKeyInMap -> + (\filterMissingOuter -> + (\goOuter -> + (\outer -> + mapData + ((\s -> s s (goOuter outer)) + (\s -> + caseList' + (filterMissingOuter outer outer) + (\hd tl -> + force mkCons hd (s s tl))))) + (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case hd [(\l r -> l)]) + (case + (lookupKeyInMap + (case hd [(\l r -> l)]) + outer) + [ (\inner2Data -> + (\i -> + (\goInner -> + (\i -> + mapData + ((\s -> + s + s + (goInner + i)) + (\s -> + caseList' + (filterMissingOuter + i + i) + (\hd + tl -> + force + mkCons + hd + (s + s + tl))))) + (unMapData + (case + hd + [ (\l + r -> + r) ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case + hd + [ (\l + r -> + l) ]) + (iData + (case + (lookupKeyInMap + (case + hd + [ (\l + r -> + l) ]) + i) + [ (\amt2Data -> + addInteger + (unIData + (case + hd + [ (\l + r -> + r) ])) + (unIData + amt2Data)) + , (unIData + (case + hd + [ (\l + r -> + r) ])) ]))) + (s + s + tl)) + , [] ]))) + (unMapData + inner2Data)) + , (case hd [(\l r -> r)]) ])) + (s s tl)) + , [] ]))) + (\l l -> + (\s -> s s l) + (\s list -> + case + list + [ (\hd -> + (\k -> + (\s -> + case + (s s l) + [ (\tl -> + force mkCons hd (s s tl)) + , (\tl -> s s tl) ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> True) ]) + , False ])) + (case hd [(\l r -> l)])) + , [] ]))) + (\k -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (\z f xs -> case xs [f, z])) + (unMapData bd)))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.eval new file mode 100644 index 00000000000..edd8dda195e --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 28_679_559 +Memory: 110_486 +AST Size: 617 +Flat Size: 662 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.pir new file mode 100644 index 00000000000..007e3ec9923 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.pir @@ -0,0 +1,411 @@ +let + !`$fToDataInteger_$ctoBuiltinData` : integer -> data + = \(i : integer) -> iData i + data (These :: * -> * -> *) a b | These_match where + That : b -> These a b + These : a -> b -> These a b + This : a -> These a b + !`$fToDataThese_$ctoBuiltinData` : + all a b. (\a -> a -> data) a -> (\a -> a -> data) b -> These a b -> data + = /\a b -> + \(`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : These a b) -> + These_match + {a} + {b} + ds + {data} + (\(arg : b) -> constrData 1 (mkCons {data} (`$dToData` arg) [])) + (\(arg : a) (arg : b) -> + constrData + 2 + (mkCons + {data} + (`$dToData` arg) + (mkCons {data} (`$dToData` arg) []))) + (\(arg : a) -> constrData 0 (mkCons {data} (`$dToData` arg) [])) + ~`$dToData` : These integer integer -> data + = `$fToDataThese_$ctoBuiltinData` + {integer} + {integer} + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + !`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` : + all a b. (\a -> data -> a) a -> (\a -> data -> a) b -> data -> These a b + = /\a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (d : data) -> + (let + b = list data + in + /\r -> + \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) + {These a b} + (unConstrData d) + (\(index : integer) (args : list data) -> + case + (list data -> These a b) + index + [ (\(ds : list data) -> + This {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + That {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + These + {a} + {b} + (`$dUnsafeFromData` (headList {data} ds)) + (`$dUnsafeFromData` + (headList {data} (tailList {data} ds)))) ] + args) + !`$fToDataMap_$ctoBuiltinData` : + all k a. (\k a -> list (pair data data)) k a -> data + = /\k a -> \(ds : (\k a -> list (pair data data)) k a) -> mapData ds + !map : + all k a b. + (\a -> data -> a) a -> + (\a -> a -> data) b -> + (a -> b) -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dToData` : (\a -> a -> data) b) + (f : a -> b) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (eta : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + (case data hd [(\(l : data) (r : data) -> l)]) + (`$dToData` + (f + (`$dUnsafeFromData` + (case + data + hd + [(\(l : data) (r : data) -> r)]))))) + (go eta)) + , [] ] + in + go +in +letrec + !safeAppend : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) (xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] + !eta : list (pair data data) = safeAppend tl xs + !nilCase : list (pair data data) + = mkCons {pair data data} (mkPairData k v) [] + in + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> + list (pair data data)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) + [ (/\dead -> + \(eta : list (pair data data)) -> + mkCons {pair data data} hd (go eta)) + , (/\dead -> + mkCons {pair data data} (mkPairData k v)) ] + {all dead. dead}) + , nilCase ] + in + go eta) + , xs ] +in +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + \(m : list (pair data data)) -> go m + !union : + all k a b. + (\a -> data -> a) a -> + (\a -> data -> a) b -> + (\a -> a -> data) a -> + (\a -> a -> data) b -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b -> + (\k a -> list (pair data data)) k (These a b) + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : (\k a -> list (pair data data)) k a) -> + letrec + !goRight : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goRight tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (That {a} {b} (`$dUnsafeFromData` v)))) + (goRight tl)) + {all dead. dead}) + , [] ] + in + \(ds : (\k a -> list (pair data data)) k b) -> + letrec + !goLeft : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goLeft tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (This {a} {b} (`$dUnsafeFromData` v)))) + (goLeft tl)) + {all dead. dead}) + , [] ] + in + safeAppend (goLeft ds) (goRight ds) +in +\(bd : data) (bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = let + !ls : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + !rs : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + map + {bytestring} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (map + {bytestring} + {These integer integer} + {integer} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {integer} + {integer} + unIData + unIData) + `$fToDataInteger_$ctoBuiltinData` + (\(k' : These integer integer) -> + These_match + {integer} + {integer} + k' + {integer} + (\(b : integer) -> addInteger 0 b) + (\(a : integer) (b : integer) -> addInteger a b) + (\(a : integer) -> addInteger 0 a))) + (map + {bytestring} + {These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta)) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {These integer integer}) + (\(k : + These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)) -> + These_match + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + k + {(\k a -> list (pair data data)) + bytestring + (These integer integer)} + (\(b : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> That {integer} {integer} ds) + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) + (b : (\k a -> list (pair data data)) bytestring integer) -> + union + {bytestring} + {integer} + {integer} + unIData + unIData + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + a + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> This {integer} {integer} ds) + a)) + (union + {bytestring} + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + ls + rs)) + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..4bfc7ccdca8 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S1_nonbuiltin.golden.uplc @@ -0,0 +1,318 @@ +(program + 1.1.0 + ((\map -> + (\`$fToDataMap_$ctoBuiltinData` -> + (\`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` -> + (\`$fToDataThese_$ctoBuiltinData` -> + (\`$fToDataInteger_$ctoBuiltinData` -> + (\safeAppend + bd + bd -> + (\lookup' -> + (\value -> + case + (lookup' (B #) value) + [ (\a -> + case + (lookup' (B #) (unMapData a)) + [(\a -> unIData a), 0]) + , 0 ]) + ((\ls -> + (\rs -> + case + (constr 0 + [ (\eta -> unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , (case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + unIData + unIData) + , `$fToDataInteger_$ctoBuiltinData` + , (\k' -> + case + k' + [ (\b -> addInteger 0 b) + , (\a b -> addInteger a b) + , (\a -> + addInteger 0 a) ]) ]) + [map]) + , ((\union -> + case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + (\eta -> unMapData eta) + (\eta -> unMapData eta)) + , `$fToDataMap_$ctoBuiltinData` + , (\k -> + case + k + [ (\b -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 0 + [ds]) + , b ]) + [map]) + , (\a + b -> + case + (constr 0 + [ unIData + , unIData + , `$fToDataInteger_$ctoBuiltinData` + , `$fToDataInteger_$ctoBuiltinData` + , a + , b ]) + [union]) + , (\a -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 2 + [ds]) + , a ]) + [map]) ]) + , (case + (constr 0 + [ (\eta -> + unMapData eta) + , (\eta -> + unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , `$fToDataMap_$ctoBuiltinData` + , ls + , rs ]) + [union]) ]) + [map]) + (\`$dUnsafeFromData` + `$dUnsafeFromData` + `$dToData` + `$dToData` + ds -> + (\goRight + ds -> + safeAppend + ((\s -> + s s ds) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 2 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l + r -> + r) ])) + , [] ])) + (goRight ds)) + ((\s -> + s s) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 0 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l r -> + r) ])) + , [] ])))) ]) + [map]) + (unMapData bd)) + (unMapData bd))) + (\k -> + (\go m -> go m) + ((\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])))) + ((\s -> s s) + (\s xs xs -> + case + xs + [ (\hd tl -> + (\v -> + (\k -> + (\eta -> + (\cse -> + (\nilCase -> + (\s -> s s eta) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [ (\l r -> + l) ])) + [ (\eta -> + force mkCons + hd + (s s eta)) + , cse ]) + , nilCase ])) + (cse [])) + (force mkCons (mkPairData k v))) + (case (constr 0 [s, tl, xs]) [s])) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) + , xs ]))) + (\i -> iData i)) + (\`$dToData` `$dToData` ds -> + case + ds + [ (\arg -> constrData 1 (force mkCons (`$dToData` arg) [])) + , (\arg arg -> + constrData + 2 + (force mkCons + (`$dToData` arg) + (force mkCons (`$dToData` arg) []))) + , (\arg -> + constrData 0 (force mkCons (`$dToData` arg) [])) ])) + (\`$dUnsafeFromData` `$dUnsafeFromData` d -> + case + (unConstrData d) + [ (\index args -> + case + index + [ (\ds -> + constr 2 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 0 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 1 + [ (`$dUnsafeFromData` (force headList ds)) + , (`$dUnsafeFromData` + (force headList (force tailList ds))) ]) ] + args) ])) + (\ds -> mapData ds)) + (\`$dUnsafeFromData` `$dToData` f -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd eta -> + force mkCons + (mkPairData + (case hd [(\l r -> l)]) + (`$dToData` + (f (`$dUnsafeFromData` (case hd [(\l r -> r)]))))) + (s s eta)) + , [] ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.eval new file mode 100644 index 00000000000..115582423a0 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 4_131_831 +Memory: 2_539 +AST Size: 20 +Flat Size: 320 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.pir new file mode 100644 index 00000000000..f226115fa05 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.pir @@ -0,0 +1,2 @@ +\(bd : data) (bd : data) -> + lookupCoin # # (unionValue (unValueData bd) (unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.uplc new file mode 100644 index 00000000000..c7488da8bb1 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_builtin.golden.uplc @@ -0,0 +1,6 @@ +(program + 1.1.0 + (\bd bd -> + case + (constr 0 [#, #, (unionValue (unValueData bd) (unValueData bd))]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.eval new file mode 100644 index 00000000000..c01a3541aca --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 76_596_773 +Memory: 204_555 +AST Size: 408 +Flat Size: 679 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.pir new file mode 100644 index 00000000000..08edc1b6e68 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.pir @@ -0,0 +1,268 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +let + !filterMissingOuter : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(l : list (pair data data)) (l : list (pair data data)) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + case + (list (pair data data) -> list (pair data data)) + ((let + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + letrec + !go : list (pair data data) -> bool + = \(xs : list (pair data data)) -> + case + bool + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> bool) + (equalsData + k + (case + data + hd + [ (\(l : data) (r : data) -> + l) ])) + [ (/\dead -> go) + , (/\dead -> + \(ds : + list (pair data data)) -> + True) ] + {all dead. dead}) + , False ] + in + go) + l) + [ (\(tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + , (\(tl : list (pair data data)) -> go tl) ]) + , [] ] + in + go l + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookupKeyInMap : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + go + !caseList' : all a r. r -> (a -> list a -> r) -> list a -> r + = /\a r -> \(z : r) (f : a -> list a -> r) (xs : list a) -> case r xs [f, z] +in +\(bd : data) + (bd : data) -> + let + !bd : + data + = let + !outer : list (pair data data) = unMapData bd + in + letrec + !goOuter : + list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~csData : data + = case data hd [(\(l : data) (r : data) -> l)] + in + \(tl : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + csData + (Maybe_match + {data} + (lookupKeyInMap csData outer) + {all dead. data} + (\(inner2Data : data) -> + /\dead -> + let + !i : list (pair data data) + = unMapData inner2Data + in + letrec + !goInner : + list (pair data data) -> + list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~tnData : data + = case + data + hd + [ (\(l : data) + (r : data) -> + l) ] + in + \(tl : + list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + tnData + (iData + (Maybe_match + {data} + (lookupKeyInMap + tnData + i) + {all dead. + integer} + (\(amt2Data : + data) -> + /\dead -> + addInteger + (unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + (unIData + amt2Data)) + (/\dead -> + unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + {all dead. + dead}))) + (goInner tl)) + , [] ] + in + let + !i : list (pair data data) + = unMapData + (case + data + hd + [(\(l : data) (r : data) -> r)]) + in + mapData + (letrec + !go : + list (pair data data) -> + list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter i i) + (\(hd : pair data data) + (tl : list (pair data data)) -> + mkCons + {pair data data} + hd + (go tl)) + in + go (goInner i))) + (/\dead -> + case data hd [(\(l : data) (r : data) -> r)]) + {all dead. dead})) + (goOuter tl)) + , [] ] + in + let + !outer : list (pair data data) = unMapData bd + in + mapData + (letrec + !go : list (pair data data) -> list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter outer outer) + (\(hd : pair data data) (tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + in + go (goOuter outer)) + in + goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.uplc new file mode 100644 index 00000000000..3147aafb29d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_handrolled.golden.uplc @@ -0,0 +1,180 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter + bd + bd -> + goOuter + (unMapData + ((\outer -> + (\caseList' -> + (\lookupKeyInMap -> + (\filterMissingOuter -> + (\goOuter -> + (\outer -> + mapData + ((\s -> s s (goOuter outer)) + (\s -> + caseList' + (filterMissingOuter outer outer) + (\hd tl -> + force mkCons hd (s s tl))))) + (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case hd [(\l r -> l)]) + (case + (lookupKeyInMap + (case hd [(\l r -> l)]) + outer) + [ (\inner2Data -> + (\i -> + (\goInner -> + (\i -> + mapData + ((\s -> + s + s + (goInner + i)) + (\s -> + caseList' + (filterMissingOuter + i + i) + (\hd + tl -> + force + mkCons + hd + (s + s + tl))))) + (unMapData + (case + hd + [ (\l + r -> + r) ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case + hd + [ (\l + r -> + l) ]) + (iData + (case + (lookupKeyInMap + (case + hd + [ (\l + r -> + l) ]) + i) + [ (\amt2Data -> + addInteger + (unIData + (case + hd + [ (\l + r -> + r) ])) + (unIData + amt2Data)) + , (unIData + (case + hd + [ (\l + r -> + r) ])) ]))) + (s + s + tl)) + , [] ]))) + (unMapData + inner2Data)) + , (case hd [(\l r -> r)]) ])) + (s s tl)) + , [] ]))) + (\l l -> + (\s -> s s l) + (\s list -> + case + list + [ (\hd -> + (\k -> + (\s -> + case + (s s l) + [ (\tl -> + force mkCons hd (s s tl)) + , (\tl -> s s tl) ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> True) ]) + , False ])) + (case hd [(\l r -> l)])) + , [] ]))) + (\k -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (\z f xs -> case xs [f, z])) + (unMapData bd)))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.eval new file mode 100644 index 00000000000..ce5b1fc0914 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 87_810_607 +Memory: 302_003 +AST Size: 617 +Flat Size: 928 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.pir new file mode 100644 index 00000000000..007e3ec9923 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.pir @@ -0,0 +1,411 @@ +let + !`$fToDataInteger_$ctoBuiltinData` : integer -> data + = \(i : integer) -> iData i + data (These :: * -> * -> *) a b | These_match where + That : b -> These a b + These : a -> b -> These a b + This : a -> These a b + !`$fToDataThese_$ctoBuiltinData` : + all a b. (\a -> a -> data) a -> (\a -> a -> data) b -> These a b -> data + = /\a b -> + \(`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : These a b) -> + These_match + {a} + {b} + ds + {data} + (\(arg : b) -> constrData 1 (mkCons {data} (`$dToData` arg) [])) + (\(arg : a) (arg : b) -> + constrData + 2 + (mkCons + {data} + (`$dToData` arg) + (mkCons {data} (`$dToData` arg) []))) + (\(arg : a) -> constrData 0 (mkCons {data} (`$dToData` arg) [])) + ~`$dToData` : These integer integer -> data + = `$fToDataThese_$ctoBuiltinData` + {integer} + {integer} + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + !`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` : + all a b. (\a -> data -> a) a -> (\a -> data -> a) b -> data -> These a b + = /\a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (d : data) -> + (let + b = list data + in + /\r -> + \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) + {These a b} + (unConstrData d) + (\(index : integer) (args : list data) -> + case + (list data -> These a b) + index + [ (\(ds : list data) -> + This {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + That {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + These + {a} + {b} + (`$dUnsafeFromData` (headList {data} ds)) + (`$dUnsafeFromData` + (headList {data} (tailList {data} ds)))) ] + args) + !`$fToDataMap_$ctoBuiltinData` : + all k a. (\k a -> list (pair data data)) k a -> data + = /\k a -> \(ds : (\k a -> list (pair data data)) k a) -> mapData ds + !map : + all k a b. + (\a -> data -> a) a -> + (\a -> a -> data) b -> + (a -> b) -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dToData` : (\a -> a -> data) b) + (f : a -> b) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (eta : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + (case data hd [(\(l : data) (r : data) -> l)]) + (`$dToData` + (f + (`$dUnsafeFromData` + (case + data + hd + [(\(l : data) (r : data) -> r)]))))) + (go eta)) + , [] ] + in + go +in +letrec + !safeAppend : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) (xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] + !eta : list (pair data data) = safeAppend tl xs + !nilCase : list (pair data data) + = mkCons {pair data data} (mkPairData k v) [] + in + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> + list (pair data data)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) + [ (/\dead -> + \(eta : list (pair data data)) -> + mkCons {pair data data} hd (go eta)) + , (/\dead -> + mkCons {pair data data} (mkPairData k v)) ] + {all dead. dead}) + , nilCase ] + in + go eta) + , xs ] +in +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + \(m : list (pair data data)) -> go m + !union : + all k a b. + (\a -> data -> a) a -> + (\a -> data -> a) b -> + (\a -> a -> data) a -> + (\a -> a -> data) b -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b -> + (\k a -> list (pair data data)) k (These a b) + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : (\k a -> list (pair data data)) k a) -> + letrec + !goRight : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goRight tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (That {a} {b} (`$dUnsafeFromData` v)))) + (goRight tl)) + {all dead. dead}) + , [] ] + in + \(ds : (\k a -> list (pair data data)) k b) -> + letrec + !goLeft : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goLeft tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (This {a} {b} (`$dUnsafeFromData` v)))) + (goLeft tl)) + {all dead. dead}) + , [] ] + in + safeAppend (goLeft ds) (goRight ds) +in +\(bd : data) (bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = let + !ls : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + !rs : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + map + {bytestring} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (map + {bytestring} + {These integer integer} + {integer} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {integer} + {integer} + unIData + unIData) + `$fToDataInteger_$ctoBuiltinData` + (\(k' : These integer integer) -> + These_match + {integer} + {integer} + k' + {integer} + (\(b : integer) -> addInteger 0 b) + (\(a : integer) (b : integer) -> addInteger a b) + (\(a : integer) -> addInteger 0 a))) + (map + {bytestring} + {These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta)) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {These integer integer}) + (\(k : + These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)) -> + These_match + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + k + {(\k a -> list (pair data data)) + bytestring + (These integer integer)} + (\(b : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> That {integer} {integer} ds) + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) + (b : (\k a -> list (pair data data)) bytestring integer) -> + union + {bytestring} + {integer} + {integer} + unIData + unIData + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + a + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> This {integer} {integer} ds) + a)) + (union + {bytestring} + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + ls + rs)) + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..4bfc7ccdca8 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S3_nonbuiltin.golden.uplc @@ -0,0 +1,318 @@ +(program + 1.1.0 + ((\map -> + (\`$fToDataMap_$ctoBuiltinData` -> + (\`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` -> + (\`$fToDataThese_$ctoBuiltinData` -> + (\`$fToDataInteger_$ctoBuiltinData` -> + (\safeAppend + bd + bd -> + (\lookup' -> + (\value -> + case + (lookup' (B #) value) + [ (\a -> + case + (lookup' (B #) (unMapData a)) + [(\a -> unIData a), 0]) + , 0 ]) + ((\ls -> + (\rs -> + case + (constr 0 + [ (\eta -> unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , (case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + unIData + unIData) + , `$fToDataInteger_$ctoBuiltinData` + , (\k' -> + case + k' + [ (\b -> addInteger 0 b) + , (\a b -> addInteger a b) + , (\a -> + addInteger 0 a) ]) ]) + [map]) + , ((\union -> + case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + (\eta -> unMapData eta) + (\eta -> unMapData eta)) + , `$fToDataMap_$ctoBuiltinData` + , (\k -> + case + k + [ (\b -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 0 + [ds]) + , b ]) + [map]) + , (\a + b -> + case + (constr 0 + [ unIData + , unIData + , `$fToDataInteger_$ctoBuiltinData` + , `$fToDataInteger_$ctoBuiltinData` + , a + , b ]) + [union]) + , (\a -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 2 + [ds]) + , a ]) + [map]) ]) + , (case + (constr 0 + [ (\eta -> + unMapData eta) + , (\eta -> + unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , `$fToDataMap_$ctoBuiltinData` + , ls + , rs ]) + [union]) ]) + [map]) + (\`$dUnsafeFromData` + `$dUnsafeFromData` + `$dToData` + `$dToData` + ds -> + (\goRight + ds -> + safeAppend + ((\s -> + s s ds) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 2 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l + r -> + r) ])) + , [] ])) + (goRight ds)) + ((\s -> + s s) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 0 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l r -> + r) ])) + , [] ])))) ]) + [map]) + (unMapData bd)) + (unMapData bd))) + (\k -> + (\go m -> go m) + ((\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])))) + ((\s -> s s) + (\s xs xs -> + case + xs + [ (\hd tl -> + (\v -> + (\k -> + (\eta -> + (\cse -> + (\nilCase -> + (\s -> s s eta) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [ (\l r -> + l) ])) + [ (\eta -> + force mkCons + hd + (s s eta)) + , cse ]) + , nilCase ])) + (cse [])) + (force mkCons (mkPairData k v))) + (case (constr 0 [s, tl, xs]) [s])) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) + , xs ]))) + (\i -> iData i)) + (\`$dToData` `$dToData` ds -> + case + ds + [ (\arg -> constrData 1 (force mkCons (`$dToData` arg) [])) + , (\arg arg -> + constrData + 2 + (force mkCons + (`$dToData` arg) + (force mkCons (`$dToData` arg) []))) + , (\arg -> + constrData 0 (force mkCons (`$dToData` arg) [])) ])) + (\`$dUnsafeFromData` `$dUnsafeFromData` d -> + case + (unConstrData d) + [ (\index args -> + case + index + [ (\ds -> + constr 2 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 0 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 1 + [ (`$dUnsafeFromData` (force headList ds)) + , (`$dUnsafeFromData` + (force headList (force tailList ds))) ]) ] + args) ])) + (\ds -> mapData ds)) + (\`$dUnsafeFromData` `$dToData` f -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd eta -> + force mkCons + (mkPairData + (case hd [(\l r -> l)]) + (`$dToData` + (f (`$dUnsafeFromData` (case hd [(\l r -> r)]))))) + (s s eta)) + , [] ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.eval new file mode 100644 index 00000000000..38c10ad76ae --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.eval @@ -0,0 +1,6 @@ +CPU: 9_766_539 +Memory: 3_189 +AST Size: 20 +Flat Size: 980 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.pir new file mode 100644 index 00000000000..f226115fa05 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.pir @@ -0,0 +1,2 @@ +\(bd : data) (bd : data) -> + lookupCoin # # (unionValue (unValueData bd) (unValueData bd)) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.uplc new file mode 100644 index 00000000000..c7488da8bb1 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_builtin.golden.uplc @@ -0,0 +1,6 @@ +(program + 1.1.0 + (\bd bd -> + case + (constr 0 [#, #, (unionValue (unValueData bd) (unValueData bd))]) + [lookupCoin])) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.eval new file mode 100644 index 00000000000..85112662410 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.eval @@ -0,0 +1,6 @@ +CPU: 613_288_603 +Memory: 1_168_830 +AST Size: 408 +Flat Size: 1_339 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.pir new file mode 100644 index 00000000000..08edc1b6e68 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.pir @@ -0,0 +1,268 @@ +letrec + !goInner : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goInner) + , (/\dead -> + \(ds : list (pair data data)) -> + unIData + (case data hd [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , 0 ] +in +letrec + !goOuter : list (pair data data) -> integer + = \(list : list (pair data data)) -> + case + integer + list + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> integer) + (equalsByteString + # + (unBData (case data hd [(\(l : data) (r : data) -> l)]))) + [ (/\dead -> goOuter) + , (/\dead -> + \(ds : list (pair data data)) -> + goInner + (unMapData + (case data hd [(\(l : data) (r : data) -> r)]))) ] + {all dead. dead}) + , 0 ] +in +let + !filterMissingOuter : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(l : list (pair data data)) (l : list (pair data data)) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + case + (list (pair data data) -> list (pair data data)) + ((let + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + letrec + !go : list (pair data data) -> bool + = \(xs : list (pair data data)) -> + case + bool + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> bool) + (equalsData + k + (case + data + hd + [ (\(l : data) (r : data) -> + l) ])) + [ (/\dead -> go) + , (/\dead -> + \(ds : + list (pair data data)) -> + True) ] + {all dead. dead}) + , False ] + in + go) + l) + [ (\(tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + , (\(tl : list (pair data data)) -> go tl) ]) + , [] ] + in + go l + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookupKeyInMap : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + go + !caseList' : all a r. r -> (a -> list a -> r) -> list a -> r + = /\a r -> \(z : r) (f : a -> list a -> r) (xs : list a) -> case r xs [f, z] +in +\(bd : data) + (bd : data) -> + let + !bd : + data + = let + !outer : list (pair data data) = unMapData bd + in + letrec + !goOuter : + list (pair data data) -> list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~csData : data + = case data hd [(\(l : data) (r : data) -> l)] + in + \(tl : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + csData + (Maybe_match + {data} + (lookupKeyInMap csData outer) + {all dead. data} + (\(inner2Data : data) -> + /\dead -> + let + !i : list (pair data data) + = unMapData inner2Data + in + letrec + !goInner : + list (pair data data) -> + list (pair data data) + = \(list : list (pair data data)) -> + case + (list (pair data data)) + list + [ (\(hd : pair data data) -> + let + ~tnData : data + = case + data + hd + [ (\(l : data) + (r : data) -> + l) ] + in + \(tl : + list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + tnData + (iData + (Maybe_match + {data} + (lookupKeyInMap + tnData + i) + {all dead. + integer} + (\(amt2Data : + data) -> + /\dead -> + addInteger + (unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + (unIData + amt2Data)) + (/\dead -> + unIData + (case + data + hd + [ (\(l : + data) + (r : + data) -> + r) ])) + {all dead. + dead}))) + (goInner tl)) + , [] ] + in + let + !i : list (pair data data) + = unMapData + (case + data + hd + [(\(l : data) (r : data) -> r)]) + in + mapData + (letrec + !go : + list (pair data data) -> + list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter i i) + (\(hd : pair data data) + (tl : list (pair data data)) -> + mkCons + {pair data data} + hd + (go tl)) + in + go (goInner i))) + (/\dead -> + case data hd [(\(l : data) (r : data) -> r)]) + {all dead. dead})) + (goOuter tl)) + , [] ] + in + let + !outer : list (pair data data) = unMapData bd + in + mapData + (letrec + !go : list (pair data data) -> list (pair data data) + = caseList' + {pair data data} + {list (pair data data)} + (filterMissingOuter outer outer) + (\(hd : pair data data) (tl : list (pair data data)) -> + mkCons {pair data data} hd (go tl)) + in + go (goOuter outer)) + in + goOuter (unMapData bd) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.uplc new file mode 100644 index 00000000000..3147aafb29d --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_handrolled.golden.uplc @@ -0,0 +1,180 @@ +(program + 1.1.0 + ((\goInner -> + (\goOuter + bd + bd -> + goOuter + (unMapData + ((\outer -> + (\caseList' -> + (\lookupKeyInMap -> + (\filterMissingOuter -> + (\goOuter -> + (\outer -> + mapData + ((\s -> s s (goOuter outer)) + (\s -> + caseList' + (filterMissingOuter outer outer) + (\hd tl -> + force mkCons hd (s s tl))))) + (unMapData bd)) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case hd [(\l r -> l)]) + (case + (lookupKeyInMap + (case hd [(\l r -> l)]) + outer) + [ (\inner2Data -> + (\i -> + (\goInner -> + (\i -> + mapData + ((\s -> + s + s + (goInner + i)) + (\s -> + caseList' + (filterMissingOuter + i + i) + (\hd + tl -> + force + mkCons + hd + (s + s + tl))))) + (unMapData + (case + hd + [ (\l + r -> + r) ]))) + ((\s -> + s s) + (\s + list -> + case + list + [ (\hd + tl -> + force + mkCons + (mkPairData + (case + hd + [ (\l + r -> + l) ]) + (iData + (case + (lookupKeyInMap + (case + hd + [ (\l + r -> + l) ]) + i) + [ (\amt2Data -> + addInteger + (unIData + (case + hd + [ (\l + r -> + r) ])) + (unIData + amt2Data)) + , (unIData + (case + hd + [ (\l + r -> + r) ])) ]))) + (s + s + tl)) + , [] ]))) + (unMapData + inner2Data)) + , (case hd [(\l r -> r)]) ])) + (s s tl)) + , [] ]))) + (\l l -> + (\s -> s s l) + (\s list -> + case + list + [ (\hd -> + (\k -> + (\s -> + case + (s s l) + [ (\tl -> + force mkCons hd (s s tl)) + , (\tl -> s s tl) ]) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> True) ]) + , False ])) + (case hd [(\l r -> l)])) + , [] ]))) + (\k -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData k (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ]))) + (\z f xs -> case xs [f, z])) + (unMapData bd)))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [ (\x -> s s x) + , (\ds -> + goInner (unMapData (case hd [(\l r -> r)]))) ]) + , 0 ]))) + ((\s -> s s) + (\s list -> + case + list + [ (\hd -> + case + (equalsByteString # (unBData (case hd [(\l r -> l)]))) + [(\x -> s s x), (\ds -> unIData (case hd [(\l r -> r)]))]) + , 0 ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.eval b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.eval new file mode 100644 index 00000000000..1b2b23645cb --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.eval @@ -0,0 +1,6 @@ +CPU: 313_714_512 +Memory: 895_158 +AST Size: 617 +Flat Size: 1_588 + +(con integer 2000000) \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.pir b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.pir new file mode 100644 index 00000000000..007e3ec9923 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.pir @@ -0,0 +1,411 @@ +let + !`$fToDataInteger_$ctoBuiltinData` : integer -> data + = \(i : integer) -> iData i + data (These :: * -> * -> *) a b | These_match where + That : b -> These a b + These : a -> b -> These a b + This : a -> These a b + !`$fToDataThese_$ctoBuiltinData` : + all a b. (\a -> a -> data) a -> (\a -> a -> data) b -> These a b -> data + = /\a b -> + \(`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : These a b) -> + These_match + {a} + {b} + ds + {data} + (\(arg : b) -> constrData 1 (mkCons {data} (`$dToData` arg) [])) + (\(arg : a) (arg : b) -> + constrData + 2 + (mkCons + {data} + (`$dToData` arg) + (mkCons {data} (`$dToData` arg) []))) + (\(arg : a) -> constrData 0 (mkCons {data} (`$dToData` arg) [])) + ~`$dToData` : These integer integer -> data + = `$fToDataThese_$ctoBuiltinData` + {integer} + {integer} + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + !`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` : + all a b. (\a -> data -> a) a -> (\a -> data -> a) b -> data -> These a b + = /\a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (d : data) -> + (let + b = list data + in + /\r -> + \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) + {These a b} + (unConstrData d) + (\(index : integer) (args : list data) -> + case + (list data -> These a b) + index + [ (\(ds : list data) -> + This {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + That {a} {b} (`$dUnsafeFromData` (headList {data} ds))) + , (\(ds : list data) -> + These + {a} + {b} + (`$dUnsafeFromData` (headList {data} ds)) + (`$dUnsafeFromData` + (headList {data} (tailList {data} ds)))) ] + args) + !`$fToDataMap_$ctoBuiltinData` : + all k a. (\k a -> list (pair data data)) k a -> data + = /\k a -> \(ds : (\k a -> list (pair data data)) k a) -> mapData ds + !map : + all k a b. + (\a -> data -> a) a -> + (\a -> a -> data) b -> + (a -> b) -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dToData` : (\a -> a -> data) b) + (f : a -> b) -> + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (eta : list (pair data data)) -> + mkCons + {pair data data} + (mkPairData + (case data hd [(\(l : data) (r : data) -> l)]) + (`$dToData` + (f + (`$dUnsafeFromData` + (case + data + hd + [(\(l : data) (r : data) -> r)]))))) + (go eta)) + , [] ] + in + go +in +letrec + !safeAppend : + list (pair data data) -> list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) (xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] + !eta : list (pair data data) = safeAppend tl xs + !nilCase : list (pair data data) + = mkCons {pair data data} (mkPairData k v) [] + in + letrec + !go : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) -> + case + (all dead. + list (pair data data) -> + list (pair data data)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) + [ (/\dead -> + \(eta : list (pair data data)) -> + mkCons {pair data data} hd (go eta)) + , (/\dead -> + mkCons {pair data data} (mkPairData k v)) ] + {all dead. dead}) + , nilCase ] + in + go eta) + , xs ] +in +let + data (Maybe :: * -> *) a | Maybe_match where + Just : a -> Maybe a + Nothing : Maybe a + !lookup' : data -> list (pair data data) -> Maybe data + = \(k : data) -> + letrec + !go : list (pair data data) -> Maybe data + = \(xs : list (pair data data)) -> + case + (Maybe data) + xs + [ (\(hd : pair data data) -> + case + (all dead. list (pair data data) -> Maybe data) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) + [ (/\dead -> go) + , (/\dead -> + \(ds : list (pair data data)) -> + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] + {all dead. dead}) + , (Nothing {data}) ] + in + \(m : list (pair data data)) -> go m + !union : + all k a b. + (\a -> data -> a) a -> + (\a -> data -> a) b -> + (\a -> a -> data) a -> + (\a -> a -> data) b -> + (\k a -> list (pair data data)) k a -> + (\k a -> list (pair data data)) k b -> + (\k a -> list (pair data data)) k (These a b) + = /\k a b -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) + (`$dUnsafeFromData` : (\a -> data -> a) b) + (`$dToData` : (\a -> a -> data) a) + (`$dToData` : (\a -> a -> data) b) + (ds : (\k a -> list (pair data data)) k a) -> + letrec + !goRight : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goRight tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (That {a} {b} (`$dUnsafeFromData` v)))) + (goRight tl)) + {all dead. dead}) + , [] ] + in + \(ds : (\k a -> list (pair data data)) k b) -> + letrec + !goLeft : list (pair data data) -> list (pair data data) + = \(xs : list (pair data data)) -> + case + (list (pair data data)) + xs + [ (\(hd : pair data data) (tl : list (pair data data)) -> + let + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] + in + Maybe_match + {data} + (lookup' k ds) + {all dead. list (pair data data)} + (\(r : data) -> + /\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (These + {a} + {b} + (`$dUnsafeFromData` v) + (`$dUnsafeFromData` r)))) + (goLeft tl)) + (/\dead -> + mkCons + {pair data data} + (mkPairData + k + (`$fToDataThese_$ctoBuiltinData` + {a} + {b} + `$dToData` + `$dToData` + (This {a} {b} (`$dUnsafeFromData` v)))) + (goLeft tl)) + {all dead. dead}) + , [] ] + in + safeAppend (goLeft ds) (goRight ds) +in +\(bd : data) (bd : data) -> + let + !value : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = let + !ls : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + !rs : + (\k a -> list (pair data data)) + bytestring + ((\k a -> list (pair data data)) bytestring integer) + = unMapData bd + in + map + {bytestring} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (map + {bytestring} + {These integer integer} + {integer} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {integer} + {integer} + unIData + unIData) + `$fToDataInteger_$ctoBuiltinData` + (\(k' : These integer integer) -> + These_match + {integer} + {integer} + k' + {integer} + (\(b : integer) -> addInteger 0 b) + (\(a : integer) (b : integer) -> addInteger a b) + (\(a : integer) -> addInteger 0 a))) + (map + {bytestring} + {These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)} + {(\k a -> list (pair data data)) bytestring (These integer integer)} + (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta)) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {These integer integer}) + (\(k : + These + ((\k a -> list (pair data data)) bytestring integer) + ((\k a -> list (pair data data)) bytestring integer)) -> + These_match + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + k + {(\k a -> list (pair data data)) + bytestring + (These integer integer)} + (\(b : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> That {integer} {integer} ds) + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) + (b : (\k a -> list (pair data data)) bytestring integer) -> + union + {bytestring} + {integer} + {integer} + unIData + unIData + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + a + b) + (\(a : (\k a -> list (pair data data)) bytestring integer) -> + map + {bytestring} + {integer} + {These integer integer} + unIData + `$dToData` + (\(ds : integer) -> This {integer} {integer} ds) + a)) + (union + {bytestring} + {(\k a -> list (pair data data)) bytestring integer} + {(\k a -> list (pair data data)) bytestring integer} + (\(eta : data) -> unMapData eta) + (\(eta : data) -> unMapData eta) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + (`$fToDataMap_$ctoBuiltinData` {bytestring} {integer}) + ls + rs)) + in + Maybe_match + {data} + (lookup' (B #) value) + {integer} + (\(a : data) -> + let + !m : list (pair data data) = unMapData a + in + Maybe_match + {data} + (lookup' (B #) m) + {integer} + (\(a : data) -> unIData a) + 0) + 0 \ No newline at end of file diff --git a/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.uplc b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.uplc new file mode 100644 index 00000000000..4bfc7ccdca8 --- /dev/null +++ b/plutus-tx-plugin/test-ledger-api/Spec/Data/Value/Budget/9.6/union_S8_nonbuiltin.golden.uplc @@ -0,0 +1,318 @@ +(program + 1.1.0 + ((\map -> + (\`$fToDataMap_$ctoBuiltinData` -> + (\`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` -> + (\`$fToDataThese_$ctoBuiltinData` -> + (\`$fToDataInteger_$ctoBuiltinData` -> + (\safeAppend + bd + bd -> + (\lookup' -> + (\value -> + case + (lookup' (B #) value) + [ (\a -> + case + (lookup' (B #) (unMapData a)) + [(\a -> unIData a), 0]) + , 0 ]) + ((\ls -> + (\rs -> + case + (constr 0 + [ (\eta -> unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , (case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + unIData + unIData) + , `$fToDataInteger_$ctoBuiltinData` + , (\k' -> + case + k' + [ (\b -> addInteger 0 b) + , (\a b -> addInteger a b) + , (\a -> + addInteger 0 a) ]) ]) + [map]) + , ((\union -> + case + (constr 0 + [ (`$fUnsafeFromDataThese_$cunsafeFromBuiltinData` + (\eta -> unMapData eta) + (\eta -> unMapData eta)) + , `$fToDataMap_$ctoBuiltinData` + , (\k -> + case + k + [ (\b -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 0 + [ds]) + , b ]) + [map]) + , (\a + b -> + case + (constr 0 + [ unIData + , unIData + , `$fToDataInteger_$ctoBuiltinData` + , `$fToDataInteger_$ctoBuiltinData` + , a + , b ]) + [union]) + , (\a -> + case + (constr 0 + [ unIData + , (`$fToDataThese_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData` + `$fToDataInteger_$ctoBuiltinData`) + , (\ds -> + constr 2 + [ds]) + , a ]) + [map]) ]) + , (case + (constr 0 + [ (\eta -> + unMapData eta) + , (\eta -> + unMapData eta) + , `$fToDataMap_$ctoBuiltinData` + , `$fToDataMap_$ctoBuiltinData` + , ls + , rs ]) + [union]) ]) + [map]) + (\`$dUnsafeFromData` + `$dUnsafeFromData` + `$dToData` + `$dToData` + ds -> + (\goRight + ds -> + safeAppend + ((\s -> + s s ds) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 2 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l + r -> + r) ])) + , [] ])) + (goRight ds)) + ((\s -> + s s) + (\s + xs -> + case + xs + [ (\hd + tl -> + (\v -> + (\k -> + case + (lookup' + k + ds) + [ (\r -> + force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 1 + [ (`$dUnsafeFromData` + v) + , (`$dUnsafeFromData` + r) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) + , (force + mkCons + (mkPairData + k + (case + (constr 0 + [ `$dToData` + , `$dToData` + , (constr 0 + [ (`$dUnsafeFromData` + v) ]) ]) + [ `$fToDataThese_$ctoBuiltinData` ])) + (s + s + tl)) ]) + (case + hd + [ (\l + r -> + l) ])) + (case + hd + [ (\l r -> + r) ])) + , [] ])))) ]) + [map]) + (unMapData bd)) + (unMapData bd))) + (\k -> + (\go m -> go m) + ((\s -> s s) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case hd [(\l r -> l)])) + [ (\x -> s s x) + , (\ds -> + constr 0 + [(case hd [(\l r -> r)])]) ]) + , (constr 1 []) ])))) + ((\s -> s s) + (\s xs xs -> + case + xs + [ (\hd tl -> + (\v -> + (\k -> + (\eta -> + (\cse -> + (\nilCase -> + (\s -> s s eta) + (\s xs -> + case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [ (\l r -> + l) ])) + [ (\eta -> + force mkCons + hd + (s s eta)) + , cse ]) + , nilCase ])) + (cse [])) + (force mkCons (mkPairData k v))) + (case (constr 0 [s, tl, xs]) [s])) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) + , xs ]))) + (\i -> iData i)) + (\`$dToData` `$dToData` ds -> + case + ds + [ (\arg -> constrData 1 (force mkCons (`$dToData` arg) [])) + , (\arg arg -> + constrData + 2 + (force mkCons + (`$dToData` arg) + (force mkCons (`$dToData` arg) []))) + , (\arg -> + constrData 0 (force mkCons (`$dToData` arg) [])) ])) + (\`$dUnsafeFromData` `$dUnsafeFromData` d -> + case + (unConstrData d) + [ (\index args -> + case + index + [ (\ds -> + constr 2 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 0 + [(`$dUnsafeFromData` (force headList ds))]) + , (\ds -> + constr 1 + [ (`$dUnsafeFromData` (force headList ds)) + , (`$dUnsafeFromData` + (force headList (force tailList ds))) ]) ] + args) ])) + (\ds -> mapData ds)) + (\`$dUnsafeFromData` `$dToData` f -> + (\s -> s s) + (\s xs -> + case + xs + [ (\hd eta -> + force mkCons + (mkPairData + (case hd [(\l r -> l)]) + (`$dToData` + (f (`$dUnsafeFromData` (case hd [(\l r -> r)]))))) + (s s eta)) + , [] ])))) \ No newline at end of file