diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.cbor.size.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.cbor.size.golden index a2701637a2b..144f5b6f6a8 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.cbor.size.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.cbor.size.golden @@ -1 +1 @@ -2045 \ No newline at end of file +2047 \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.large.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.large.budget.golden index bc34b18cddb..36989c0aaae 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.large.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.large.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 406467137, exBudgetMemory = ExMemory 2070956} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 406515137, exBudgetMemory = ExMemory 2071256} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.pir.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.pir.golden index 3d1efc3e3d8..4a40dc8a3a8 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.pir.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.pir.golden @@ -488,21 +488,11 @@ program all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - (let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] in letrec ~matchData_go : list (pair data data) -> List (Tuple2 data data) @@ -516,10 +506,12 @@ program (\(x : pair data data) (xs : list (pair data data)) -> Cons {Tuple2 data data} - (case - (Tuple2 data data) + ((let + r = Tuple2 data data + in + \(p : pair data data) (f : data -> data -> r) -> case r p [f]) x - [(\(l : data) (r : data) -> Tuple2 {data} {data} l r)]) + (\(l : data) (r : data) -> Tuple2 {data} {data} l r)) (matchData_go xs)) in let diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.small.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.small.budget.golden index 1effc5dfb73..c8078f92bfe 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.small.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.small.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 60269664, exBudgetMemory = ExMemory 276518} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 60317664, exBudgetMemory = ExMemory 276818} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.uplc.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.uplc.golden index ffac3bdc61d..c22dcc9bc36 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.uplc.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/sorted.uplc.golden @@ -39,693 +39,706 @@ program (\cse -> (\cse -> (\cse -> - (\fun - ds -> - case - ((\cse -> - case - (equalsInteger - 0 - (case - cse - [ (\l - r -> - l) ])) - [ (case - (equalsInteger - 2 - (case - cse - [ (\l - r -> - l) ])) - [ error - , ((\l -> - constr 1 - [ ]) - (case - cse - [ (\l - r -> - r) ])) ]) - , (constr 0 - [ (force - matchData_go - (unMapData - (force - headList + (\cse -> + (\fun + ds -> + case + ((\cse -> + case + (equalsInteger + 0 + (case + cse + [ (\l + r -> + l) ])) + [ (case + (equalsInteger + 2 + (case + cse + [ (\l + r -> + l) ])) + [ error + , ((\l -> + constr 1 + [ ]) + (case + cse + [ (\l + r -> + r) ])) ]) + , (constr 0 + [ (force + matchData_go + (unMapData (force - tailList - (case - cse - [ (\l - r -> - r) ]))))) ]) ]) - (unConstrData - (force - headList + headList + (force + tailList + (case + cse + [ (\l + r -> + r) ]))))) ]) ]) + (unConstrData (force - tailList + headList (force tailList - (case - (unConstrData - ((\tup -> - case - (equalsInteger - 5 - (case - tup - [ (\l - r -> - l) ])) - [ error - , (force - headList - (force - tailList - (case - tup - [ (\l - r -> - r) ]))) ]) - (unConstrData - (force - headList + (force + tailList + (case + (unConstrData + ((\tup -> + case + (equalsInteger + 5 + (case + tup + [ (\l + r -> + l) ])) + [ error + , (force + headList + (force + tailList + (case + tup + [ (\l + r -> + r) ]))) ]) + (unConstrData (force - tailList + headList (force tailList - (case - (unConstrData - ds) - [ (\l - r -> - r) ]))))))) - [ (\l - r -> - r) ])))))) - [ (\cparams -> - case - (fun - cparams) - [ error - , () ]) - , () ]) - (runRules - (constr 1 - [ (constr 0 - [ 0 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 30 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 1000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 1 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 100000 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 10000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 2 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 24576 - , (constr 0 - [ ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 122880 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 3 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 32768 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 4 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 5000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 5 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 1000000 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 5000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 6 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 250000000 - , cse ]) ]) - , cse ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 7 - , (constr 1 - [ (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 8 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 250 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 2000 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 9 - , (constr 3 - [ (constr 1 - [ cse - , cse ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 10 - , (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 1000) - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 200) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 11 - , (constr 3 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 10) - , cse ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 16 - , (constr 1 - [ (constr 1 - [ cse - , cse ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 17 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 3000 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 6500 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 18 - , (constr 0 - [ ]) ]) - , (constr 1 - [ (constr 0 - [ 19 - , (constr 2 - [ (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 25) - , (constr 0 - [ ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 5) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 20000) - , (constr 0 - [ ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 5000) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 20 - , (constr 2 - [ (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 40000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 15000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 21 - , (constr 2 - [ (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 120000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 40000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 22 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 12288 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 23 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 100 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 200 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 24 - , (constr 1 - [ (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 25 - , (constr 2 - [ (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , cse ]) ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 26 - , (constr 2 - [ (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ (unsafeRatio - 13 - 20) - , (constr 0 - [ ]) ]) ]) ]) - , cse ]) ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , cse ]) ]) - , cse ]) ]) - , cse ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 27 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 0 - , (constr 1 - [ 3 - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 10 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 28 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 0 - , (constr 1 - [ 18 - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 293 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 29 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 15 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 30 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 10000000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 31 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 100000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 32 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 13 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 37 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 33 - , (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , cse ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (unsafeRatio - 1000 - 1) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]))) + (force + tailList + (case + (unConstrData + ds) + [ (\l + r -> + r) ]))))))) + [ (\l + r -> + r) ])))))) + [ (\cparams -> + case + (fun + cparams) + [ error + , () ]) + , () ]) + (runRules + (constr 1 + [ (constr 0 + [ 0 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 30 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 1000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 1 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 100000 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 10000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 2 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 24576 + , (constr 0 + [ ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 122880 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 3 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 32768 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 4 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 5000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 5 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 1000000 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 5000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 6 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 250000000 + , cse ]) ]) + , cse ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 7 + , (constr 1 + [ (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 8 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 250 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 2000 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 9 + , (constr 3 + [ (constr 1 + [ cse + , cse ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 10 + , (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ (cse + 1000) + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 200) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 11 + , (constr 3 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 10) + , cse ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 16 + , (constr 1 + [ (constr 1 + [ cse + , cse ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 17 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 3000 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 6500 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 18 + , (constr 0 + [ ]) ]) + , (constr 1 + [ (constr 0 + [ 19 + , (constr 2 + [ (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ (cse + 25) + , (constr 0 + [ ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 5) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ (cse + 20000) + , (constr 0 + [ ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 5000) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 20 + , (constr 2 + [ (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 40000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 15000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 21 + , (constr 2 + [ (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 120000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 40000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 22 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 12288 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 23 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 100 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 200 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 24 + , (constr 1 + [ (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 25 + , (constr 2 + [ (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , cse ]) ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 26 + , (constr 2 + [ (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ (unsafeRatio + 13 + 20) + , (constr 0 + [ ]) ]) ]) ]) + , cse ]) ]) + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , cse ]) ]) + , cse ]) ]) + , cse ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 27 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 0 + , (constr 1 + [ 3 + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 10 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 28 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 0 + , (constr 1 + [ 18 + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 293 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 29 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 15 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 30 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 10000000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 31 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 100000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 32 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 13 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 37 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 33 + , (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , cse ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (unsafeRatio + 1000 + 1) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]))) + (constr 3 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , cse ]) ]) + , (constr 0 + [ ]) ]) ]) ])) (constr 3 [ (constr 1 [ cse @@ -744,81 +757,72 @@ program (constr 3 [ (constr 1 [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ cse - , cse ]) ]) - , (constr 0 - [ ]) ]) ]) ])) - (constr 3 - [ (constr 1 - [ cse - , cse ]) ])) + , cse ]) ])) + (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) + , (constr 0 + [ ]) ])) (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) , (constr 0 [ ]) ])) - (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) + (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse , (constr 1 [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ])) + , (constr 0 + [ ]) ]) ]) ])) (constr 0 [ (constr 1 [ ]) , (constr 1 [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 10) - , cse ]) ])) - (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , cse ]) - , (constr 0 - [ ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 0 - , (constr 1 - [ 1000000 - , (constr 0 - [ ]) ]) ]) ])) + , cse ]) ])) + (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , cse ]) + , (constr 0 + [ ]) ])) + (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 0 + , (constr 1 + [ 1000000 + , (constr 0 + [ ]) ]) ]) ])) + (constr 1 + [ (constr 0 + [ (constr 2 + [ ]) + , cse ]) + , (constr 0 + [ ]) ])) (constr 1 - [ (constr 0 - [ (constr 2 - [ ]) - , cse ]) + [ cse , (constr 0 [ ]) ])) (constr 1 @@ -839,35 +843,34 @@ program [ cse , (constr 0 [ ]) ])) - (constr 1 - [ cse - , (constr 0 - [ ]) ])) + (cse + 2)) (cse 10)) (cse - 5)) - (cse 2)) - (cse 100)) - (cse 1)) - (constr 0 - [ (constr 1 []) - , cse ])) + 10)) + (constr 0 + [ (constr 1 + [ ]) + , cse ])) + (cse 1)) + (cse 4)) + (cse 100)) (constr 0 [ (constr 1 []) , (constr 1 [ 1 , (constr 0 [ ]) ]) ])) - (cse 1)) - (cse 4)) - (unsafeRatio 9)) + (cse 5)) + (cse 1)) + (unsafeRatio 51)) (unsafeRatio 4)) - (unsafeRatio 0)) - (unsafeRatio 1)) - (unsafeRatio 3)) + (unsafeRatio 3)) + (unsafeRatio 9)) + (unsafeRatio 1)) (constr 1 [0, (constr 0 [])])) - (unsafeRatio 51)) + (unsafeRatio 0)) ((\s -> s s) (\s arg -> delay diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.cbor.size.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.cbor.size.golden index 94589f6139c..0a5d03c1fdf 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.cbor.size.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.cbor.size.golden @@ -1 +1 @@ -2041 \ No newline at end of file +2039 \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.large.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.large.budget.golden index 1db796d20b0..3a5269ae797 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.large.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.large.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 568927992, exBudgetMemory = ExMemory 2944491} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 568879992, exBudgetMemory = ExMemory 2944191} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.pir.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.pir.golden index 793e631c952..7332f8ede69 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.pir.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.pir.golden @@ -417,21 +417,11 @@ program all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - (let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] in letrec ~matchData_go : list (pair data data) -> List (Tuple2 data data) @@ -445,10 +435,12 @@ program (\(x : pair data data) (xs : list (pair data data)) -> Cons {Tuple2 data data} - (case - (Tuple2 data data) + ((let + r = Tuple2 data data + in + \(p : pair data data) (f : data -> data -> r) -> case r p [f]) x - [(\(l : data) (r : data) -> Tuple2 {data} {data} l r)]) + (\(l : data) (r : data) -> Tuple2 {data} {data} l r)) (matchData_go xs)) in let diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.small.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.small.budget.golden index f11870c8f0a..0bc40d401ae 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.small.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.small.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 58683921, exBudgetMemory = ExMemory 267719} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 58635921, exBudgetMemory = ExMemory 267419} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.uplc.golden b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.uplc.golden index 053622a9b4f..90609c6c3d7 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.uplc.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/Data/GoldenTests/unsorted.uplc.golden @@ -37,886 +37,883 @@ program (\cse -> (\cse -> (\cse -> - (\cse -> - (\cfg -> - (\fun - ds -> - case - ((\cse -> - case - (equalsInteger - 0 - (case - cse - [ (\l - r -> - l) ])) - [ (case - (equalsInteger - 2 - (case - cse - [ (\l - r -> - l) ])) - [ error - , ((\l -> - constr 1 - [ ]) - (case - cse - [ (\l - r -> - r) ])) ]) - , (constr 0 - [ (force - matchData_go - (unMapData + (\cfg -> + (\fun + ds -> + case + ((\cse -> + case + (equalsInteger + 0 + (case + cse + [ (\l + r -> + l) ])) + [ (case + (equalsInteger + 2 + (case + cse + [ (\l + r -> + l) ])) + [ error + , ((\l -> + constr 1 + [ ]) + (case + cse + [ (\l + r -> + r) ])) ]) + , (constr 0 + [ (force + matchData_go + (unMapData + (force + headList (force - headList - (force - tailList - (case - cse - [ (\l - r -> - r) ]))))) ]) ]) - (unConstrData + tailList + (case + cse + [ (\l + r -> + r) ]))))) ]) ]) + (unConstrData + (force + headList (force - headList + tailList (force tailList - (force - tailList - (case - (unConstrData - ((\tup -> - case - (equalsInteger - 5 - (case - tup - [ (\l - r -> - l) ])) - [ error - , (force - headList - (force - tailList - (case - tup - [ (\l - r -> - r) ]))) ]) - (unConstrData + (case + (unConstrData + ((\tup -> + case + (equalsInteger + 5 + (case + tup + [ (\l + r -> + l) ])) + [ error + , (force + headList + (force + tailList + (case + tup + [ (\l + r -> + r) ]))) ]) + (unConstrData + (force + headList (force - headList + tailList (force tailList - (force - tailList - (case - (unConstrData - ds) - [ (\l - r -> - r) ]))))))) - [ (\l - r -> - r) ])))))) - [ (\cparams -> - case - (fun - cparams) - [ error - , () ]) - , () ]) - ((\go - eta -> - go - eta) - ((\s -> - s - s) - (\s - ds -> - case - ds - [ True - , (\x - xs -> - case - (case - x - [ (\ds - actualValueData -> - validateParamValue - ((\k -> - (\s -> - s - s) - (\s - ds -> - case - ds - [ error - , (\ds - xs' -> - case - ds - [ (\k' - i -> - case - (equalsInteger - k - k') - [ (s - s - xs') - , i ]) ]) ])) - (unIData - ds) - cfg) - actualValueData) ]) - [ False - , (s - s - xs) ]) ])))) - (constr 1 - [ (constr 0 - [ 0 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 30 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 1000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 1 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 100000 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 10000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 2 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 24576 - , (constr 0 - [ ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 122880 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 3 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 32768 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 4 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 5000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 5 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 1000000 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 5000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 6 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 250000000 - , cse ]) ]) - , cse ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 7 - , (constr 1 - [ (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 8 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 250 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 2000 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 9 - , (constr 3 - [ (constr 1 - [ cse - , cse ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 10 - , (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 1000) - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 200) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 11 - , (constr 3 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 10) - , cse ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 16 - , (constr 1 - [ (constr 1 - [ cse - , cse ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 17 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 3000 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 6500 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 18 - , (constr 0 - [ ]) ]) - , (constr 1 - [ (constr 0 - [ 19 - , (constr 2 - [ (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 25) - , (constr 0 - [ ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 5) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 20000) - , (constr 0 - [ ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (cse - 5000) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 20 - , (constr 2 - [ (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 40000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 15000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 21 - , (constr 2 - [ (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 120000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 40000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 22 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 12288 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 23 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 100 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 200 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 24 - , (constr 1 - [ (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 25 - , (constr 2 - [ (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , cse ]) ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 26 - , (constr 2 - [ (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ (unsafeRatio - 13 - 20) - , (constr 0 - [ ]) ]) ]) ]) - , cse ]) ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , cse ]) ]) - , cse ]) ]) - , cse ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 27 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 0 - , (constr 1 - [ 3 - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 10 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 28 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 0 - , (constr 1 - [ 18 - , (constr 0 - [ ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 293 - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 29 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 15 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 30 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 10000000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 31 - , (constr 1 - [ (constr 1 - [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 100000000000 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 32 - , (constr 1 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 13 - , cse ]) ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 37 - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 1 - [ (constr 0 - [ 33 - , (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , cse ]) - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ (unsafeRatio - 1000 - 1) - , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ])) - (constr 3 - [ (constr 1 - [ cse + (case + (unConstrData + ds) + [ (\l + r -> + r) ]))))))) + [ (\l + r -> + r) ])))))) + [ (\cparams -> + case + (fun + cparams) + [ error + , () ]) + , () ]) + ((\go + eta -> + go + eta) + ((\s -> + s + s) + (\s + ds -> + case + ds + [ True + , (\x + xs -> + case + (case + x + [ (\ds + actualValueData -> + validateParamValue + ((\k -> + (\s -> + s + s) + (\s + ds -> + case + ds + [ error + , (\ds + xs' -> + case + ds + [ (\k' + i -> + case + (equalsInteger + k + k') + [ (s + s + xs') + , i ]) ]) ])) + (unIData + ds) + cfg) + actualValueData) ]) + [ False + , (s + s + xs) ]) ])))) + (constr 1 + [ (constr 0 + [ 0 , (constr 1 - [ (constr 0 + [ (constr 1 [ (constr 0 - [ ]) + [ (constr 1 + [ ]) + , (constr 1 + [ 30 + , cse ]) ]) , (constr 1 - [ cse + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 1000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 1 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 100000 + , cse ]) ]) , (constr 1 - [ cse + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 10000000 + , (constr 0 + [ ]) ]) ]) , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ])) + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 2 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 24576 + , (constr 0 + [ ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 122880 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 3 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 32768 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 4 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 5000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 5 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 1000000 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 5000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 6 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 250000000 + , cse ]) ]) + , cse ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 7 + , (constr 1 + [ (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 8 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 250 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 2000 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 9 + , (constr 3 + [ (constr 1 + [ cse + , cse ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 10 + , (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ (cse + 1000) + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 200) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 11 + , (constr 3 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 10) + , cse ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 16 + , (constr 1 + [ (constr 1 + [ cse + , cse ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 17 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 3000 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 6500 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 18 + , (constr 0 + [ ]) ]) + , (constr 1 + [ (constr 0 + [ 19 + , (constr 2 + [ (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ (cse + 25) + , (constr 0 + [ ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 5) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ (cse + 20000) + , (constr 0 + [ ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (cse + 5000) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 20 + , (constr 2 + [ (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 40000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 15000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 21 + , (constr 2 + [ (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 120000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 40000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 22 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 12288 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 23 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 100 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 200 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 24 + , (constr 1 + [ (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 25 + , (constr 2 + [ (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , cse ]) ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 26 + , (constr 2 + [ (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ (unsafeRatio + 13 + 20) + , (constr 0 + [ ]) ]) ]) ]) + , cse ]) ]) + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 1 + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , cse ]) ]) + , cse ]) ]) + , cse ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 27 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 0 + , (constr 1 + [ 3 + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 10 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 28 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 0 + , (constr 1 + [ 18 + , (constr 0 + [ ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 293 + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 29 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 15 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 30 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 10000000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 31 + , (constr 1 + [ (constr 1 + [ cse + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 100000000000 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 32 + , (constr 1 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 13 + , cse ]) ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 37 + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 1 + [ (constr 0 + [ 33 + , (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , cse ]) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ (unsafeRatio + 1000 + 1) + , (constr 0 + [ ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ])) (constr 3 [ (constr 1 [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ cse - , cse ]) ]) - , (constr 0 - [ ]) ]) ]) ])) + , cse ]) ])) (constr 3 [ (constr 1 [ cse - , cse ]) ])) - (constr 1 - [ (constr 3 - [ (constr 1 + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ (cse + 5) + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ])) + (constr 3 + [ (constr 1 + [ cse + , (constr 1 [ (constr 0 - [ (constr 1 + [ (constr 0 [ ]) , (constr 1 [ cse - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) - , (constr 0 - [ ]) ])) + , cse ]) ]) + , (constr 0 + [ ]) ]) ]) ])) (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) + [ (constr 3 + [ (constr 1 + [ (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) , (constr 0 [ ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse + (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) , (constr 1 [ cse - , (constr 0 - [ ]) ]) ]) ])) + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ])) (constr 0 [ (constr 1 [ ]) , (constr 1 [ cse - , cse ]) ])) - (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , cse ]) - , (constr 0 - [ ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 0 - , (constr 1 - [ 1000000 - , (constr 0 - [ ]) ]) ]) ])) + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ])) + (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , cse ]) ])) + (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , cse ]) + , (constr 0 + [ ]) ])) (constr 1 - [ (constr 0 - [ (constr 2 - [ ]) - , cse ]) + [ cse , (constr 0 [ ]) ])) - (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) + (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ 0 , (constr 1 - [ 500000000 + [ 1000000 , (constr 0 - [ ]) ]) ]) - , (constr 0 - [ ]) ])) + [ ]) ]) ]) ])) (constr 1 - [ cse + [ (constr 0 + [ (constr 2 + [ ]) + , cse ]) , (constr 0 [ ]) ])) (constr 1 - [ cse + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ 500000000 + , (constr 0 + [ ]) ]) ]) , (constr 0 [ ]) ])) (constr 1 [ cse , (constr 0 [ ]) ])) - (cse - 1)) - (cse 10)) - (constr 0 - [ (constr 1 - []) - , cse ])) - (cse 4)) - (cse 1)) - (cse 10)) - (constr 0 - [ (constr 1 []) - , (constr 1 - [ 1 - , (constr 0 - []) ]) ])) - (cse 100)) - (cse 5)) - (cse 2)) - (unsafeRatio 1)) - (unsafeRatio 51)) - (unsafeRatio 4)) - (unsafeRatio 9)) - (unsafeRatio 0)) - (constr 1 [0, (constr 0 [])])) + (constr 1 + [ cse + , (constr 0 + [ ]) ])) + (cse 2)) + (cse 1)) + (cse 10)) + (constr 0 + [ (constr 1 []) + , cse ])) + (constr 0 + [ (constr 1 []) + , (constr 1 + [ 1 + , (constr 0 + [ ]) ]) ])) + (cse 4)) + (cse 10)) + (cse 100)) + (cse 1)) + (unsafeRatio 0)) + (unsafeRatio 4)) + (unsafeRatio 1)) + (unsafeRatio 51)) + (constr 1 [0, (constr 0 [])])) + (unsafeRatio 9)) (unsafeRatio 3)) ((\s -> s s) (\s arg -> diff --git a/plutus-benchmark/coop/test/9.6/authMpBurning.eval.golden b/plutus-benchmark/coop/test/9.6/authMpBurning.eval.golden index 630b1fe145c..13a65117e4e 100644 --- a/plutus-benchmark/coop/test/9.6/authMpBurning.eval.golden +++ b/plutus-benchmark/coop/test/9.6/authMpBurning.eval.golden @@ -1,6 +1,6 @@ -CPU: 160_613_384 -Memory: 799_466 -Term Size: 1_473 -Flat Size: 5_393 +CPU: 78_597_023 +Memory: 464_146 +Term Size: 951 +Flat Size: 4_946 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/coop/test/9.6/authMpMinting.eval.golden b/plutus-benchmark/coop/test/9.6/authMpMinting.eval.golden index b79bebb1044..310cb9d56cc 100644 --- a/plutus-benchmark/coop/test/9.6/authMpMinting.eval.golden +++ b/plutus-benchmark/coop/test/9.6/authMpMinting.eval.golden @@ -1,6 +1,6 @@ -CPU: 369_713_157 -Memory: 1_849_456 -Term Size: 1_473 -Flat Size: 6_790 +CPU: 198_392_236 +Memory: 1_148_576 +Term Size: 951 +Flat Size: 6_343 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/coop/test/9.6/certMpBurning.eval.golden b/plutus-benchmark/coop/test/9.6/certMpBurning.eval.golden index 7c8bd63001c..4ba66f473c7 100644 --- a/plutus-benchmark/coop/test/9.6/certMpBurning.eval.golden +++ b/plutus-benchmark/coop/test/9.6/certMpBurning.eval.golden @@ -1,6 +1,6 @@ -CPU: 1_842_342_144 -Memory: 10_767_218 -Term Size: 3_160 -Flat Size: 8_041 +CPU: 1_726_944_433 +Memory: 10_326_806 +Term Size: 2_604 +Flat Size: 7_566 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/coop/test/9.6/certMpMinting.eval.golden b/plutus-benchmark/coop/test/9.6/certMpMinting.eval.golden index 5218608f1e9..9e28694f2e9 100644 --- a/plutus-benchmark/coop/test/9.6/certMpMinting.eval.golden +++ b/plutus-benchmark/coop/test/9.6/certMpMinting.eval.golden @@ -1,6 +1,6 @@ -CPU: 400_086_379 -Memory: 2_025_456 -Term Size: 3_160 -Flat Size: 8_564 +CPU: 242_634_088 +Memory: 1_422_048 +Term Size: 2_604 +Flat Size: 8_089 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/coop/test/9.6/fsMpBurning.eval.golden b/plutus-benchmark/coop/test/9.6/fsMpBurning.eval.golden index 3d4f9a88179..eebda951f69 100644 --- a/plutus-benchmark/coop/test/9.6/fsMpBurning.eval.golden +++ b/plutus-benchmark/coop/test/9.6/fsMpBurning.eval.golden @@ -1,6 +1,6 @@ -CPU: 221_694_924 -Memory: 1_160_575 -Term Size: 3_571 -Flat Size: 7_405 +CPU: 152_437_298 +Memory: 899_055 +Term Size: 2_947 +Flat Size: 6_875 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/coop/test/9.6/fsMpMinting.eval.golden b/plutus-benchmark/coop/test/9.6/fsMpMinting.eval.golden index 2b053bf99c6..3c40ca28404 100644 --- a/plutus-benchmark/coop/test/9.6/fsMpMinting.eval.golden +++ b/plutus-benchmark/coop/test/9.6/fsMpMinting.eval.golden @@ -1,6 +1,6 @@ -CPU: 568_150_641 -Memory: 3_047_567 -Term Size: 3_571 -Flat Size: 9_223 +CPU: 422_773_415 +Memory: 2_495_655 +Term Size: 2_947 +Flat Size: 8_693 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/coop/test/9.6/mustBurnOwnSingleton.eval.golden b/plutus-benchmark/coop/test/9.6/mustBurnOwnSingleton.eval.golden index 4533b5ef006..8c372307350 100644 --- a/plutus-benchmark/coop/test/9.6/mustBurnOwnSingleton.eval.golden +++ b/plutus-benchmark/coop/test/9.6/mustBurnOwnSingleton.eval.golden @@ -1,6 +1,6 @@ -CPU: 114_113_035 -Memory: 579_805 -Term Size: 1_274 -Flat Size: 3_833 +CPU: 63_288_463 +Memory: 372_773 +Term Size: 759 +Flat Size: 3_392 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/linear-vesting/test/9.6/main.eval.golden b/plutus-benchmark/linear-vesting/test/9.6/main.eval.golden index 77a703753c2..2105b7bf14f 100644 --- a/plutus-benchmark/linear-vesting/test/9.6/main.eval.golden +++ b/plutus-benchmark/linear-vesting/test/9.6/main.eval.golden @@ -1,6 +1,6 @@ -CPU: 30_837_131 -Memory: 131_619 -Term Size: 2_421 -Flat Size: 2_860 +CPU: 26_581_286 +Memory: 114_219 +Term Size: 2_253 +Flat Size: 2_727 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/linear-vesting/test/9.6/main.pir.golden b/plutus-benchmark/linear-vesting/test/9.6/main.pir.golden index d92ab58cfb2..2b97bf61dc4 100644 --- a/plutus-benchmark/linear-vesting/test/9.6/main.pir.golden +++ b/plutus-benchmark/linear-vesting/test/9.6/main.pir.golden @@ -188,8 +188,6 @@ {all dead. dead} !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data = \(d : data) -> d - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a @@ -197,19 +195,11 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] !`$mSpendingScript` : all r. data -> (data -> Maybe data -> r) -> (unit -> r) -> r = /\r -> @@ -394,18 +384,10 @@ in case (all dead. integer) - (casePair - {integer} - {list data} - {bool} - (unConstrData (headList {data} (tailList {data} l))) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [ (\(ds : list data) -> False) - , (\(ds : list data) -> True) ] - args)) + (case + bool + (headList {data} (tailList {data} l)) + [False, True]) [(/\dead -> addInteger 1 posixTime), (/\dead -> posixTime)] {all dead. dead}) ] {all dead. dead} @@ -788,9 +770,12 @@ {Unit -> Maybe VestingRedeemer} d (\(ds : Unit) -> - casePair - {integer} - {list data} + (let + b = list data + in + /\r -> + \(p : pair integer b) (f : integer -> b -> r) -> + case r p [f]) {Maybe VestingRedeemer} (unConstrData d) (\(l : integer) (r : list data) -> @@ -857,72 +842,32 @@ !ds : Solo VestingDatum = MkSolo {VestingDatum} - (casePair - {integer} - {list data} - {VestingDatum} - (unConstrData ipv) - (\(index : integer) (args : list data) -> - case - (list data -> VestingDatum) - index - [ (\(ds : list data) -> - let - !l : list data - = tailList {data} ds - !l : list data - = tailList {data} l - !l : list data - = tailList {data} l - !l : list data - = tailList {data} l - !l : list data - = tailList {data} l - in - VestingDatum - (headList {data} ds) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Tuple2 - bytestring - bytestring} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - Tuple2 - bytestring - bytestring) - index - [ (\(ds : list data) -> - Tuple2 - {bytestring} - {bytestring} - (unBData - (headList - {data} - ds)) - (unBData - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (unIData (headList {data} l)) - (unIData (headList {data} l)) - (unIData (headList {data} l)) - (unIData (headList {data} l)) - (unIData - (headList - {data} - (tailList {data} l)))) ] - args)) + (case + VestingDatum + ipv + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + VestingDatum + arg + (case + (Tuple2 bytestring bytestring) + arg + [ (\(arg : data) (arg : data) -> + Tuple2 + {bytestring} + {bytestring} + (unBData arg) + (unBData arg)) ]) + (unIData arg) + (unIData arg) + (unIData arg) + (unIData arg) + (unIData arg)) ]) !vestingDatum : VestingDatum = Solo_match {VestingDatum} @@ -1020,72 +965,32 @@ !ds : Solo VestingDatum = MkSolo {VestingDatum} - (casePair - {integer} - {list data} - {VestingDatum} - (unConstrData ipv) - (\(index : integer) (args : list data) -> - case - (list data -> VestingDatum) - index - [ (\(ds : list data) -> - let - !l : list data - = tailList {data} ds - !l : list data - = tailList {data} l - !l : list data - = tailList {data} l - !l : list data - = tailList {data} l - !l : list data - = tailList {data} l - in - VestingDatum - (headList {data} ds) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Tuple2 - bytestring - bytestring} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - Tuple2 - bytestring - bytestring) - index - [ (\(ds : list data) -> - Tuple2 - {bytestring} - {bytestring} - (unBData - (headList - {data} - ds)) - (unBData - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (unIData (headList {data} l)) - (unIData (headList {data} l)) - (unIData (headList {data} l)) - (unIData (headList {data} l)) - (unIData - (headList - {data} - (tailList {data} l)))) ] - args)) + (case + VestingDatum + ipv + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + VestingDatum + arg + (case + (Tuple2 bytestring bytestring) + arg + [ (\(arg : data) (arg : data) -> + Tuple2 + {bytestring} + {bytestring} + (unBData arg) + (unBData arg)) ]) + (unIData arg) + (unIData arg) + (unIData arg) + (unIData arg) + (unIData arg)) ]) !vestingDatum : VestingDatum = Solo_match {VestingDatum} diff --git a/plutus-benchmark/linear-vesting/test/9.6/main.uplc.golden b/plutus-benchmark/linear-vesting/test/9.6/main.uplc.golden index 47d8a4625d5..788165eab08 100644 --- a/plutus-benchmark/linear-vesting/test/9.6/main.uplc.golden +++ b/plutus-benchmark/linear-vesting/test/9.6/main.uplc.golden @@ -9,1440 +9,1337 @@ (constr 0 [scriptContextData])) [ ((\vestingPeriodEnd -> (\find -> - (\`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` -> - (\`$mTxInfo` -> - (\txSignedBy -> - (\txOutValue -> - (\`$mTxOut` -> - (\txOutDatum -> - (\txOutAddress -> - (\txInfoValidRange -> - (\txInInfoResolved -> - (\totalInstallments -> - (\`$mScriptContext` -> - (\scriptContextTxInfo -> - (\scriptContextScriptInfo -> - (\traceError -> - (\getLowerInclusiveTimeRange -> - (\addressCredential -> - (\`$bScriptCredential` -> - (\`$mScriptCredential` -> - (\beneficiary -> - (\assetClassValueOf -> - (\`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` -> - (\`$mSpendingScript` -> - (\`$bPubKeyCredential` -> - (\`$mPubKeyCredential` -> - (\txOutRefIdx -> - (\txOutRefId -> - (\`$bOutputDatumHash` -> - (\`$bOutputDatum` -> - (\`$bNoOutputDatum` -> - (\`$mStakingPtr` -> - (\`$fEqCredential_$c==` -> - (\divCeil - ctx -> - delay - (case - ((\context -> - force - trace - "Validation completed" + (\`$mTxInfo` -> + (\txSignedBy -> + (\txOutValue -> + (\`$mTxOut` -> + (\txOutDatum -> + (\txOutAddress -> + (\txInfoValidRange -> + (\txInInfoResolved -> + (\totalInstallments -> + (\`$mScriptContext` -> + (\scriptContextTxInfo -> + (\scriptContextScriptInfo -> + (\traceError -> + (\getLowerInclusiveTimeRange -> + (\addressCredential -> + (\`$bScriptCredential` -> + (\`$mScriptCredential` -> + (\beneficiary -> + (\assetClassValueOf -> + (\`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` -> + (\`$mSpendingScript` -> + (\`$bPubKeyCredential` -> + (\`$mPubKeyCredential` -> + (\txOutRefIdx -> + (\txOutRefId -> + (\`$bOutputDatumHash` -> + (\`$bOutputDatum` -> + (\`$bNoOutputDatum` -> + (\`$mStakingPtr` -> + (\`$fEqCredential_$c==` -> + (\divCeil + ctx -> + delay + (case + ((\context -> + force + trace + "Validation completed" + (case (case - (case - ((\d -> - force - chooseData - d - (\ds -> - case - (unConstrData - d) - [ (\l - r -> - case - (equalsInteger - 0 - l) - [ (case - (equalsInteger - 1 - l) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 0 - [ ]) ]) ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - (`$mScriptContext` - context - (\ds - ds - ds -> - ds) - (\void -> - error))) - [ (\r -> - force - trace - "Parsed Redeemer" - r) - , ((\x -> - error) - (force - trace - "Failed to parse Redeemer" - (constr 0 - [ ]))) ]) - [ ((\ctx -> - case - (`$mSpendingScript` - (scriptContextScriptInfo - ctx) - (\_ownRef - ds -> - case - ds - [ (\ds -> - constr 0 - [ _ownRef - , ds ]) - , ((\defaultBody -> - case - error - [ defaultBody ]) - error) ]) - (\void -> - (\defaultBody -> - case - error - [ defaultBody ]) - error)) - [ (\ipv - ipv -> - (\vestingDatum -> + ((\d -> + force + chooseData + d + (\ds -> + case + (unConstrData + d) + [ (\l + r -> case - (`$mPubKeyCredential` - (addressCredential - (beneficiary - vestingDatum)) - (\beneficiaryKey -> - constr 0 - [ beneficiaryKey ]) - (\void -> - (\defaultBody -> - case - error - [ defaultBody ]) - error)) - [ (\ipv -> - (\txInfo -> - (\ds -> - case - (txSignedBy - txInfo - ipv) - [ (traceError - "Missing beneficiary signature") - , (case - (lessThanInteger - (vestingPeriodEnd - vestingDatum) - ds) - [ (traceError - "Unlock not permitted until vestingPeriodEnd time") - , True ]) ]) - (getLowerInclusiveTimeRange - (txInfoValidRange - txInfo))) - (scriptContextTxInfo - ctx)) ]) - (case - (unConstrData - ipv) - [ (\index - args -> - case - index - [ (\ds -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - constr 0 - [ (force - headList - ds) - , (case - (unConstrData - (force - headList - l)) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (unBData - (force - headList - ds)) - , (unBData - (force - headList - (force - tailList - ds))) ]) ] - args) ]) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - (force - tailList - l))) ]) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - ds)) ] - args) ])) ]) + (equalsInteger + 0 + l) + [ (case + (equalsInteger + 1 + l) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 0 + [ ]) ]) ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (constr 0 + [ ])) + (`$mScriptContext` + context + (\ds + ds + ds -> + ds) + (\void -> + error))) + [ (\r -> + force + trace + "Parsed Redeemer" + r) + , ((\x -> + error) (force trace - "Full unlock requested" - context)) - , ((\ctx -> - case - (`$mSpendingScript` - (scriptContextScriptInfo - ctx) - (\ownRef - ds -> + "Failed to parse Redeemer" + (constr 0 + [ ]))) ]) + [ ((\ctx -> + case + (`$mSpendingScript` + (scriptContextScriptInfo + ctx) + (\_ownRef + ds -> + case + ds + [ (\ds -> + constr 0 + [ _ownRef + , ds ]) + , ((\defaultBody -> + case + error + [ defaultBody ]) + error) ]) + (\void -> + (\defaultBody -> case - ds - [ (\ds -> + error + [ defaultBody ]) + error)) + [ (\ipv + ipv -> + (\vestingDatum -> + case + (`$mPubKeyCredential` + (addressCredential + (beneficiary + vestingDatum)) + (\beneficiaryKey -> constr 0 - [ ownRef - , ds ]) - , ((\defaultBody -> - case - error - [ defaultBody ]) - error) ]) - (\void -> - (\defaultBody -> - case - error - [ defaultBody ]) - error)) - [ (\ipv - ipv -> - (\vestingDatum -> + [ beneficiaryKey ]) + (\void -> + (\defaultBody -> + case + error + [ defaultBody ]) + error)) + [ (\ipv -> + (\txInfo -> + (\ds -> + case + (txSignedBy + txInfo + ipv) + [ (traceError + "Missing beneficiary signature") + , (case + (lessThanInteger + (vestingPeriodEnd + vestingDatum) + ds) + [ (traceError + "Unlock not permitted until vestingPeriodEnd time") + , True ]) ]) + (getLowerInclusiveTimeRange + (txInfoValidRange + txInfo))) + (scriptContextTxInfo + ctx)) ]) + (case + ipv + [ (\arg + arg + arg + arg + arg + arg + arg -> + constr 0 + [ arg + , (case + arg + [ (\arg + arg -> + constr 0 + [ (unBData + arg) + , (unBData + arg) ]) ]) + , (unIData + arg) + , (unIData + arg) + , (unIData + arg) + , (unIData + arg) + , (unIData + arg) ]) ])) ]) + (force + trace + "Full unlock requested" + context)) + , ((\ctx -> + case + (`$mSpendingScript` + (scriptContextScriptInfo + ctx) + (\ownRef + ds -> + case + ds + [ (\ds -> + constr 0 + [ ownRef + , ds ]) + , ((\defaultBody -> + case + error + [ defaultBody ]) + error) ]) + (\void -> + (\defaultBody -> + case + error + [ defaultBody ]) + error)) + [ (\ipv + ipv -> + (\vestingDatum -> + (\ds -> (\ds -> - (\ds -> - case - (`$mPubKeyCredential` - (addressCredential - (beneficiary - vestingDatum)) - (\beneficiaryHash -> - constr 0 - [ beneficiaryHash ]) - (\void -> - (\defaultBody -> + case + (`$mPubKeyCredential` + (addressCredential + (beneficiary + vestingDatum)) + (\beneficiaryHash -> + constr 0 + [ beneficiaryHash ]) + (\void -> + (\defaultBody -> + case + error + [ defaultBody ]) + error)) + [ ((\asset + ipv -> + (\txInfo -> + (\nt -> case - error - [ defaultBody ]) - error)) - [ ((\asset - ipv -> - (\txInfo -> - (\nt -> - case - (case - (find - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (\eta -> - (\l -> - case - (equalsByteString - (txOutRefId - l) - (txOutRefId - ipv)) - [ False - , (equalsInteger - (txOutRefIdx - l) - (txOutRefIdx - ipv)) ]) - (force - headList - (case - (unConstrData - eta) - [ (\l - r -> - r) ]))) - nt) - [ (\ownVestingInput -> - constr 0 - [ ownVestingInput ]) - , ((\defaultBody -> + (case + (find + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + (\eta -> + (\l -> case - error - [ defaultBody ]) - error) ]) - [ (\ipv -> + (equalsByteString + (txOutRefId + l) + (txOutRefId + ipv)) + [ False + , (equalsInteger + (txOutRefIdx + l) + (txOutRefIdx + ipv)) ]) + (force + headList + (case + (unConstrData + eta) + [ (\l + r -> + r) ]))) + nt) + [ (\ownVestingInput -> + constr 0 + [ ownVestingInput ]) + , ((\defaultBody -> + case + error + [ defaultBody ]) + error) ]) + [ (\ipv -> + (\nt -> (\nt -> - (\nt -> - case - (`$mScriptCredential` - (addressCredential - nt) - (\scriptHash -> - constr 0 - [ scriptHash ]) - (\void -> - (\defaultBody -> - case - error - [ defaultBody ]) - error)) - [ (\ipv -> - (\go -> - (\ds -> - (\ownVestingOutput -> - (\nt -> - (\ds -> - (\currentTimeApproximation -> - (\ds -> - case - (txSignedBy - txInfo - ipv) - [ (traceError - "Missing beneficiary signature") - , (case - (lessThanInteger - (case - vestingDatum - [ (\ds - ds - ds - ds - ds - ds - ds -> - ds) ]) - currentTimeApproximation) - [ (traceError - "Unlock not permitted until firstUnlockPossibleAfter time") - , (force - ((\newRemainingQty -> - case - (lessThanEqualsInteger - (force - newRemainingQty) - 0) - [ (delay - (case - (lessThanInteger - (force - newRemainingQty) - ds) - [ (traceError - "Remaining asset is not decreasing") - , (case - (equalsInteger - ds - (force - newRemainingQty)) - [ (traceError - "Mismatched remaining asset") - , (case - ((\ds -> - force - ((\fail -> - case - (equalsInteger - `$bNoOutputDatum` - (case - (unConstrData - ds) - [ (\l - r -> - l) ])) - [ (delay - (fail - ())) - , (delay - (case - (equalsInteger - `$bNoOutputDatum` - (case - (unConstrData - nt) - [ (\l - r -> - l) ])) - [ (fail - ()) - , True ])) ]) - ((\fail - ds -> - (\tup -> - case - (equalsInteger - `$bOutputDatumHash` - (case - tup - [ (\l - r -> - l) ])) - [ (fail - ()) - , ((\tup -> - case - (equalsInteger - `$bOutputDatumHash` - (case - tup - [ (\l - r -> - l) ])) - [ (fail - ()) - , (equalsByteString - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ]))) - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ])))) ]) - (unConstrData - nt)) ]) - (unConstrData - ds)) - (\ds -> - (\tup -> - case - (equalsInteger - `$bOutputDatum` - (case - tup - [ (\l - r -> - l) ])) - [ False - , ((\tup -> - case - (equalsInteger - `$bOutputDatum` - (case - tup - [ (\l - r -> - l) ])) - [ False - , (equalsData - (force - headList - (case - tup - [ (\l - r -> - r) ])) - (force - headList - (case - tup - [ (\l - r -> - r) ]))) ]) - (unConstrData - nt)) ]) - (unConstrData - ds))))) - (txOutDatum - nt)) - [ (traceError - "Datum Modification Prohibited") - , (case - (equalsInteger - (go - 0 - nt) - 1) - [ (traceError - "Double satisfaction") - , True ]) ]) ]) ])) - , (delay - (traceError - "Zero remaining assets not allowed")) ]) - (delay - (case - ds - [ (\newRemainingQty -> - newRemainingQty) ])))) ]) ]) - (divCeil - (multiplyInteger - (divCeil - (subtractInteger - (vestingPeriodEnd - vestingDatum) - currentTimeApproximation) - ds) - (case - vestingDatum - [ (\ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - (totalInstallments - vestingDatum))) - (getLowerInclusiveTimeRange - (txInfoValidRange - txInfo))) - (constr 0 - [ (assetClassValueOf - (txOutValue - ownVestingOutput) - (force - asset)) ])) - (txOutDatum - ownVestingOutput)) - (case - (case - (find - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (\eta -> - (\l -> - (\l -> - case - (`$fEqCredential_$c==` - (force - headList - l) - (force - headList - l)) - [ False - , (case - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (force - headList + case + (`$mScriptCredential` + (addressCredential + nt) + (\scriptHash -> + constr 0 + [ scriptHash ]) + (\void -> + (\defaultBody -> + case + error + [ defaultBody ]) + error)) + [ (\ipv -> + (\go -> + (\ds -> + (\ownVestingOutput -> + (\nt -> + (\ds -> + (\currentTimeApproximation -> + (\ds -> + case + (txSignedBy + txInfo + ipv) + [ (traceError + "Missing beneficiary signature") + , (case + (lessThanInteger + (case + vestingDatum + [ (\ds + ds + ds + ds + ds + ds + ds -> + ds) ]) + currentTimeApproximation) + [ (traceError + "Unlock not permitted until firstUnlockPossibleAfter time") + , (force + ((\newRemainingQty -> + case + (lessThanEqualsInteger (force - tailList - l))) - [ (\a -> - case - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - l))) - [ (\a -> - (\tup -> - force - ((\fail -> - case - (equalsInteger - `$bPubKeyCredential` - (case - tup - [ (\l - r -> - l) ])) - [ (delay - (fail - ())) - , (delay - ((\tup -> - case - (equalsInteger - `$bPubKeyCredential` - (case - tup - [ (\l - r -> - l) ])) - [ (fail - ()) - , (`$fEqCredential_$c==` - (force - headList - (case - tup - [ (\l - r -> - r) ])) - (force - headList + newRemainingQty) + 0) + [ (delay + (case + (lessThanInteger + (force + newRemainingQty) + ds) + [ (traceError + "Remaining asset is not decreasing") + , (case + (equalsInteger + ds + (force + newRemainingQty)) + [ (traceError + "Mismatched remaining asset") + , (case + ((\ds -> + force + ((\fail -> + case + (equalsInteger + `$bNoOutputDatum` + (case + (unConstrData + ds) + [ (\l + r -> + l) ])) + [ (delay + (fail + ())) + , (delay + (case + (equalsInteger + `$bNoOutputDatum` + (case + (unConstrData + nt) + [ (\l + r -> + l) ])) + [ (fail + ()) + , True ])) ]) + ((\fail + ds -> + (\tup -> + case + (equalsInteger + `$bOutputDatumHash` (case tup [ (\l r -> - r) ]))) ]) - (unConstrData - a))) ]) - (\ds -> - `$mStakingPtr` - a - (\a - b - c -> - `$mStakingPtr` - a - (\a' - b' - c' -> - case - (equalsInteger - a - a') - [ False - , (case - (equalsInteger - b - b') - [ False - , (equalsInteger - c - c') ]) ]) - (\void -> - False)) - (\void -> - False)))) - (unConstrData - a)) - , False ]) - , (case - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + l) ])) + [ (fail + ()) + , ((\tup -> + case + (equalsInteger + `$bOutputDatumHash` + (case + tup + [ (\l + r -> + l) ])) + [ (fail + ()) + , (equalsByteString + (unBData + (force + headList + (case + tup + [ (\l + r -> + r) ]))) + (unBData + (force + headList + (case + tup + [ (\l + r -> + r) ])))) ]) + (unConstrData + nt)) ]) + (unConstrData + ds)) + (\ds -> + (\tup -> + case + (equalsInteger + `$bOutputDatum` + (case + tup + [ (\l + r -> + l) ])) + [ False + , ((\tup -> + case + (equalsInteger + `$bOutputDatum` + (case + tup + [ (\l + r -> + l) ])) + [ False + , (equalsData + (force + headList + (case + tup + [ (\l + r -> + r) ])) + (force + headList + (case + tup + [ (\l + r -> + r) ]))) ]) + (unConstrData + nt)) ]) + (unConstrData + ds))))) + (txOutDatum + nt)) + [ (traceError + "Datum Modification Prohibited") + , (case + (equalsInteger + (go + 0 + nt) + 1) + [ (traceError + "Double satisfaction") + , True ]) ]) ]) ])) + , (delay + (traceError + "Zero remaining assets not allowed")) ]) + (delay + (case + ds + [ (\newRemainingQty -> + newRemainingQty) ])))) ]) ]) + (divCeil + (multiplyInteger + (divCeil + (subtractInteger + (vestingPeriodEnd + vestingDatum) + currentTimeApproximation) + ds) + (case + vestingDatum + [ (\ds + ds + ds + ds + ds + ds + ds -> + ds) ])) + (totalInstallments + vestingDatum))) + (getLowerInclusiveTimeRange + (txInfoValidRange + txInfo))) + (constr 0 + [ (assetClassValueOf + (txOutValue + ownVestingOutput) + (force + asset)) ])) + (txOutDatum + ownVestingOutput)) + (case + (case + (find + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + (\eta -> + (\l -> + (\l -> + case + (`$fEqCredential_$c==` + (force + headList + l) + (force + headList + l)) + [ False + , (case + (case + (force + headList + (force + tailList + l)) + [ (\arg -> + constr 0 + [ arg ]) + , (constr 1 + [ ]) ]) + [ (\a -> + case + (case + (force + headList + (force + tailList + l)) + [ (\arg -> + constr 0 + [ arg ]) + , (constr 1 + [ ]) ]) + [ (\a -> + (\tup -> + force + ((\fail -> + case + (equalsInteger + `$bPubKeyCredential` + (case + tup + [ (\l + r -> + l) ])) + [ (delay + (fail + ())) + , (delay + ((\tup -> + case + (equalsInteger + `$bPubKeyCredential` + (case + tup + [ (\l + r -> + l) ])) + [ (fail + ()) + , (`$fEqCredential_$c==` + (force + headList + (case + tup + [ (\l + r -> + r) ])) + (force + headList + (case + tup + [ (\l + r -> + r) ]))) ]) + (unConstrData + a))) ]) + (\ds -> + `$mStakingPtr` + a + (\a + b + c -> + `$mStakingPtr` + a + (\a' + b' + c' -> + case + (equalsInteger + a + a') + [ False + , (case + (equalsInteger + b + b') + [ False + , (equalsInteger + c + c') ]) ]) + (\void -> + False)) + (\void -> + False)))) + (unConstrData + a)) + , False ]) + , (case + (case + (force + headList (force - headList - (force - tailList - l))) - [ (\ipv -> - False) - , True ]) ]) ]) - (case - (unConstrData - nt) - [ (\l - r -> - r) ])) + tailList + l)) + [ (\arg -> + constr 0 + [ arg ]) + , (constr 1 + [ ]) ]) + [ (\ipv -> + False) + , True ]) ]) ]) (case (unConstrData - (txOutAddress - eta)) + nt) [ (\l r -> r) ])) - (`$mTxInfo` - txInfo - (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) - (\void -> - error))) - [ (\ownVestingOutput -> - constr 0 - [ ownVestingOutput ]) - , ((\defaultBody -> - case - error - [ defaultBody ]) - error) ]) - [ (\ownVestingOutput -> - ownVestingOutput) ])) - (assetClassValueOf - (txOutValue - nt) - (force - asset))) - (fix1 - (\go - n - ds -> - case - ds - [ (\x - eta -> - `$mScriptCredential` - (addressCredential - (txOutAddress - (txInInfoResolved - x))) - (\vh -> - case - (equalsByteString - vh - ipv) - [ (go - n - eta) - , (go - (addInteger - 1 - n) - eta) ]) + (case + (unConstrData + (txOutAddress + eta)) + [ (\l + r -> + r) ])) + (`$mTxInfo` + txInfo + (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) (\void -> - go - n - eta)) - , n ]))) ]) - (txOutAddress - nt)) - (txInInfoResolved - ipv)) ]) - (`$mTxInfo` - txInfo - (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) - (\void -> - error))) - (scriptContextTxInfo - ctx)) - (delay - (case - ds - [ (\asset -> - asset) ]))) ]) - (divCeil - (subtractInteger - (vestingPeriodEnd - vestingDatum) - (case - vestingDatum - [ (\ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - (totalInstallments - vestingDatum))) - (constr 0 - [ (case - vestingDatum - [ (\ds - ds - ds - ds - ds - ds - ds -> - ds) ]) ])) - (case - (unConstrData - ipv) - [ (\index - args -> - case - index - [ (\ds -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - constr 0 - [ (force - headList - ds) - , (case - (unConstrData - (force - headList - l)) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (unBData - (force - headList - ds)) - , (unBData - (force - headList - (force - tailList - ds))) ]) ] - args) ]) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - l)) - , (unIData - (force - headList - (force - tailList - l))) ]) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - ds)) ] - args) ])) ]) - (force - trace - "Partial unlock requested" - context)) ])) - (force - trace - "Parsed ScriptContext" - ctx)) - [ (traceError - "PT5") - , () ])) - (\x - y -> - addInteger - 1 - (divideInteger - (subtractInteger - x - 1) - y))) - (\ds - ds -> - (\tup -> - force - ((\fail -> - case - (equalsInteger - `$bPubKeyCredential` - (case - tup - [ (\l - r -> - l) ])) - [ (delay - (fail - ())) - , (delay - ((\tup -> - case - (equalsInteger - `$bPubKeyCredential` - (case - tup - [ (\l - r -> - l) ])) - [ (fail - ()) - , (equalsByteString - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ]))) - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ])))) ]) - (unConstrData - ds))) ]) - (\ds -> - (\tup -> - case - (equalsInteger - `$bScriptCredential` - (case - tup - [ (\l - r -> - l) ])) - [ False - , ((\tup -> - case - (equalsInteger - `$bScriptCredential` + error))) + [ (\ownVestingOutput -> + constr 0 + [ ownVestingOutput ]) + , ((\defaultBody -> + case + error + [ defaultBody ]) + error) ]) + [ (\ownVestingOutput -> + ownVestingOutput) ])) + (assetClassValueOf + (txOutValue + nt) + (force + asset))) + (fix1 + (\go + n + ds -> + case + ds + [ (\x + eta -> + `$mScriptCredential` + (addressCredential + (txOutAddress + (txInInfoResolved + x))) + (\vh -> + case + (equalsByteString + vh + ipv) + [ (go + n + eta) + , (go + (addInteger + 1 + n) + eta) ]) + (\void -> + go + n + eta)) + , n ]))) ]) + (txOutAddress + nt)) + (txInInfoResolved + ipv)) ]) + (`$mTxInfo` + txInfo + (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) + (\void -> + error))) + (scriptContextTxInfo + ctx)) + (delay + (case + ds + [ (\asset -> + asset) ]))) ]) + (divCeil + (subtractInteger + (vestingPeriodEnd + vestingDatum) + (case + vestingDatum + [ (\ds + ds + ds + ds + ds + ds + ds -> + ds) ])) + (totalInstallments + vestingDatum))) + (constr 0 + [ (case + vestingDatum + [ (\ds + ds + ds + ds + ds + ds + ds -> + ds) ]) ])) (case - tup - [ (\l - r -> - l) ])) - [ False - , (equalsByteString - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ]))) - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ])))) ]) - (unConstrData - ds)) ]) - (unConstrData - ds)))) - (unConstrData - ds))) - (\scrut - cont - fail -> + ipv + [ (\arg + arg + arg + arg + arg + arg + arg -> + constr 0 + [ arg + , (case + arg + [ (\arg + arg -> + constr 0 + [ (unBData + arg) + , (unBData + arg) ]) ]) + , (unIData + arg) + , (unIData + arg) + , (unIData + arg) + , (unIData + arg) + , (unIData + arg) ]) ])) ]) + (force + trace + "Partial unlock requested" + context)) ])) + (force + trace + "Parsed ScriptContext" + ctx)) + [ (traceError + "PT5") + , () ])) + (\x + y -> + addInteger + 1 + (divideInteger + (subtractInteger + x + 1) + y))) + (\ds + ds -> (\tup -> - case - (equalsInteger - `$bScriptCredential` - (case - tup - [ (\l - r -> - l) ])) - [ (fail - ()) - , ((\l -> - (\l -> - cont - (unIData - (force - headList - l)) - (unIData - (force - headList - l)) - (unIData - (force - headList - (force - tailList - l)))) - (force - tailList - l)) - (case - tup - [ (\l - r -> - r) ])) ]) + force + ((\fail -> + case + (equalsInteger + `$bPubKeyCredential` + (case + tup + [ (\l + r -> + l) ])) + [ (delay + (fail + ())) + , (delay + ((\tup -> + case + (equalsInteger + `$bPubKeyCredential` + (case + tup + [ (\l + r -> + l) ])) + [ (fail + ()) + , (equalsByteString + (unBData + (force + headList + (case + tup + [ (\l + r -> + r) ]))) + (unBData + (force + headList + (case + tup + [ (\l + r -> + r) ])))) ]) + (unConstrData + ds))) ]) + (\ds -> + (\tup -> + case + (equalsInteger + `$bScriptCredential` + (case + tup + [ (\l + r -> + l) ])) + [ False + , ((\tup -> + case + (equalsInteger + `$bScriptCredential` + (case + tup + [ (\l + r -> + l) ])) + [ False + , (equalsByteString + (unBData + (force + headList + (case + tup + [ (\l + r -> + r) ]))) + (unBData + (force + headList + (case + tup + [ (\l + r -> + r) ])))) ]) + (unConstrData + ds)) ]) + (unConstrData + ds)))) (unConstrData - scrut))) - 0) - 2) - 1) - (\ds -> - unBData - (force - headList - (case - (unConstrData - ds) - [ (\l - r -> - r) ])))) + ds))) + (\scrut + cont + fail -> + (\tup -> + case + (equalsInteger + `$bScriptCredential` + (case + tup + [ (\l + r -> + l) ])) + [ (fail + ()) + , ((\l -> + (\l -> + cont + (unIData + (force + headList + l)) + (unIData + (force + headList + l)) + (unIData + (force + headList + (force + tailList + l)))) + (force + tailList + l)) + (case + tup + [ (\l + r -> + r) ])) ]) + (unConstrData + scrut))) + 0) + 2) + 1) (\ds -> - unIData + unBData (force headList - (force - tailList - (case - (unConstrData - ds) - [ (\l - r -> - r) ]))))) - (\scrut - cont - fail -> - (\tup -> - case - (equalsInteger - `$bPubKeyCredential` (case - tup + (unConstrData + ds) [ (\l r -> - l) ])) - [ (fail - ()) - , (cont - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ])))) ]) - (unConstrData - scrut))) - 0) - (\scrut - cont - fail -> - (\tup -> - case - (equalsInteger - 1 - (case - tup - [ (\l - r -> - l) ])) - [ (fail - ()) - , ((\l -> - cont - (force - headList - l) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + r) ])))) + (\ds -> + unIData + (force + headList + (force + tailList + (case + (unConstrData + ds) + [ (\l + r -> + r) ]))))) + (\scrut + cont + fail -> + (\tup -> + case + (equalsInteger + `$bPubKeyCredential` + (case + tup + [ (\l + r -> + l) ])) + [ (fail + ()) + , (cont + (unBData (force headList - (force - tailList - l)))) + (case + tup + [ (\l + r -> + r) ])))) ]) + (unConstrData + scrut))) + 0) + (\scrut + cont + fail -> + (\tup -> + case + (equalsInteger + 1 + (case + tup + [ (\l + r -> + l) ])) + [ (fail + ()) + , ((\l -> + cont + (force + headList + l) (case - tup - [ (\l - r -> - r) ])) ]) - (unConstrData - scrut))) - (\d -> - d)) - ((\lookup' - v - ds -> - case - ds - [ (\c - t -> + (force + headList + (force + tailList + l)) + [ (\arg -> + constr 0 + [ arg ]) + , (constr 1 + [ ]) ])) + (case + tup + [ (\l + r -> + r) ])) ]) + (unConstrData + scrut))) + (\d -> + d)) + ((\lookup' + v + ds -> + case + ds + [ (\c + t -> + case + (lookup' + (bData + c) + v) + [ (\a -> + (\m -> + case + (lookup' + (bData + t) + m) + [ (\a -> + unIData + a) + , 0 ]) + (unMapData + a)) + , 0 ]) ]) + (\k -> + (\go + m -> + go + m) + (fix1 + (\go + xs -> case - (lookup' - (bData - c) - v) - [ (\a -> - (\m -> - case - (lookup' - (bData - t) - m) - [ (\a -> - unIData - a) - , 0 ]) - (unMapData - a)) - , 0 ]) ]) - (\k -> - (\go - m -> - go - m) - (fix1 - (\go - xs -> - case - xs - [ (\hd -> - case - (equalsData - k - (case - hd - [ (\l - r -> - l) ])) - [ go - , (\ds -> - constr 0 - [ (case - hd - [ (\l - r -> - r) ]) ]) ]) - , (constr 1 - [ ]) ]))))) - (\ds -> - case - ds - [ (\ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - (\scrut - cont - fail -> - (\tup -> - case - (equalsInteger - `$bScriptCredential` - (case - tup - [ (\l - r -> - l) ])) - [ (fail - ()) - , (cont - (unBData - (force - headList - (case - tup - [ (\l - r -> - r) ])))) ]) - (unConstrData - scrut))) - 1) - (\ds -> - force - headList - (case + xs + [ (\hd -> + case + (equalsData + k + (case + hd + [ (\l + r -> + l) ])) + [ go + , (\ds -> + constr 0 + [ (case + hd + [ (\l + r -> + r) ]) ]) ]) + , (constr 1 + [ ]) ]))))) + (\ds -> + case + ds + [ (\ds + ds + ds + ds + ds + ds + ds -> + ds) ])) + (\scrut + cont + fail -> + (\tup -> + case + (equalsInteger + `$bScriptCredential` + (case + tup + [ (\l + r -> + l) ])) + [ (fail + ()) + , (cont + (unBData + (force + headList + (case + tup + [ (\l + r -> + r) ])))) ]) (unConstrData - ds) - [ (\l - r -> - r) ]))) + scrut))) + 1) (\ds -> - (\l -> - (\tup -> - case - (equalsInteger - 1 - (case - tup - [ (\l - r -> - l) ])) - [ (traceError - "Time range not Finite") - , ((\posixTime -> - case - (case - (unConstrData - (force - headList - (force - tailList - l))) - [ (\index - args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) ]) - [ (addInteger - 1 - posixTime) - , posixTime ]) - (unIData - (force - headList - (case - tup - [ (\l - r -> - r) ])))) ]) - (unConstrData - (force - headList - l))) + force + headList (case (unConstrData - (force - headList - (case - (unConstrData - ds) - [ (\l - r -> - r) ]))) + ds) [ (\l r -> r) ]))) - (\str -> - (\x -> error) - (force trace - str - (constr 0 - [])))) - (\ds -> - `$mScriptContext` - ds - (\ds ds ds -> - ds) - (\void -> - error))) + (\ds -> + (\l -> + (\tup -> + case + (equalsInteger + 1 + (case + tup + [ (\l + r -> + l) ])) + [ (traceError + "Time range not Finite") + , ((\posixTime -> + case + (force + headList + (force + tailList + l)) + [ (addInteger + 1 + posixTime) + , posixTime ]) + (unIData + (force + headList + (case + tup + [ (\l + r -> + r) ])))) ]) + (unConstrData + (force + headList + l))) + (case + (unConstrData + (force + headList + (case + (unConstrData + ds) + [ (\l + r -> + r) ]))) + [ (\l + r -> + r) ]))) + (\str -> + (\x -> error) + (force trace + str + (constr 0 + [])))) (\ds -> `$mScriptContext` ds (\ds ds ds -> ds) (\void -> error))) - (\scrut cont fail -> + (\ds -> + `$mScriptContext` + ds + (\ds ds ds -> ds) + (\void -> error))) + (\scrut cont fail -> + (\l -> (\l -> - (\l -> - cont - (force headList - l) - (force headList - l) - (force headList - (force - tailList - l))) - (force tailList l)) - (case - (unConstrData - scrut) - [(\l r -> r)]))) - (\ds -> - case - ds - [ (\ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - (\ds -> - force headList - (force tailList + cont + (force headList l) + (force headList l) + (force headList + (force tailList + l))) + (force tailList l)) (case - (unConstrData ds) - [(\l r -> r)])))) + (unConstrData scrut) + [(\l r -> r)]))) + (\ds -> + case + ds + [ (\ds ds ds ds ds ds ds -> + ds) ])) (\ds -> - `$mTxInfo` - ds - (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) - (\void -> error))) + force headList + (force tailList + (case + (unConstrData ds) + [(\l r -> r)])))) (\ds -> - `$mTxOut` + `$mTxInfo` ds - (\ds ds ds ds -> ds) + (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) (\void -> error))) (\ds -> `$mTxOut` ds (\ds ds ds ds -> ds) (\void -> error))) - (\scrut - cont - fail -> + (\ds -> + `$mTxOut` + ds + (\ds ds ds ds -> ds) + (\void -> error))) + (\scrut cont fail -> + (\l -> (\l -> (\l -> - (\l -> - cont - (force headList l) - (unMapData (force headList l)) - (force headList l) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - unBData - (force headList - (force tailList l)))) - (force tailList l)) + cont + (force headList l) + (unMapData (force headList l)) + (force headList l) + (case + (force headList + (force tailList l)) + [ (\arg -> + constr 0 [(unBData arg)]) + , (constr 1 []) ])) (force tailList l)) + (force tailList l)) + (case (unConstrData scrut) [(\l r -> r)]))) + (\ds -> + unMapData + (force headList + (force tailList (case - (unConstrData scrut) - [(\l r -> r)]))) - (\ds -> - unMapData - (force headList - (force tailList - (case - (unConstrData ds) - [(\l r -> r)]))))) - (\ds k -> - `$mTxInfo` - ds - (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - case - (find - unBData - (\y -> equalsByteString k y) - ds) - [(\ds -> True), False]) - (\void -> - (\defaultBody -> case error [defaultBody]) - error))) - (\scrut - cont - fail -> + (unConstrData ds) + [(\l r -> r)]))))) + (\ds k -> + `$mTxInfo` + ds + (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + case + (find + unBData + (\y -> equalsByteString k y) + ds) + [(\ds -> True), False]) + (\void -> + (\defaultBody -> case error [defaultBody]) + error))) + (\scrut + cont + fail -> + (\l -> (\l -> (\l -> (\l -> @@ -1457,78 +1354,84 @@ (\l -> (\l -> (\l -> - (\l -> - cont - (unListData - (force - headList - l)) - (unListData - (force - headList - l)) - (unListData - (force - headList - l)) - (unIData - (force - headList - l)) - (unMapData - (force - headList - l)) - (unListData - (force - headList - l)) - (unMapData - (force - headList - l)) + cont + (unListData + (force + headList + l)) + (unListData + (force + headList + l)) + (unListData + (force + headList + l)) + (unIData + (force + headList + l)) + (unMapData + (force + headList + l)) + (unListData + (force + headList + l)) + (unMapData + (force + headList + l)) + (force + headList + l) + (unListData + (force + headList + l)) + (unMapData + (force + headList + l)) + (unMapData + (force + headList + l)) + (unBData + (force + headList + l)) + (unMapData + (force + headList + l)) + (unListData + (force + headList + l)) + (case (force headList l) - (unListData - (force - headList - l)) - (unMapData - (force - headList - l)) - (unMapData - (force - headList - l)) - (unBData - (force - headList - l)) - (unMapData - (force - headList - l)) - (unListData - (force - headList - l)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - unIData + [ (\arg -> + constr 0 + [ (unIData + arg) ]) + , (constr 1 + [ ]) ]) + (case + (force + headList (force - headList + tailList l)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - unIData - (force - headList - (force - tailList - l)))) - (force - tailList - l)) + [ (\arg -> + constr 0 + [ (unIData + arg) ]) + , (constr 1 + [ ]) ])) (force tailList l)) @@ -1547,19 +1450,8 @@ (force tailList l)) (force tailList l)) (force tailList l)) - (case (unConstrData scrut) [(\l r -> r)]))) - (\`$dUnsafeFromData` d -> - case - (unConstrData d) - [ (\index args -> - case - index - [ (\ds -> - constr 0 - [ (`$dUnsafeFromData` - (force headList ds)) ]) - , (\ds -> constr 1 []) ] - args) ])) + (force tailList l)) + (case (unConstrData scrut) [(\l r -> r)]))) (\`$dUnsafeFromData` pred' -> (\go eta -> go eta) (fix1 diff --git a/plutus-benchmark/marlowe/test/budgets.golden.tsv b/plutus-benchmark/marlowe/test/budgets.golden.tsv index 965ffdf5dd4..6446652e2ba 100644 --- a/plutus-benchmark/marlowe/test/budgets.golden.tsv +++ b/plutus-benchmark/marlowe/test/budgets.golden.tsv @@ -1,200 +1,200 @@ -300849473 1458713 11291 -395234424 1629330 11291 -889361254 4416973 11291 -744189977 3387476 11291 -828695121 2314686 11291 -276839668 1347950 11291 -690475775 3230518 11291 -722498842 3514631 11291 -669414210 3095379 11291 -1076772502 4933136 11291 -1089126512 4766986 11291 -933873171 4495292 11291 -1046643082 5009365 11291 -1229177100 5743000 11291 -432517177 2112928 11291 -708320414 3394797 11291 -454988817 2219626 11291 -695770812 3364895 11291 -279061608 1352852 11291 -812167064 3746713 11291 -707821137 3138929 11291 -279116166 1352852 11291 -956974163 1236815 11291 -3873043314 1676998 11291 -313401075 1478040 11291 -276839668 1347950 11291 -481197675 2354455 11291 -1749779674 1610085 11291 -866100136 3245110 11291 -724557948 3527981 11291 -685621861 3077516 11291 -981269873 4766972 11291 -279061608 1352852 11291 -427437255 2095618 11291 -548488462 2668086 11291 -658073396 3090949 11291 -276839668 1347950 11291 -783327144 3659994 11291 -276839668 1347950 11291 -934993102 4539613 11291 -629577546 3062208 11291 -355982975 1530290 11291 -346315144 1653741 11291 -359866680 1721219 11291 -276839668 1347950 11291 -669110311 3253145 11291 -276839668 1347950 11291 -443639857 2164212 11291 -969279812 4522579 11291 -931613782 4437458 11291 -472641982 2269355 11291 -279061608 1352852 11291 -643355352 3078726 11291 -445525027 2172804 11291 -582068178 2819021 11291 -2157133956 1880426 11291 -1308910596 5531546 11291 -945312357 4558445 11291 -3873043314 1676998 11291 -445807353 2169114 11291 -724423764 3410902 11291 -434793675 2117830 11291 -725045304 3490032 11291 -708801586 3474217 11291 -629159902 3062628 11291 -490200101 2320521 11291 -420475740 1945285 11291 -1297467711 5389096 11291 -984119429 4676589 11291 -313401075 1478040 11291 -279061608 1352852 11291 -1084499619 4955776 11291 -359866680 1721219 11291 -490200101 2320521 11291 -561292332 2665667 11291 -317660437 1485681 11291 -507967076 2448023 11291 -1230377000 5744445 11291 -680374121 3291547 11291 -856560574 4174513 11291 -663293981 3254069 11291 -724280108 3488839 11291 -946649162 1182263 11291 -779516226 3730763 11291 -747667341 3561974 11291 -449992158 2189749 11291 -17813000889 1038783 11291 -928336412 4524182 11291 -276839668 1347950 11291 -429659195 2100520 11291 -675855662 3290641 11291 -324150631 1434876 11291 -351501935 1676678 11291 -279061608 1352852 11291 -878271948 2536935 11291 -276839668 1347950 11291 -591728224 2735204 11291 -722441155 2947695 11291 -3751137883 1134197 11291 -834562926 3923528 11291 -234128709 1129624 2427 -314105481 1564848 2427 -245533460 1187893 2427 -209893161 1002260 2427 -230184679 1103668 2427 -219316548 1047707 2427 -218378849 1042505 2427 -255828322 1235513 2427 -243875818 1179482 2427 -229269363 1098648 2427 -247333217 1194728 2427 -247529296 1201308 2427 -283288411 1392736 2427 -214602640 1026579 2427 -226118198 1084945 2427 -210369636 994599 2427 -245551572 1196981 2427 -223217455 1069220 2427 -223169584 1081552 2427 -250958161 1221054 2427 -217392424 1042207 2427 -236021560 1137857 2427 -234128709 1129624 2427 -244808822 1187875 2427 -217517949 1036108 2427 -214607145 1023388 2427 -218414958 1043503 2427 -213664865 1021377 2427 -234023565 1121572 2427 -225844721 1081255 2427 -234862680 1133748 2427 -217517949 1036108 2427 -209852471 1004453 2427 -226372285 1086744 2427 -214602564 1026579 2427 -214602564 1026579 2427 -250744050 1219949 2427 -221765519 1061892 2427 -247537229 1207006 2427 -234128709 1129624 2427 -253824587 1224386 2427 -217477259 1038301 2427 -217477259 1038301 2427 -222559891 1069820 2427 -274612090 1348027 2427 -259027367 1257408 2427 -226503921 1095776 2427 -217477259 1038301 2427 -287296787 1423954 2427 -245551572 1196981 2427 -222559891 1069820 2427 -253193021 1234134 2427 -236441360 1144921 2427 -213664865 1021377 2427 -210369636 994599 2427 -217477259 1038301 2427 -218414958 1043503 2427 -217477259 1038301 2427 -218414958 1043503 2427 -240673050 1173991 2427 -248819926 1214449 2427 -250014387 1223444 2427 -232628966 1127997 2427 -222032327 1064331 2427 -229333737 1101219 2427 -238110342 1146433 2427 -208955576 997058 2427 -217477259 1038301 2427 -256148135 1260647 2427 -218414958 1043503 2427 -217477259 1038301 2427 -218414958 1043503 2427 -249842460 1215745 2427 -218414958 1043503 2427 -278655575 1358918 2427 -301797839 1492341 2427 -218414958 1043503 2427 -242217672 1181897 2427 -244808822 1187875 2427 -219316548 1047707 2427 -228816572 1111073 2427 -229419306 1105305 2427 -258125935 1264974 2427 -210369636 994599 2427 -219316548 1047707 2427 -241527409 1158328 2427 -236763500 1138971 2427 -242217672 1181897 2427 -222265976 1068021 2427 -225017212 1076055 2427 -225918802 1080259 2427 -218414958 1043503 2427 -242579645 1167163 2427 -244808822 1187875 2427 -217477259 1038301 2427 -214602564 1026579 2427 -233231700 1122229 2427 -218414958 1043503 2427 -225844721 1081255 2427 -252279389 1223434 2427 +379813473 1863717 15493 +477759389 2051958 15493 +1074477658 5362081 15493 +915157483 4257740 15493 +954463691 2955182 15493 +355238674 1750222 15493 +839299498 3991138 15493 +906509578 4452671 15493 +812687969 3826107 15493 +1322641016 6184136 15493 +1366232312 6162914 15493 +1142022711 5558152 15493 +1287271659 6235917 15493 +1483584907 7041928 15493 +539989266 2663672 15493 +883605879 4286617 15493 +566732533 2791794 15493 +867357334 4241099 15493 +357460614 1755124 15493 +986683894 4637877 15493 +859730814 3912769 15493 +357515172 1755124 15493 +1036087152 1641315 15493 +3959972895 2120446 15493 +389287436 1867484 15493 +355238674 1750222 15493 +581605817 2868079 15493 +1827396343 2006989 15493 +1037740277 4115430 15493 +912886643 4487577 15493 +834445584 3838136 15493 +1178064508 5771488 15493 +357460614 1755124 15493 +539180971 2667786 15493 +677918356 3330182 15493 +803499480 3834009 15493 +355238674 1750222 15493 +974276125 4629742 15493 +355238674 1750222 15493 +1141644654 5594709 15493 +780542588 3834292 15493 +438507940 1952918 15493 +444629962 2155565 15493 +468139404 2272819 15493 +355238674 1750222 15493 +819915353 4024229 15493 +355238674 1750222 15493 +551111946 2714956 15493 +1177535330 5583231 15493 +1109067577 5342346 15493 +581741722 2828195 15493 +357460614 1755124 15493 +784463477 3800230 15493 +552997116 2723548 15493 +715816031 3502673 15493 +2256342088 2385278 15493 +1626979036 7135718 15493 +1151963909 5613541 15493 +3959972895 2120446 15493 +553279442 2719858 15493 +899709229 4302722 15493 +542265764 2668574 15493 +899284112 4376588 15493 +874404476 4317661 15493 +784442903 3856268 15493 +602817800 2895917 15493 +506412681 2386041 15493 +1605606924 6945264 15493 +1187373342 5714125 15493 +389287436 1867484 15493 +357460614 1755124 15493 +1330368133 6206776 15493 +468139404 2272819 15493 +602817800 2895917 15493 +686404267 3306207 15493 +418481878 1997425 15493 +626639059 3054707 15493 +1489102766 7064929 15493 +835497122 4084187 15493 +1016809854 4992005 15493 +814259023 4026153 15493 +894200957 4353839 15493 +1019123547 1553579 15493 +949715097 4600371 15493 +919671526 4440310 15493 +557464247 2740493 15493 +17878836670 1376915 15493 +1130670005 5557722 15493 +355238674 1750222 15493 +541402911 2672688 15493 +830978663 4083281 15493 +400036992 1824320 15493 +440665504 2132490 15493 +357460614 1755124 15493 +1020637028 3260391 15493 +355238674 1750222 15493 +721726438 3399096 15493 +883845368 3763631 15493 +3823612268 1505513 15493 +1019679330 4868636 15493 +345557147 1707172 5396 +425533919 2142396 5396 +347621980 1717929 5396 +311981681 1532296 5396 +341613117 1681216 5396 +330744986 1625255 5396 +329807287 1620053 5396 +362586801 1789305 5396 +355304256 1757030 5396 +336027842 1652440 5396 +358761655 1772276 5396 +354287775 1755100 5396 +394716849 1970284 5396 +321361119 1580371 5396 +332876677 1638737 5396 +321798074 1572147 5396 +347640092 1727017 5396 +325305975 1599256 5396 +320588145 1587832 5396 +353046681 1751090 5396 +319480944 1572243 5396 +342780039 1691649 5396 +345557147 1707172 5396 +356237260 1765423 5396 +328946387 1613656 5396 +321365624 1577180 5396 +329843396 1621051 5396 +320423344 1575169 5396 +345452003 1699120 5396 +337273159 1658803 5396 +341621159 1687540 5396 +328946387 1613656 5396 +311940991 1534489 5396 +333130764 1640536 5396 +321361043 1580371 5396 +321361043 1580371 5396 +362172488 1797497 5396 +328523998 1615684 5396 +349625749 1737042 5396 +345557147 1707172 5396 +365253025 1801934 5396 +328905697 1615849 5396 +328905697 1615849 5396 +324648411 1599856 5396 +376700610 1878063 5396 +365785846 1811200 5396 +328592441 1625812 5396 +328905697 1615849 5396 +394055266 1977746 5396 +347640092 1727017 5396 +324648411 1599856 5396 +359951500 1787926 5396 +347869798 1722469 5396 +320423344 1575169 5396 +321798074 1572147 5396 +328905697 1615849 5396 +329843396 1621051 5396 +328905697 1615849 5396 +329843396 1621051 5396 +342761570 1704027 5396 +350908446 1744485 5396 +352102907 1753480 5396 +339387445 1681789 5396 +328790806 1618123 5396 +340762175 1678767 5396 +349538780 1723981 5396 +311044096 1527094 5396 +328905697 1615849 5396 +358236655 1790683 5396 +329843396 1621051 5396 +328905697 1615849 5396 +329843396 1621051 5396 +361270898 1793293 5396 +329843396 1621051 5396 +390084013 1936466 5396 +408556318 2046133 5396 +329843396 1621051 5396 +344306192 1711933 5396 +356237260 1765423 5396 +330744986 1625255 5396 +330905092 1641109 5396 +336177785 1659097 5396 +364884414 1818766 5396 +321798074 1572147 5396 +330744986 1625255 5396 +352955847 1735876 5396 +348191938 1716519 5396 +344306192 1711933 5396 +324354496 1598057 5396 +336445650 1653603 5396 +337347240 1657807 5396 +329843396 1621051 5396 +354008083 1744711 5396 +356237260 1765423 5396 +328905697 1615849 5396 +321361043 1580371 5396 +344660138 1699777 5396 +329843396 1621051 5396 +337273159 1658803 5396 +363707827 1800982 5396 diff --git a/plutus-benchmark/marlowe/test/data.budgets.golden.tsv b/plutus-benchmark/marlowe/test/data.budgets.golden.tsv index 176522eb5bb..c2ff23ccca6 100644 --- a/plutus-benchmark/marlowe/test/data.budgets.golden.tsv +++ b/plutus-benchmark/marlowe/test/data.budgets.golden.tsv @@ -1,200 +1,200 @@ -316276351 1470403 12495 -443394497 1784094 12495 -1106396273 5061666 12495 -845453574 3697089 12495 -888649505 2475380 12495 -291738546 1356340 12495 -779001126 3486629 12495 -847868642 3830576 12495 -765980349 3387938 12495 -1122758713 5066672 12495 -1147837976 4964184 12495 -1102241751 4976305 12495 -1262027897 5641274 12495 -1405186119 6278147 12495 -474871388 2223764 12495 -797581765 3655508 12495 -502205997 2364012 12495 -802208902 3614300 12495 -293960486 1361242 12495 -931097146 4054997 12495 -787342179 3355460 12495 -294015044 1361242 12495 -1003662236 1382379 12495 -3930481500 1864620 12495 -361561148 1632804 12495 -291738546 1356340 12495 -563956652 2653107 12495 -1805947138 1791383 12495 -923931600 3436808 12495 -847978329 3834058 12495 -765750903 3297847 12495 -1206222744 5441943 12495 -293960486 1361242 12495 -468985185 2217418 12495 -632109898 2903341 12495 -746006747 3343360 12495 -291738546 1356340 12495 -864144186 3884625 12495 -291738546 1356340 12495 -1145470664 5134765 12495 -718560904 3296203 12495 -404143048 1685054 12495 -361214022 1662131 12495 -374765558 1729609 12495 -291738546 1356340 12495 -795642374 3607070 12495 -291738546 1356340 12495 -485898068 2274448 12495 -1092230744 4825180 12495 -1071232965 4925212 12495 -514996193 2380191 12495 -293960486 1361242 12495 -743290949 3380039 12495 -487783238 2283040 12495 -661365220 3034152 12495 -2213925420 2065624 12495 -1369094060 5737944 12495 -1156662608 5166151 12495 -3930481500 1864620 12495 -488065564 2279350 12495 -812966658 3664611 12495 -477147886 2228666 12495 -841422072 3790009 12495 -845138762 3853664 12495 -702288366 3230127 12495 -516258370 2375145 12495 -470107813 2109249 12495 -1344373386 5489056 12495 -1170988989 5223141 12495 -361561148 1632804 12495 -293960486 1361242 12495 -1130485830 5089312 12495 -374765558 1729609 12495 -516258370 2375145 12495 -656916014 2949824 12495 -319024800 1449171 12495 -586432118 2657954 12495 -1397102416 6246970 12495 -796140694 3590505 12495 -978524006 4611995 12495 -795691392 3636243 12495 -860033482 3868970 12495 -993337235 1327827 12495 -916854881 4114451 12495 -871002373 3878250 12495 -492346369 2300585 12495 -17859688962 1184347 12495 -1157463507 5200209 12495 -291738546 1356340 12495 -471207125 2222320 12495 -796443185 3600191 12495 -372310704 1589640 12495 -399662008 1831442 12495 -293960486 1361242 12495 -930548480 2668851 12495 -291738546 1356340 12495 -688102363 3026563 12495 -778800619 3130193 12495 -3797825956 1279761 12495 -970703712 4287816 12495 -150985921 672865 1690 -332736557 1439089 1690 -190115365 820375 1690 -122155085 542448 1690 -152968897 670387 1690 -120554622 554310 1690 -121492321 559512 1690 -192413183 849841 1690 -185042282 808645 1690 -145612115 656098 1690 -172183567 770065 1690 -203695052 892923 1690 -254783828 1066332 1690 -120554698 554310 1690 -147829032 639523 1690 -113039745 496657 1690 -202094779 904785 1690 -149085243 653220 1690 -166389512 724367 1690 -207684072 885832 1690 -131153445 602910 1690 -160616714 704041 1690 -150985921 672865 1690 -183441933 820507 1690 -122155085 542448 1690 -122155085 542448 1690 -120554622 554310 1690 -121492321 559512 1690 -148028246 661128 1690 -140145091 643790 1690 -167896502 754392 1690 -122155085 542448 1690 -121492321 559512 1690 -152968897 670387 1690 -120554622 554310 1690 -120554622 554310 1690 -183985713 796982 1690 -135013292 607498 1690 -196028252 845140 1690 -150985921 672865 1690 -195694024 836778 1690 -121492321 559512 1690 -121492321 559512 1690 -152968897 670387 1690 -250378052 1066989 1690 -229777135 1023020 1690 -150985921 672865 1690 -121492321 559512 1690 -280227246 1215661 1690 -202094779 904785 1690 -152968897 670387 1690 -198444383 850170 1690 -164789163 736229 1690 -121492321 559512 1690 -113039745 496657 1690 -121492321 559512 1690 -120554622 554310 1690 -121492321 559512 1690 -120554622 554310 1690 -190357276 824065 1690 -194584536 845582 1690 -207839514 920877 1690 -164789163 736229 1690 -140145091 643790 1690 -150414264 657580 1690 -166501588 718145 1690 -123092670 547650 1690 -121492321 559512 1690 -229307268 1002786 1690 -120554622 554310 1690 -121492321 559512 1690 -120554622 554310 1690 -183985713 796982 1690 -120554622 554310 1690 -232656983 1001000 1690 -322571118 1424176 1690 -120554622 554310 1690 -183985713 796982 1690 -183441933 820507 1690 -120554622 554310 1690 -164789163 736229 1690 -150017891 655441 1690 -224985294 975130 1690 -113039745 496657 1690 -120554622 554310 1690 -158627069 709728 1690 -174989357 757652 1690 -183985713 796982 1690 -147819132 639523 1690 -131153445 602910 1690 -131153445 602910 1690 -120554622 554310 1690 -177450631 812346 1690 -183441933 820507 1690 -121492321 559512 1690 -120554622 554310 1690 -150017891 655441 1690 -120554622 554310 1690 -140145091 643790 1690 -197772729 877129 1690 +364876257 1717431 15643 +503741628 2090162 15643 +1252314643 5801578 15643 +982206353 4389785 15643 +972412744 2897924 15643 +339725458 1600336 15643 +887815169 4039693 15643 +973234521 4465364 15643 +878168346 3956022 15643 +1338870488 6166368 15643 +1409689593 6284748 15643 +1255227399 5753037 15643 +1454266866 6617486 15643 +1613686631 7339531 15643 +549370738 2603104 15643 +933721550 4345172 15643 +586839258 2794864 15643 +912700259 4175292 15643 +341947398 1605238 15643 +1051299757 4666137 15643 +896082874 3906152 15643 +342001956 1605238 15643 +1060597391 1670319 15643 +3997612898 2204304 15643 +415077675 1904488 15643 +339725458 1600336 15643 +645184599 3065231 15643 +1863173624 2080823 15643 +1077581558 4214664 15643 +979012824 4497566 15643 +871117644 3833519 15643 +1364672339 6245795 15643 +341947398 1605238 15643 +553005452 2645238 15643 +722112769 3360245 15643 +851375151 3878564 15643 +339725458 1600336 15643 +1012980185 4637825 15643 +339725458 1600336 15643 +1297105655 5904333 15643 +820530006 3814315 15643 +464490179 1991122 15643 +429692746 2009279 15643 +453490188 2128333 15643 +339725458 1600336 15643 +903960417 4157034 15643 +339725458 1600336 15643 +560397418 2653788 15643 +1243624062 5592444 15643 +1212943713 5644736 15643 +591171194 2767927 15643 +341947398 1605238 15643 +849272347 3918275 15643 +562282588 2662380 15643 +751368091 3491056 15643 +2293367369 2466912 15643 +1672772317 7272152 15643 +1307684605 5932687 15643 +3997612898 2204304 15643 +562564914 2658690 15643 +946272135 4339915 15643 +551647236 2608006 15643 +962506981 4402037 15643 +970283967 4486116 15643 +803031480 3742175 15643 +600971626 2805861 15643 +533866920 2433445 15643 +1604195694 6800128 15643 +1317726695 5968489 15643 +415077675 1904488 15643 +341947398 1605238 15643 +1346597605 6189008 15643 +453490188 2128333 15643 +600971626 2805861 15643 +747531879 3409760 15643 +394047786 1827799 15643 +661071119 3036090 15643 +1604989934 7305322 15643 +900366441 4119845 15643 +1112647156 5293203 15643 +907325406 4203099 15643 +985178687 4501422 15643 +1043441786 1581383 15643 +1043952096 4760375 15643 +988644339 4476262 15643 +566845719 2679925 15643 +17902962909 1403519 15643 +1314735114 5998297 15643 +339725458 1600336 15643 +555227392 2650140 15643 +900668932 4129531 15643 +425827231 1861324 15643 +466839743 2171894 15643 +341947398 1605238 15643 +1030775235 3174323 15643 +339725458 1600336 15643 +786678815 3525711 15643 +922214649 3853665 15643 +3847930507 1533317 15643 +1097996258 4934640 15643 +165841117 747497 2053 +368888559 1621105 2053 +208576200 913867 2053 +134623973 605520 2053 +168821087 750451 2053 +133734167 620546 2053 +134671866 625748 2053 +213260326 954893 2053 +204277774 905701 2053 +161432305 735962 2053 +190390065 861489 2053 +226313846 1006971 2053 +275630971 1171384 2053 +133734243 620546 2053 +161973571 710991 2053 +124797976 556565 2053 +225424230 1021997 2053 +164194776 729920 2053 +182241702 804431 2053 +226144907 979324 2053 +146008641 677542 2053 +176436904 783905 2053 +165841117 747497 2053 +203388082 920727 2053 +134623973 605520 2053 +134623973 605520 2053 +133734167 620546 2053 +134671866 625748 2053 +163848436 740992 2053 +156707938 727018 2053 +187131994 851448 2053 +134623973 605520 2053 +134671866 625748 2053 +168821087 750451 2053 +133734167 620546 2053 +133734167 620546 2053 +200516560 880010 2053 +149157831 678966 2053 +213524093 933400 2053 +165841117 747497 2053 +214154859 930270 2053 +134671866 625748 2053 +134671866 625748 2053 +168821087 750451 2053 +272900846 1180437 2053 +259162533 1171052 2053 +165841117 747497 2053 +134671866 625748 2053 +309612644 1363693 2053 +225424230 1021997 2053 +168821087 750451 2053 +215940224 938430 2053 +181352010 819457 2053 +134671866 625748 2053 +124797976 556565 2053 +134671866 625748 2053 +133734167 620546 2053 +134671866 625748 2053 +133734167 620546 2053 +208882111 917957 2053 +212791034 937006 2053 +230458308 1034925 2053 +181352010 819457 2053 +156707938 727018 2053 +165555797 734480 2053 +181611121 794845 2053 +135561558 610722 2053 +134671866 625748 2053 +252636719 1119998 2053 +133734167 620546 2053 +134671866 625748 2053 +133734167 620546 2053 +200516560 880010 2053 +133734167 620546 2053 +255179777 1114448 2053 +362817079 1626348 2053 +133734167 620546 2053 +200516560 880010 2053 +203388082 920727 2053 +133734167 620546 2053 +181352010 819457 2053 +164162430 726909 2053 +247604088 1089178 2053 +124797976 556565 2053 +133734167 620546 2053 +176122910 797988 2053 +193514192 851544 2053 +200516560 880010 2053 +161963671 710991 2053 +146008641 677542 2053 +146008641 677542 2053 +133734167 620546 2053 +200780082 929558 2053 +203388082 920727 2053 +134671866 625748 2053 +133734167 620546 2053 +164162430 726909 2053 +133734167 620546 2053 +156707938 727018 2053 +220391523 991177 2053 diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-20.eval.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-20.eval.golden index 0f96e395028..b2921bf7604 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 111_474_671 -Memory: 550_394 -Term Size: 956 -Flat Size: 1_465 +CPU: 51_290_715 +Memory: 293_134 +Term Size: 470 +Flat Size: 1_045 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-4.eval.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-4.eval.golden index c31683facc1..0698c481c12 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 32_459_423 -Memory: 156_122 -Term Size: 956 -Flat Size: 1_079 +CPU: 15_328_731 +Memory: 88_430 +Term Size: 470 +Flat Size: 659 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.pir.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.pir.golden index 17994936a7e..0a58407c35b 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.pir.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.pir.golden @@ -39,124 +39,39 @@ (\(ds : TxOut) (xs : List TxOut) -> addInteger 1 (go xs)) in let - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] !`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` : all a b. (\a -> data -> a) a -> (\a -> data -> a) b -> data -> Tuple2 a b = /\a b -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (`$dUnsafeFromData` : (\a -> data -> a) b) (d : data) -> - casePair - {integer} - {list data} - {Tuple2 a b} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Tuple2 a b) - index - [ (\(ds : list data) -> - Tuple2 - {a} - {b} - (`$dUnsafeFromData` (headList {data} ds)) - (`$dUnsafeFromData` - (headList {data} (tailList {data} ds)))) ] - args) - in - letrec - !go : list data -> List (Tuple2 bytestring data) - = \(xs : list data) -> - case - (List (Tuple2 bytestring data)) - xs - [ (\(x : data) (xs : list data) -> - Cons - {Tuple2 bytestring data} - (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` - {bytestring} - {data} - unBData - (\(d : data) -> d) - x) - (go xs)) - , (Nil {Tuple2 bytestring data}) ] - in - letrec - !go : list data -> List bytestring - = \(xs : list data) -> - case - (List bytestring) - xs - [ (\(x : data) (xs : list data) -> - Cons {bytestring} (unBData x) (go xs)) - , (Nil {bytestring}) ] - in - let + case + (Tuple2 a b) + d + [ (\(arg : data) (arg : data) -> + Tuple2 + {a} + {b} + (`$dUnsafeFromData` arg) + (`$dUnsafeFromData` arg)) ] !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - casePair - {integer} - {list data} - {Credential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args) + case + Credential + d + [ (\(arg : data) -> PubKeyCredential (unBData arg)) + , (\(arg : data) -> ScriptCredential (unBData arg)) ] !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - casePair - {integer} - {list data} - {StakingCredential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> StakingCredential) - index - [ (\(ds : list data) -> - StakingHash - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - StakingPtr - (unIData (headList {data} ds)) - (unIData (headList {data} l)) - (unIData (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : - list data -> List (Tuple2 StakingCredential integer) - = \(xs : list data) -> case - (List (Tuple2 StakingCredential integer)) - xs - [ (\(x : data) - (xs : list data) -> - Cons - {Tuple2 StakingCredential integer} - (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` - {StakingCredential} - {integer} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - unIData - x) - (go xs)) - , (Nil {Tuple2 StakingCredential integer}) ] - in - let + StakingCredential + d + [ (\(arg : data) -> + StakingHash + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) (arg : data) -> + StakingPtr (unIData arg) (unIData arg) (unIData arg)) ] data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -165,75 +80,79 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : - data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert = \(d : data) -> - casePair - {integer} - {list data} - {DCert} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> DCert) - index - [ (\(ds : list data) -> - DCertDelegRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDeRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDelegate - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRegister - (unBData (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRetire - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> DCertGenesis) - , (\(ds : list data) -> DCertMir) ] - args) - in - letrec - !go : list data -> List DCert - = \(xs : list data) -> case - (List DCert) - xs - [ (\(x : data) (xs : list data) -> - Cons - {DCert} - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {DCert}) ] - in - let + DCert + d + [ (\(arg : data) -> + DCertDelegRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + DCertDelegDeRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) (arg : data) -> + DCertDelegDelegate + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) + (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRegister (unBData arg) (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRetire (unBData arg) (unIData arg)) + , DCertGenesis + , DCertMir ] + data (Extended :: * -> *) a | Extended_match where + Finite : a -> Extended a + NegInf : Extended a + PosInf : Extended a + !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> Extended a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> + case + (Extended a) + d + [ (NegInf {a}) + , (\(arg : data) -> Finite {a} (`$dUnsafeFromData` arg)) + , (PosInf {a}) ] + !`$fUnsafeFromDataList_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> List a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) -> + letrec + !go : list data -> List a + = \(xs : list data) -> + case + (List a) + xs + [ (\(x : data) (xs : list data) -> + Cons {a} (`$dUnsafeFromData` x) (go xs)) + , (Nil {a}) ] + in + \(d : data) -> go (unListData d) + data TxOutRef | TxOutRef_match where + TxOutRef : bytestring -> integer -> TxOutRef + !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef + = \(d : data) -> + case + TxOutRef + d + [ (\(arg : data) (arg : data) -> + TxOutRef + (case bytestring arg [(\(arg : data) -> unBData arg)]) + (unIData arg)) ] !`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` : all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -280,173 +199,35 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - casePair - {integer} - {list data} - {TxOut} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - TxOut - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {Address} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) ] - args)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) bytestring integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : list data -> List TxOut - = \(xs : list data) -> - case - (List TxOut) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxOut} - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxOut}) ] - in - let - !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring - = \(d : data) -> - casePair - {integer} - {list data} - {bytestring} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args) - data TxOutRef | TxOutRef_match where - TxOutRef : bytestring -> integer -> TxOutRef - !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef - = \(d : data) -> - casePair - {integer} - {list data} - {TxOutRef} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) - data TxInInfo | TxInInfo_match where - TxInInfo : TxOutRef -> TxOut -> TxInInfo - in - letrec - !go : - list data -> List TxInInfo - = \(xs : list data) -> case - (List TxInInfo) - xs - [ (\(x : data) - (xs : list data) -> - Cons - {TxInInfo} - (casePair - {integer} - {list data} - {TxInInfo} - (unConstrData x) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args)) - (go xs)) - , (Nil {TxInInfo}) ] - in - let - !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool - = \(d : data) -> - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - data (Extended :: * -> *) a | Extended_match where - Finite : a -> Extended a - NegInf : Extended a - PosInf : Extended a - !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : - all a. (\a -> data -> a) a -> data -> Extended a - = /\a -> - \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Extended a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Extended a) - index - [ (\(ds : list data) -> NegInf {a}) - , (\(ds : list data) -> - Finite {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> PosInf {a}) ] - args) + TxOut + eta + [ (\(arg : data) + (arg : data) + (arg : data) -> + TxOut + (case + Address + arg + [ (\(arg : data) + (arg : data) -> + Address + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {StakingCredential} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) ] data Unit | Unit_match where Unit : Unit data ScriptPurpose | ScriptPurpose_match where @@ -460,6 +241,8 @@ UpperBound : Extended a -> bool -> UpperBound a data (Interval :: * -> *) a | Interval_match where Interval : LowerBound a -> UpperBound a -> Interval a + data TxInInfo | TxInInfo_match where + TxInInfo : TxOutRef -> TxOut -> TxInInfo data TxInfo | TxInfo_match where TxInfo : List TxInInfo -> @@ -482,196 +265,134 @@ in \(d : data) -> ScriptContext_match - (casePair - {integer} - {list data} - {ScriptContext} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {TxInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInfo) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - in - TxInfo - (let - !d : data = headList {data} ds - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Interval integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval + (case + ScriptContext + d + [ (\(arg : data) + (arg : data) -> + ScriptContext + (case + TxInfo + arg + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxInfo + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + (\(d : data) -> + case + TxInInfo + d + [ (\(arg : data) + (arg : data) -> + TxInInfo + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg)) ]) + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxOut} + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {DCert} + `$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {Tuple2 StakingCredential integer} + (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` + {StakingCredential} + {integer} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + unIData) + arg) + (case + (Interval integer) + arg + [ (\(arg : data) + (arg : data) -> + Interval + {integer} + (case + (LowerBound integer) + arg + [ (\(arg : data) + (arg : data) -> + LowerBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (case bool arg [False, True])) ]) + (case + (UpperBound integer) + arg + [ (\(arg : data) + (arg : data) -> + UpperBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` {integer} - (let - !d : data - = headList {data} ds - in - casePair - {integer} - {list data} - {LowerBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - LowerBound integer) - index - [ (\(ds : list data) -> - LowerBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (let - !d : data - = headList - {data} - (tailList {data} ds) - in - casePair - {integer} - {list data} - {UpperBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - UpperBound integer) - index - [ (\(ds : list data) -> - UpperBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args))) ] - args)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} l)))) ] - args)) - (let - !d : data = headList {data} (tailList {data} ds) - in - casePair - {integer} - {list data} - {ScriptPurpose} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptPurpose) - index - [ (\(ds : list data) -> - Minting (unBData (headList {data} ds))) - , (\(ds : list data) -> - Spending - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Rewarding - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Certifying - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` - (headList {data} ds))) ] - args))) ] - args)) + unIData + arg) + (case + bool + arg + [False, True])) ])) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {Tuple2 bytestring data} + (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` + {bytestring} + {data} + unBData + (\(d : data) -> d)) + arg) + (case + bytestring + arg + [(\(arg : data) -> unBData arg)])) ]) + (case + ScriptPurpose + arg + [ (\(arg : data) -> Minting (unBData arg)) + , (\(arg : data) -> + Spending + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Rewarding + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Certifying + (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg)) ])) ]) {Unit} (\(ipv : TxInfo) (ipv : ScriptPurpose) -> case diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.size.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.size.golden index 13074505545..4af7c92223a 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.size.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext1.size.golden @@ -1 +1 @@ -956 \ No newline at end of file +470 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-20.eval.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-20.eval.golden index a61e86f09c4..e4bfd37846f 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 104_194_248 -Memory: 518_652 -Term Size: 899 -Flat Size: 1_390 +CPU: 44_010_292 +Memory: 261_392 +Term Size: 413 +Flat Size: 970 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-4.eval.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-4.eval.golden index b18eaa3c7ae..dbc1cfad5b1 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 30_382_328 -Memory: 146_812 -Term Size: 899 -Flat Size: 1_004 +CPU: 13_251_636 +Memory: 79_120 +Term Size: 413 +Flat Size: 584 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.pir.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.pir.golden index 577a21707cc..54a08cdf13c 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.pir.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.pir.golden @@ -1,6 +1,4 @@ (let - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b !`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` : @@ -9,127 +7,39 @@ \(`$dUnsafeFromData` : (\a -> data -> a) a) (`$dUnsafeFromData` : (\a -> data -> a) b) (d : data) -> - casePair - {integer} - {list data} - {Tuple2 a b} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Tuple2 a b) - index - [ (\(ds : list data) -> - Tuple2 - {a} - {b} - (`$dUnsafeFromData` (headList {data} ds)) - (`$dUnsafeFromData` - (headList {data} (tailList {data} ds)))) ] - args) - in - letrec - data (List :: * -> *) a | List_match where - Nil : List a - Cons : a -> List a -> List a - in - letrec - !go : list data -> List (Tuple2 bytestring data) - = \(xs : list data) -> - case - (List (Tuple2 bytestring data)) - xs - [ (\(x : data) (xs : list data) -> - Cons - {Tuple2 bytestring data} - (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` - {bytestring} - {data} - unBData - (\(d : data) -> d) - x) - (go xs)) - , (Nil {Tuple2 bytestring data}) ] - in - letrec - !go : list data -> List bytestring - = \(xs : list data) -> - case - (List bytestring) - xs - [ (\(x : data) (xs : list data) -> - Cons {bytestring} (unBData x) (go xs)) - , (Nil {bytestring}) ] - in - let + case + (Tuple2 a b) + d + [ (\(arg : data) (arg : data) -> + Tuple2 + {a} + {b} + (`$dUnsafeFromData` arg) + (`$dUnsafeFromData` arg)) ] data Credential | Credential_match where PubKeyCredential : bytestring -> Credential ScriptCredential : bytestring -> Credential !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - casePair - {integer} - {list data} - {Credential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args) + case + Credential + d + [ (\(arg : data) -> PubKeyCredential (unBData arg)) + , (\(arg : data) -> ScriptCredential (unBData arg)) ] data StakingCredential | StakingCredential_match where StakingHash : Credential -> StakingCredential StakingPtr : integer -> integer -> integer -> StakingCredential !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - casePair - {integer} - {list data} - {StakingCredential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> StakingCredential) - index - [ (\(ds : list data) -> - StakingHash - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - StakingPtr - (unIData (headList {data} ds)) - (unIData (headList {data} l)) - (unIData (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : - list data -> List (Tuple2 StakingCredential integer) - = \(xs : list data) -> case - (List (Tuple2 StakingCredential integer)) - xs - [ (\(x : data) - (xs : list data) -> - Cons - {Tuple2 StakingCredential integer} - (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` - {StakingCredential} - {integer} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - unIData - x) - (go xs)) - , (Nil {Tuple2 StakingCredential integer}) ] - in - let + StakingCredential + d + [ (\(arg : data) -> + StakingHash + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) (arg : data) -> + StakingPtr (unIData arg) (unIData arg) (unIData arg)) ] data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -138,58 +48,77 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : - data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert = \(d : data) -> - casePair - {integer} - {list data} - {DCert} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> DCert) - index - [ (\(ds : list data) -> - DCertDelegRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDeRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDelegate - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRegister - (unBData (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRetire - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> DCertGenesis) - , (\(ds : list data) -> DCertMir) ] - args) + case + DCert + d + [ (\(arg : data) -> + DCertDelegRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + DCertDelegDeRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) (arg : data) -> + DCertDelegDelegate + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) + (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRegister (unBData arg) (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRetire (unBData arg) (unIData arg)) + , DCertGenesis + , DCertMir ] + data (Extended :: * -> *) a | Extended_match where + Finite : a -> Extended a + NegInf : Extended a + PosInf : Extended a + !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> Extended a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> + case + (Extended a) + d + [ (NegInf {a}) + , (\(arg : data) -> Finite {a} (`$dUnsafeFromData` arg)) + , (PosInf {a}) ] in letrec - !go : list data -> List DCert - = \(xs : list data) -> - case - (List DCert) - xs - [ (\(x : data) (xs : list data) -> - Cons - {DCert} - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {DCert}) ] + data (List :: * -> *) a | List_match where + Nil : List a + Cons : a -> List a -> List a in let + !`$fUnsafeFromDataList_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> List a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) -> + letrec + !go : list data -> List a + = \(xs : list data) -> + case + (List a) + xs + [ (\(x : data) (xs : list data) -> + Cons {a} (`$dUnsafeFromData` x) (go xs)) + , (Nil {a}) ] + in + \(d : data) -> go (unListData d) + data TxOutRef | TxOutRef_match where + TxOutRef : bytestring -> integer -> TxOutRef + !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef + = \(d : data) -> + case + TxOutRef + d + [ (\(arg : data) (arg : data) -> + TxOutRef + (case bytestring arg [(\(arg : data) -> unBData arg)]) + (unIData arg)) ] data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a @@ -197,19 +126,11 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -266,173 +187,35 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - casePair - {integer} - {list data} - {TxOut} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - TxOut - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {Address} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) ] - args)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) bytestring integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : list data -> List TxOut - = \(xs : list data) -> - case - (List TxOut) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxOut} - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxOut}) ] - in - let - !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring - = \(d : data) -> - casePair - {integer} - {list data} - {bytestring} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args) - data TxOutRef | TxOutRef_match where - TxOutRef : bytestring -> integer -> TxOutRef - !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef - = \(d : data) -> - casePair - {integer} - {list data} - {TxOutRef} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) - data TxInInfo | TxInInfo_match where - TxInInfo : TxOutRef -> TxOut -> TxInInfo - in - letrec - !go : - list data -> List TxInInfo - = \(xs : list data) -> case - (List TxInInfo) - xs - [ (\(x : data) - (xs : list data) -> - Cons - {TxInInfo} - (casePair - {integer} - {list data} - {TxInInfo} - (unConstrData x) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args)) - (go xs)) - , (Nil {TxInInfo}) ] - in - let - !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool - = \(d : data) -> - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - data (Extended :: * -> *) a | Extended_match where - Finite : a -> Extended a - NegInf : Extended a - PosInf : Extended a - !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : - all a. (\a -> data -> a) a -> data -> Extended a - = /\a -> - \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Extended a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Extended a) - index - [ (\(ds : list data) -> NegInf {a}) - , (\(ds : list data) -> - Finite {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> PosInf {a}) ] - args) + TxOut + eta + [ (\(arg : data) + (arg : data) + (arg : data) -> + TxOut + (case + Address + arg + [ (\(arg : data) + (arg : data) -> + Address + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {StakingCredential} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) ] data Unit | Unit_match where Unit : Unit data ScriptPurpose | ScriptPurpose_match where @@ -446,6 +229,8 @@ UpperBound : Extended a -> bool -> UpperBound a data (Interval :: * -> *) a | Interval_match where Interval : LowerBound a -> UpperBound a -> Interval a + data TxInInfo | TxInInfo_match where + TxInInfo : TxOutRef -> TxOut -> TxInInfo data TxInfo | TxInfo_match where TxInfo : List TxInInfo -> @@ -470,200 +255,137 @@ let !ds : ScriptContext - = casePair - {integer} - {list data} - {ScriptContext} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {TxInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInfo) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - in - TxInfo - (let - !d : data = headList {data} ds - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Interval integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval + = case + ScriptContext + d + [ (\(arg : data) + (arg : data) -> + ScriptContext + (case + TxInfo + arg + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxInfo + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + (\(d : data) -> + case + TxInInfo + d + [ (\(arg : data) + (arg : data) -> + TxInInfo + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg)) ]) + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxOut} + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {DCert} + `$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {Tuple2 StakingCredential integer} + (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` + {StakingCredential} + {integer} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + unIData) + arg) + (case + (Interval integer) + arg + [ (\(arg : data) + (arg : data) -> + Interval + {integer} + (case + (LowerBound integer) + arg + [ (\(arg : data) + (arg : data) -> + LowerBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (case + bool + arg + [False, True])) ]) + (case + (UpperBound integer) + arg + [ (\(arg : data) + (arg : data) -> + UpperBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` {integer} - (let - !d : data - = headList {data} ds - in - casePair - {integer} - {list data} - {LowerBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - LowerBound integer) - index - [ (\(ds : - list data) -> - LowerBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (let - !d : data - = headList - {data} - (tailList {data} ds) - in - casePair - {integer} - {list data} - {UpperBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - UpperBound integer) - index - [ (\(ds : - list data) -> - UpperBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args))) ] - args)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} l)))) ] - args)) - (let - !d : data = headList {data} (tailList {data} ds) - in - casePair - {integer} - {list data} - {ScriptPurpose} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptPurpose) - index - [ (\(ds : list data) -> - Minting (unBData (headList {data} ds))) - , (\(ds : list data) -> - Spending - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Rewarding - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Certifying - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` - (headList {data} ds))) ] - args))) ] - args) + unIData + arg) + (case + bool + arg + [False, True])) ])) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {Tuple2 bytestring data} + (`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` + {bytestring} + {data} + unBData + (\(d : data) -> d)) + arg) + (case + bytestring + arg + [(\(arg : data) -> unBData arg)])) ]) + (case + ScriptPurpose + arg + [ (\(arg : data) -> Minting (unBData arg)) + , (\(arg : data) -> + Spending + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Rewarding + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Certifying + (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg)) ])) ] in Unit) (Constr 0 diff --git a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.size.golden b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.size.golden index 2a0f68ff7a9..5c9fe11c04f 100644 --- a/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.size.golden +++ b/plutus-benchmark/script-contexts/test/V1/9.6/checkScriptContext2.size.golden @@ -1 +1 @@ -899 \ No newline at end of file +413 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1.pir.golden b/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1.pir.golden index 0a2d76cc3af..5d660dccdb2 100644 --- a/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1.pir.golden +++ b/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1.pir.golden @@ -69,24 +69,10 @@ (headList {data} l) (unListData (headList {data} l)) (unListData (headList {data} l)) - (let - !d : data = headList {data} (tailList {data} l) - in - (let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> - case r p [f]) - {bytestring} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bytestring) - index - [ (\(ds : list data) -> - unBData (headList {data} ds)) ] - args))) + (case + bytestring + (headList {data} (tailList {data} l)) + [(\(arg : data) -> unBData arg)])) (headList {data} (case diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-20.eval.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-20.eval.golden index 07b7313d3ac..59ff2a36855 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 124_328_253 -Memory: 606_806 -Term Size: 1_013 -Flat Size: 1_575 +CPU: 53_466_651 +Memory: 306_498 +Term Size: 498 +Flat Size: 1_134 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-4.eval.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-4.eval.golden index 6dcdcbf4bdd..ea5632f1f14 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 36_906_589 -Memory: 177_398 -Term Size: 1_013 -Flat Size: 1_141 +CPU: 16_480_667 +Memory: 95_394 +Term Size: 498 +Flat Size: 700 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.pir.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.pir.golden index 6692f9fac5e..03f0665bbd1 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.pir.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.pir.golden @@ -43,60 +43,56 @@ 0 (\(ds : TxOut) (xs : List TxOut) -> addInteger 1 (go xs)) in - letrec - !go : list data -> List bytestring - = \(xs : list data) -> - case - (List bytestring) - xs - [ (\(x : data) (xs : list data) -> - Cons {bytestring} (unBData x) (go xs)) - , (Nil {bytestring}) ] - in let - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] + !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data + = \(d : data) -> d + data (Extended :: * -> *) a | Extended_match where + Finite : a -> Extended a + NegInf : Extended a + PosInf : Extended a + !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> Extended a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> + case + (Extended a) + d + [ (NegInf {a}) + , (\(arg : data) -> Finite {a} (`$dUnsafeFromData` arg)) + , (PosInf {a}) ] + !`$fUnsafeFromDataList_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> List a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) -> + letrec + !go : list data -> List a + = \(xs : list data) -> + case + (List a) + xs + [ (\(x : data) (xs : list data) -> + Cons {a} (`$dUnsafeFromData` x) (go xs)) + , (Nil {a}) ] + in + \(d : data) -> go (unListData d) !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - casePair - {integer} - {list data} - {Credential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args) + case + Credential + d + [ (\(arg : data) -> PubKeyCredential (unBData arg)) + , (\(arg : data) -> ScriptCredential (unBData arg)) ] !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - casePair - {integer} - {list data} - {StakingCredential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> StakingCredential) - index - [ (\(ds : list data) -> - StakingHash - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - StakingPtr - (unIData (headList {data} ds)) - (unIData (headList {data} l)) - (unIData (headList {data} (tailList {data} l)))) ] - args) + case + StakingCredential + d + [ (\(arg : data) -> + StakingHash + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) (arg : data) -> + StakingPtr (unIData arg) (unIData arg) (unIData arg)) ] data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -105,75 +101,72 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : - data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert = \(d : data) -> - casePair - {integer} - {list data} - {DCert} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> DCert) - index - [ (\(ds : list data) -> - DCertDelegRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDeRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDelegate - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRegister - (unBData (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRetire - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> DCertGenesis) - , (\(ds : list data) -> DCertMir) ] - args) - in - letrec - !go : list data -> List DCert - = \(xs : list data) -> case - (List DCert) - xs - [ (\(x : data) (xs : list data) -> - Cons - {DCert} - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {DCert}) ] - in - let + DCert + d + [ (\(arg : data) -> + DCertDelegRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + DCertDelegDeRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) (arg : data) -> + DCertDelegDelegate + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) + (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRegister (unBData arg) (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRetire (unBData arg) (unIData arg)) + , DCertGenesis + , DCertMir ] + data TxOutRef | TxOutRef_match where + TxOutRef : bytestring -> integer -> TxOutRef + !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef + = \(d : data) -> + case + TxOutRef + d + [ (\(arg : data) (arg : data) -> + TxOutRef + (case bytestring arg [(\(arg : data) -> unBData arg)]) + (unIData arg)) ] + data ScriptPurpose | ScriptPurpose_match where + Certifying : DCert -> ScriptPurpose + Minting : bytestring -> ScriptPurpose + Rewarding : StakingCredential -> ScriptPurpose + Spending : TxOutRef -> ScriptPurpose + !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : + data -> ScriptPurpose + = \(d : data) -> + case + ScriptPurpose + d + [ (\(arg : data) -> Minting (unBData arg)) + , (\(arg : data) -> + Spending + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> + Rewarding + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Certifying + (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` arg)) ] !`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` : all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -220,240 +213,53 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - casePair - {integer} - {list data} - {TxOut} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {Address} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) ] - args)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) bytestring integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {OutputDatum} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> OutputDatum) - index - [ (\(ds : list data) -> NoOutputDatum) - , (\(ds : list data) -> - OutputDatumHash - (unBData (headList {data} ds))) - , (\(ds : list data) -> - OutputDatum (headList {data} ds)) ] - args)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : list data -> List TxOut - = \(xs : list data) -> case - (List TxOut) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxOut} - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxOut}) ] - in - let - !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring - = \(d : data) -> - casePair - {integer} - {list data} - {bytestring} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args) - data TxOutRef | TxOutRef_match where - TxOutRef : bytestring -> integer -> TxOutRef - !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef - = \(d : data) -> - casePair - {integer} - {list data} - {TxOutRef} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + TxOut + eta + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxOut + (case + Address + arg + [ (\(arg : data) + (arg : data) -> + Address + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {StakingCredential} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (case + OutputDatum + arg + [ NoOutputDatum + , (\(arg : data) -> OutputDatumHash (unBData arg)) + , (\(arg : data) -> OutputDatum arg) ]) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) ] data TxInInfo | TxInInfo_match where TxInInfo : TxOutRef -> TxOut -> TxInInfo !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - casePair - {integer} - {list data} - {TxInInfo} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> - case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - let - !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data - = \(d : data) -> d - !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool - = \(d : data) -> - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - data (Extended :: * -> *) a | Extended_match where - Finite : a -> Extended a - NegInf : Extended a - PosInf : Extended a - !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : - all a. (\a -> data -> a) a -> data -> Extended a - = /\a -> - \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Extended a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Extended a) - index - [ (\(ds : list data) -> NegInf {a}) - , (\(ds : list data) -> - Finite {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> PosInf {a}) ] - args) - data ScriptPurpose | ScriptPurpose_match where - Certifying : DCert -> ScriptPurpose - Minting : bytestring -> ScriptPurpose - Rewarding : StakingCredential -> ScriptPurpose - Spending : TxOutRef -> ScriptPurpose - !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : - data -> ScriptPurpose - = \(d : data) -> - casePair - {integer} - {list data} - {ScriptPurpose} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptPurpose) - index - [ (\(ds : list data) -> Minting (unBData (headList {data} ds))) - , (\(ds : list data) -> - Spending - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Rewarding - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Certifying - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` - (headList {data} ds))) ] - args) + TxInInfo + d + [ (\(arg : data) (arg : data) -> + TxInInfo + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` arg)) ] data Unit | Unit_match where Unit : Unit data (LowerBound :: * -> *) a | LowerBound_match where @@ -486,186 +292,118 @@ in \(d : data) -> ScriptContext_match - (casePair - {integer} - {list data} - {ScriptContext} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {TxInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInfo) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - in - TxInfo - (let - !d : data = headList {data} ds - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {StakingCredential} - {integer} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Interval integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval + (case + ScriptContext + d + [ (\(arg : data) + (arg : data) -> + ScriptContext + (case + TxInfo + arg + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxInfo + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxOut} + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {DCert} + `$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {StakingCredential} + {integer} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + unIData + arg) + (case + (Interval integer) + arg + [ (\(arg : data) + (arg : data) -> + Interval + {integer} + (case + (LowerBound integer) + arg + [ (\(arg : data) + (arg : data) -> + LowerBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (case bool arg [False, True])) ]) + (case + (UpperBound integer) + arg + [ (\(arg : data) + (arg : data) -> + UpperBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` {integer} - (let - !d : data - = headList {data} ds - in - casePair - {integer} - {list data} - {LowerBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - LowerBound integer) - index - [ (\(ds : list data) -> - LowerBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (let - !d : data - = headList - {data} - (tailList {data} ds) - in - casePair - {integer} - {list data} - {UpperBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - UpperBound integer) - index - [ (\(ds : list data) -> - UpperBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args))) ] - args)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {ScriptPurpose} - {data} - `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {data} - unBData - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} l)))) ] - args)) - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args)) + unIData + arg) + (case + bool + arg + [False, True])) ])) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {ScriptPurpose} + {data} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {data} + unBData + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (case + bytestring + arg + [(\(arg : data) -> unBData arg)])) ]) + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) ]) {Unit} (\(ipv : TxInfo) (ipv : ScriptPurpose) -> case diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.size.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.size.golden index 9670e7bd0b0..f35d9602e1a 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.size.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext1.size.golden @@ -1 +1 @@ -1013 \ No newline at end of file +498 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-20.eval.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-20.eval.golden index f61443058cd..5ed1ae663ef 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 117_015_830 -Memory: 574_864 -Term Size: 954 -Flat Size: 1_499 +CPU: 46_154_228 +Memory: 274_556 +Term Size: 439 +Flat Size: 1_058 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-4.eval.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-4.eval.golden index 7ba57b160df..fd23be28fa9 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 34_797_494 -Memory: 167_888 -Term Size: 954 -Flat Size: 1_065 +CPU: 14_371_572 +Memory: 85_884 +Term Size: 439 +Flat Size: 624 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.pir.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.pir.golden index ed9bafd65e3..2b787c78310 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.pir.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.pir.golden @@ -1,68 +1,66 @@ -(letrec +(let + !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data + = \(d : data) -> d + data (Extended :: * -> *) a | Extended_match where + Finite : a -> Extended a + NegInf : Extended a + PosInf : Extended a + !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> Extended a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> + case + (Extended a) + d + [ (NegInf {a}) + , (\(arg : data) -> Finite {a} (`$dUnsafeFromData` arg)) + , (PosInf {a}) ] + in + letrec data (List :: * -> *) a | List_match where Nil : List a Cons : a -> List a -> List a in - letrec - !go : list data -> List bytestring - = \(xs : list data) -> - case - (List bytestring) - xs - [ (\(x : data) (xs : list data) -> - Cons {bytestring} (unBData x) (go xs)) - , (Nil {bytestring}) ] - in let - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] + !`$fUnsafeFromDataList_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> List a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) -> + letrec + !go : list data -> List a + = \(xs : list data) -> + case + (List a) + xs + [ (\(x : data) (xs : list data) -> + Cons {a} (`$dUnsafeFromData` x) (go xs)) + , (Nil {a}) ] + in + \(d : data) -> go (unListData d) data Credential | Credential_match where PubKeyCredential : bytestring -> Credential ScriptCredential : bytestring -> Credential !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - casePair - {integer} - {list data} - {Credential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args) + case + Credential + d + [ (\(arg : data) -> PubKeyCredential (unBData arg)) + , (\(arg : data) -> ScriptCredential (unBData arg)) ] data StakingCredential | StakingCredential_match where StakingHash : Credential -> StakingCredential StakingPtr : integer -> integer -> integer -> StakingCredential !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - casePair - {integer} - {list data} - {StakingCredential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> StakingCredential) - index - [ (\(ds : list data) -> - StakingHash - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - StakingPtr - (unIData (headList {data} ds)) - (unIData (headList {data} l)) - (unIData (headList {data} (tailList {data} l)))) ] - args) + case + StakingCredential + d + [ (\(arg : data) -> + StakingHash + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) (arg : data) -> + StakingPtr (unIData arg) (unIData arg) (unIData arg)) ] data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -71,58 +69,63 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : - data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert = \(d : data) -> - casePair - {integer} - {list data} - {DCert} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> DCert) - index - [ (\(ds : list data) -> - DCertDelegRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDeRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDelegate - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRegister - (unBData (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRetire - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> DCertGenesis) - , (\(ds : list data) -> DCertMir) ] - args) - in - letrec - !go : list data -> List DCert - = \(xs : list data) -> case - (List DCert) - xs - [ (\(x : data) (xs : list data) -> - Cons - {DCert} - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {DCert}) ] - in - let + DCert + d + [ (\(arg : data) -> + DCertDelegRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + DCertDelegDeRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) (arg : data) -> + DCertDelegDelegate + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) + (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRegister (unBData arg) (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRetire (unBData arg) (unIData arg)) + , DCertGenesis + , DCertMir ] + data TxOutRef | TxOutRef_match where + TxOutRef : bytestring -> integer -> TxOutRef + !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef + = \(d : data) -> + case + TxOutRef + d + [ (\(arg : data) (arg : data) -> + TxOutRef + (case bytestring arg [(\(arg : data) -> unBData arg)]) + (unIData arg)) ] + data ScriptPurpose | ScriptPurpose_match where + Certifying : DCert -> ScriptPurpose + Minting : bytestring -> ScriptPurpose + Rewarding : StakingCredential -> ScriptPurpose + Spending : TxOutRef -> ScriptPurpose + !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : + data -> ScriptPurpose + = \(d : data) -> + case + ScriptPurpose + d + [ (\(arg : data) -> Minting (unBData arg)) + , (\(arg : data) -> + Spending + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> + Rewarding + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Certifying + (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` arg)) ] data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a @@ -130,19 +133,11 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : @@ -206,240 +201,53 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - casePair - {integer} - {list data} - {TxOut} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {Address} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) ] - args)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) bytestring integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {OutputDatum} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> OutputDatum) - index - [ (\(ds : list data) -> NoOutputDatum) - , (\(ds : list data) -> - OutputDatumHash - (unBData (headList {data} ds))) - , (\(ds : list data) -> - OutputDatum (headList {data} ds)) ] - args)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : list data -> List TxOut - = \(xs : list data) -> case - (List TxOut) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxOut} - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxOut}) ] - in - let - !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring - = \(d : data) -> - casePair - {integer} - {list data} - {bytestring} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args) - data TxOutRef | TxOutRef_match where - TxOutRef : bytestring -> integer -> TxOutRef - !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef - = \(d : data) -> - casePair - {integer} - {list data} - {TxOutRef} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + TxOut + eta + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxOut + (case + Address + arg + [ (\(arg : data) + (arg : data) -> + Address + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {StakingCredential} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (case + OutputDatum + arg + [ NoOutputDatum + , (\(arg : data) -> OutputDatumHash (unBData arg)) + , (\(arg : data) -> OutputDatum arg) ]) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) ] data TxInInfo | TxInInfo_match where TxInInfo : TxOutRef -> TxOut -> TxInInfo !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - casePair - {integer} - {list data} - {TxInInfo} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> - case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - let - !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data - = \(d : data) -> d - !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool - = \(d : data) -> - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - data (Extended :: * -> *) a | Extended_match where - Finite : a -> Extended a - NegInf : Extended a - PosInf : Extended a - !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : - all a. (\a -> data -> a) a -> data -> Extended a - = /\a -> - \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Extended a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Extended a) - index - [ (\(ds : list data) -> NegInf {a}) - , (\(ds : list data) -> - Finite {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> PosInf {a}) ] - args) - data ScriptPurpose | ScriptPurpose_match where - Certifying : DCert -> ScriptPurpose - Minting : bytestring -> ScriptPurpose - Rewarding : StakingCredential -> ScriptPurpose - Spending : TxOutRef -> ScriptPurpose - !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : - data -> ScriptPurpose - = \(d : data) -> - casePair - {integer} - {list data} - {ScriptPurpose} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptPurpose) - index - [ (\(ds : list data) -> Minting (unBData (headList {data} ds))) - , (\(ds : list data) -> - Spending - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Rewarding - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Certifying - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` - (headList {data} ds))) ] - args) + TxInInfo + d + [ (\(arg : data) (arg : data) -> + TxInInfo + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` arg)) ] data Unit | Unit_match where Unit : Unit data (LowerBound :: * -> *) a | LowerBound_match where @@ -474,190 +282,121 @@ let !ds : ScriptContext - = casePair - {integer} - {list data} - {ScriptContext} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {TxInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInfo) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - in - TxInfo - (let - !d : data = headList {data} ds - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {StakingCredential} - {integer} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Interval integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval + = case + ScriptContext + d + [ (\(arg : data) + (arg : data) -> + ScriptContext + (case + TxInfo + arg + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxInfo + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxOut} + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {DCert} + `$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {StakingCredential} + {integer} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + unIData + arg) + (case + (Interval integer) + arg + [ (\(arg : data) + (arg : data) -> + Interval + {integer} + (case + (LowerBound integer) + arg + [ (\(arg : data) + (arg : data) -> + LowerBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (case + bool + arg + [False, True])) ]) + (case + (UpperBound integer) + arg + [ (\(arg : data) + (arg : data) -> + UpperBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` {integer} - (let - !d : data - = headList {data} ds - in - casePair - {integer} - {list data} - {LowerBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - LowerBound integer) - index - [ (\(ds : - list data) -> - LowerBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (let - !d : data - = headList - {data} - (tailList {data} ds) - in - casePair - {integer} - {list data} - {UpperBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - UpperBound integer) - index - [ (\(ds : - list data) -> - UpperBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args))) ] - args)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {ScriptPurpose} - {data} - `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {data} - unBData - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} l)))) ] - args)) - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) + unIData + arg) + (case + bool + arg + [False, True])) ])) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {ScriptPurpose} + {data} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {data} + unBData + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (case + bytestring + arg + [(\(arg : data) -> unBData arg)])) ]) + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) ] in Unit) (Constr 0 diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.size.golden b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.size.golden index 71ed48c5f39..27384974685 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.size.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/checkScriptContext2.size.golden @@ -1 +1 @@ -954 \ No newline at end of file +439 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.eval.golden b/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.eval.golden index 3e8412e0fb9..02bc581a9d8 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.eval.golden @@ -1,6 +1,6 @@ -CPU: 145_894_198 -Memory: 724_058 -Term Size: 1_149 -Flat Size: 2_145 +CPU: 62_548_124 +Memory: 372_534 +Term Size: 634 +Flat Size: 1_704 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.pir.golden b/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.pir.golden index 3c08a1fe2d3..6b2392dd9a7 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.pir.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.pir.golden @@ -1,68 +1,109 @@ +let + data Credential | Credential_match where + PubKeyCredential : bytestring -> Credential + ScriptCredential : bytestring -> Credential + data StakingCredential | StakingCredential_match where + StakingHash : Credential -> StakingCredential + StakingPtr : integer -> integer -> integer -> StakingCredential + !`$fEqStakingCredential_$c==` : StakingCredential -> StakingCredential -> bool + = \(ds : StakingCredential) (ds : StakingCredential) -> + StakingCredential_match + ds + {bool} + (\(l : Credential) -> + StakingCredential_match + ds + {bool} + (\(r : Credential) -> + Credential_match + l + {bool} + (\(l : bytestring) -> + Credential_match + r + {bool} + (\(r : bytestring) -> equalsByteString l r) + (\(ipv : bytestring) -> False)) + (\(a : bytestring) -> + Credential_match + r + {bool} + (\(ipv : bytestring) -> False) + (\(a' : bytestring) -> equalsByteString a a'))) + (\(ipv : integer) (ipv : integer) (ipv : integer) -> False)) + (\(a : integer) (b : integer) (c : integer) -> + StakingCredential_match + ds + {bool} + (\(ipv : Credential) -> False) + (\(a' : integer) (b' : integer) (c' : integer) -> + case + (all dead. bool) + (equalsInteger a a') + [ (/\dead -> False) + , (/\dead -> + case + (all dead. bool) + (equalsInteger b b') + [(/\dead -> False), (/\dead -> equalsInteger c c')] + {all dead. dead}) ] + {all dead. dead})) + !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data + = \(d : data) -> d + data (Extended :: * -> *) a | Extended_match where + Finite : a -> Extended a + NegInf : Extended a + PosInf : Extended a + !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> Extended a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> + case + (Extended a) + d + [ (NegInf {a}) + , (\(arg : data) -> Finite {a} (`$dUnsafeFromData` arg)) + , (PosInf {a}) ] +in letrec data (List :: * -> *) a | List_match where Nil : List a Cons : a -> List a -> List a in -letrec - !go : list data -> List bytestring - = \(xs : list data) -> - case - (List bytestring) - xs - [ (\(x : data) (xs : list data) -> - Cons {bytestring} (unBData x) (go xs)) - , (Nil {bytestring}) ] -in let - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] - data Credential | Credential_match where - PubKeyCredential : bytestring -> Credential - ScriptCredential : bytestring -> Credential + !`$fUnsafeFromDataList_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> List a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) -> + letrec + !go : list data -> List a + = \(xs : list data) -> + case + (List a) + xs + [ (\(x : data) (xs : list data) -> + Cons {a} (`$dUnsafeFromData` x) (go xs)) + , (Nil {a}) ] + in + \(d : data) -> go (unListData d) !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - casePair - {integer} - {list data} - {Credential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args) - data StakingCredential | StakingCredential_match where - StakingHash : Credential -> StakingCredential - StakingPtr : integer -> integer -> integer -> StakingCredential + case + Credential + d + [ (\(arg : data) -> PubKeyCredential (unBData arg)) + , (\(arg : data) -> ScriptCredential (unBData arg)) ] !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - casePair - {integer} - {list data} - {StakingCredential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> StakingCredential) - index - [ (\(ds : list data) -> - StakingHash - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - StakingPtr - (unIData (headList {data} ds)) - (unIData (headList {data} l)) - (unIData (headList {data} (tailList {data} l)))) ] - args) + case + StakingCredential + d + [ (\(arg : data) -> + StakingHash + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) (arg : data) -> + StakingPtr (unIData arg) (unIData arg) (unIData arg)) ] data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -71,58 +112,63 @@ let DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : - data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert = \(d : data) -> - casePair - {integer} - {list data} - {DCert} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> DCert) - index - [ (\(ds : list data) -> - DCertDelegRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDeRegKey - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DCertDelegDelegate - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRegister - (unBData (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - DCertPoolRetire - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> DCertGenesis) - , (\(ds : list data) -> DCertMir) ] - args) -in -letrec - !go : list data -> List DCert - = \(xs : list data) -> case - (List DCert) - xs - [ (\(x : data) (xs : list data) -> - Cons - {DCert} - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {DCert}) ] -in -let + DCert + d + [ (\(arg : data) -> + DCertDelegRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + DCertDelegDeRegKey + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) (arg : data) -> + DCertDelegDelegate + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) + (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRegister (unBData arg) (unBData arg)) + , (\(arg : data) (arg : data) -> + DCertPoolRetire (unBData arg) (unIData arg)) + , DCertGenesis + , DCertMir ] + data TxOutRef | TxOutRef_match where + TxOutRef : bytestring -> integer -> TxOutRef + !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef + = \(d : data) -> + case + TxOutRef + d + [ (\(arg : data) (arg : data) -> + TxOutRef + (case bytestring arg [(\(arg : data) -> unBData arg)]) + (unIData arg)) ] + data ScriptPurpose | ScriptPurpose_match where + Certifying : DCert -> ScriptPurpose + Minting : bytestring -> ScriptPurpose + Rewarding : StakingCredential -> ScriptPurpose + Spending : TxOutRef -> ScriptPurpose + !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : + data -> ScriptPurpose + = \(d : data) -> + case + ScriptPurpose + d + [ (\(arg : data) -> Minting (unBData arg)) + , (\(arg : data) -> + Spending + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> + Rewarding + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Certifying + (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` arg)) ] data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a @@ -130,19 +176,11 @@ let all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : @@ -205,283 +243,53 @@ let !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - casePair - {integer} - {list data} - {TxOut} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {Address} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) ] - args)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) bytestring integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {OutputDatum} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> OutputDatum) - index - [ (\(ds : list data) -> NoOutputDatum) - , (\(ds : list data) -> - OutputDatumHash - (unBData (headList {data} ds))) - , (\(ds : list data) -> - OutputDatum (headList {data} ds)) ] - args)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) ] - args) -in -letrec - !go : list data -> List TxOut - = \(xs : list data) -> case - (List TxOut) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxOut} - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxOut}) ] -in -let - !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring - = \(d : data) -> - casePair - {integer} - {list data} - {bytestring} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args) - data TxOutRef | TxOutRef_match where - TxOutRef : bytestring -> integer -> TxOutRef - !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef - = \(d : data) -> - casePair - {integer} - {list data} - {TxOutRef} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + TxOut + eta + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxOut + (case + Address + arg + [ (\(arg : data) + (arg : data) -> + Address + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {StakingCredential} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg)) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (case + OutputDatum + arg + [ NoOutputDatum + , (\(arg : data) -> OutputDatumHash (unBData arg)) + , (\(arg : data) -> OutputDatum arg) ]) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) ] data TxInInfo | TxInInfo_match where TxInInfo : TxOutRef -> TxOut -> TxInInfo !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - casePair - {integer} - {list data} - {TxInInfo} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) -in -letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> - case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] -in -letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] -in -let - !`$fEqStakingCredential_$c==` : StakingCredential -> StakingCredential -> bool - = \(ds : StakingCredential) (ds : StakingCredential) -> - StakingCredential_match - ds - {bool} - (\(l : Credential) -> - StakingCredential_match - ds - {bool} - (\(r : Credential) -> - Credential_match - l - {bool} - (\(l : bytestring) -> - Credential_match - r - {bool} - (\(r : bytestring) -> equalsByteString l r) - (\(ipv : bytestring) -> False)) - (\(a : bytestring) -> - Credential_match - r - {bool} - (\(ipv : bytestring) -> False) - (\(a' : bytestring) -> equalsByteString a a'))) - (\(ipv : integer) (ipv : integer) (ipv : integer) -> False)) - (\(a : integer) (b : integer) (c : integer) -> - StakingCredential_match - ds - {bool} - (\(ipv : Credential) -> False) - (\(a' : integer) (b' : integer) (c' : integer) -> - case - (all dead. bool) - (equalsInteger a a') - [ (/\dead -> False) - , (/\dead -> - case - (all dead. bool) - (equalsInteger b b') - [(/\dead -> False), (/\dead -> equalsInteger c c')] - {all dead. dead}) ] - {all dead. dead})) - !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data - = \(d : data) -> d - !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool - = \(d : data) -> - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - data (Extended :: * -> *) a | Extended_match where - Finite : a -> Extended a - NegInf : Extended a - PosInf : Extended a - !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : - all a. (\a -> data -> a) a -> data -> Extended a - = /\a -> - \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Extended a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Extended a) - index - [ (\(ds : list data) -> NegInf {a}) - , (\(ds : list data) -> - Finite {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> PosInf {a}) ] - args) - data ScriptPurpose | ScriptPurpose_match where - Certifying : DCert -> ScriptPurpose - Minting : bytestring -> ScriptPurpose - Rewarding : StakingCredential -> ScriptPurpose - Spending : TxOutRef -> ScriptPurpose - !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : - data -> ScriptPurpose - = \(d : data) -> - casePair - {integer} - {list data} - {ScriptPurpose} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptPurpose) - index - [ (\(ds : list data) -> Minting (unBData (headList {data} ds))) - , (\(ds : list data) -> - Spending - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Rewarding - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Certifying - (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` - (headList {data} ds))) ] - args) + TxInInfo + d + [ (\(arg : data) (arg : data) -> + TxInInfo + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` arg)) ] data (LowerBound :: * -> *) a | LowerBound_match where LowerBound : Extended a -> bool -> LowerBound a data (UpperBound :: * -> *) a | UpperBound_match where @@ -515,185 +323,117 @@ in \(obsScriptCred : data) (ctx : data) -> ScriptContext_match - (casePair - {integer} - {list data} - {ScriptContext} - (unConstrData ctx) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {TxInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInfo) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - in - TxInfo - (let - !d : data = headList {data} ds - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - `$fUnsafeFromDataValue` - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {StakingCredential} - {integer} - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Interval integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval + (case + ScriptContext + ctx + [ (\(arg : data) + (arg : data) -> + ScriptContext + (case + TxInfo + arg + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxInfo + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxOut} + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + `$fUnsafeFromDataValue` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {DCert} + `$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {StakingCredential} + {integer} + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + unIData + arg) + (case + (Interval integer) + arg + [ (\(arg : data) + (arg : data) -> + Interval + {integer} + (case + (LowerBound integer) + arg + [ (\(arg : data) + (arg : data) -> + LowerBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` {integer} - (let - !d : data = headList {data} ds - in - casePair - {integer} - {list data} - {LowerBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - LowerBound integer) - index - [ (\(ds : list data) -> - LowerBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (let - !d : data - = headList - {data} - (tailList {data} ds) - in - casePair - {integer} - {list data} - {UpperBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - UpperBound integer) - index - [ (\(ds : list data) -> - UpperBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args))) ] - args)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {ScriptPurpose} - {data} - `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {data} - unBData - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} l)))) ] - args)) - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args)) + unIData + arg) + (case bool arg [False, True])) ]) + (case + (UpperBound integer) + arg + [ (\(arg : data) + (arg : data) -> + UpperBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (case + bool + arg + [False, True])) ])) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {ScriptPurpose} + {data} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {data} + unBData + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (case + bytestring + arg + [(\(arg : data) -> unBData arg)])) ]) + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` arg)) ]) {Unit} (\(ds : TxInfo) (ds : ScriptPurpose) -> diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.uplc.golden b/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.uplc.golden index 624586a2efe..b435bd66c54 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.uplc.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/sopFwdStakeTrick.uplc.golden @@ -1,768 +1,454 @@ (program 1.1.0 - ((\go -> - (\`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` -> - (\`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` -> - (\`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` -> - (\go -> - (\`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` -> - (\`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` -> - (\go -> - (\`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` -> - (\`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` -> - (\`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` -> - (\go -> - (\go - obsScriptCred - ctx -> - case - (case - (unConstrData ctx) - [ (\index - args -> - case - index - [ (\ds -> - (\`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` -> - constr 0 - [ (case - (unConstrData - (force - headList - ds)) - [ (\index - args -> - case - index - [ (\ds -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - (\`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` -> - (\cse -> - (\cse -> - (\arg_0 - arg_1 - arg_2 - arg_3 - arg_4 - arg_5 - arg_6 - arg_7 - arg_8 - arg_9 - arg_10 - arg_11 -> - constr 0 - [ arg_0 - , arg_1 - , arg_2 - , arg_3 - , arg_4 - , arg_5 - , arg_6 - , arg_7 - , arg_8 - , arg_9 - , arg_10 - , arg_11 ]) - (go - (unListData - (force - headList - ds))) - (go - (unListData - (force - headList - l))) - (go - (unListData - (force - headList - l))) - (cse - (force - headList - l)) - (cse - (force - headList - l)) - (go - (unListData - (force - headList - l))) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - unIData - (force - headList - l)) - (case - (unConstrData - (force - headList - l)) - [ (\index - args -> - case - index - [ (\ds -> - (\`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` -> - (\`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` -> - constr 0 - [ (case - (unConstrData - (force - headList - ds)) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - unIData - (force - headList - ds)) - , (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) ] - args) ]) - , (case - (unConstrData - (force - headList - (force - tailList - ds))) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - unIData - (force - headList - ds)) - , (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) ] - args) ]) ]) - (\d -> - case - (unConstrData - d) - [ (\index - args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) ])) - (\`$dUnsafeFromData` - d -> - case - (unConstrData - d) - [ (\index - args -> - case - index - [ (\ds -> - constr 1 - [ ]) - , (\ds -> - constr 0 - [ (`$dUnsafeFromData` - (force - headList - ds)) ]) - , (\ds -> - constr 2 - [ ]) ] - args) ])) ] - args) ]) - (go - (unListData - (force - headList - l))) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (force - headList - l)) - (cse - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (force - headList - l))) - (cse - (cse - unIData))) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - unBData)) - (\d -> - d) - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - l)))) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - l)) - (force - tailList - ds)) ] - args) ]) - , (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) - (\d -> - case - (unConstrData - d) - [ (\index - args -> - case - index - [ (\ds -> - constr 1 - [ (unBData - (force - headList - ds)) ]) - , (\ds -> - constr 3 - [ (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (force - headList - ds)) ]) - , (\ds -> - constr 2 - [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (force - headList - ds)) ]) - , (\ds -> - constr 0 - [ (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` - (force - headList - ds)) ]) ] - args) ])) ] - args) ]) - [ (\ds - ds -> - case - ds - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - force - ((\`$j` -> - case - ds - [ (delay - ((\x -> - case - error - [ (\a - ds -> - `$j` - a - ds) ]) - (force - trace - "PT8" - (constr 0 - [ ])))) - , (\x - ds -> - delay - (case - x - [ (\a - ds -> - `$j` - a - ds) ])) ]) - (\a - ds -> - force - ((\`$j` -> - case - ds - [ (delay - (`$j` - ((\x -> - error) - (force - trace - "PT9" - (constr 0 - [ ]))))) - , (\ds - as -> - delay - (`$j` - as)) ]) - (\rest -> - force - ((\`$j` -> - case - rest - [ (delay - ((\x -> - case - error - [ (\a - ds -> - `$j` - a - ds) ]) - (force - trace - "PT8" - (constr 0 - [ ])))) - , (\x - ds -> - delay - (case - x - [ (\a - ds -> - `$j` - a - ds) ])) ]) - (\a - ds -> - (\obsScriptCred' -> - (\`$fEqStakingCredential_$c==` -> - (\go -> - (\cse -> - case - (cse - a) - [ (case - (cse - a) - [ (go - ds) - , (constr 0 - [ ]) ]) - , (constr 0 - [ ]) ]) - (`$fEqStakingCredential_$c==` - obsScriptCred')) - ((\s -> - s - s) - (\s - ds -> - case - ds - [ ((\x -> - error) - (force - trace - "not found" - (constr 0 - [ ]))) - , (\ds - xs' -> - case - ds - [ (\c' - i -> - case - (`$fEqStakingCredential_$c==` - c' - obsScriptCred') - [ (s - s - xs') - , (constr 0 - [ ]) ]) ]) ]))) - (\ds - ds -> - case - ds - [ (\l -> - case - ds - [ (\r -> - case - l - [ (\l -> - case - r - [ (\r -> - equalsByteString - l - r) - , (\ipv -> - False) ]) - , (\a -> - case - r - [ (\ipv -> - False) - , (\a' -> - equalsByteString - a - a') ]) ]) - , (\ipv - ipv - ipv -> - False) ]) - , (\a - b - c -> - case - ds - [ (\ipv -> - False) - , (\a' - b' - c' -> - case - (equalsInteger - a - a') - [ False - , (case - (equalsInteger - b - b') - [ False - , (equalsInteger - c - c') ]) ]) ]) ])) - (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - obsScriptCred)))))))) ]) ]) - ((\s -> - s s) - (\s - xs -> - case - xs - [ (\x - xs -> - constr 1 - [ (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - x) - , (s s xs) ]) - , (constr 0 []) ]))) - ((\s -> - s s) - (\s - xs -> - case - xs - [ (\x - xs -> - constr 1 - [ (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - x) - , (s s xs) ]) - , (constr 0 []) ]))) - (\d -> - case - (unConstrData d) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (force headList ds)) - , (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (force headList - (force tailList - ds))) ]) ] - args) ])) - (\d -> - case - (unConstrData d) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (force headList ds)) - , (unIData - (force headList - (force tailList - ds))) ]) ] - args) ])) - (\d -> - case - (unConstrData d) - [ (\index args -> - case - index - [(\ds -> unBData (force headList ds))] - args) ])) - ((\s -> - s s) - (\s - xs -> - case - xs - [ (\x - xs -> - constr 1 - [ (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - x) - , (s s xs) ]) - , (constr 0 []) ]))) - (\eta -> - case - (unConstrData eta) - [ (\index - args -> - case - index - [ (\ds -> - (\l -> - (\l -> - (\`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` -> + ((\`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` -> + (\`$fEqStakingCredential_$c==` + obsScriptCred + ctx -> + (\`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` -> + (\`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` -> + case + (case + ctx + [ (\arg + arg -> + (\`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` -> + (\`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` -> + (\`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` -> + constr 0 + [ (case + arg + [ (\arg + arg + arg + arg + arg + arg + arg + arg + arg + arg + arg + arg -> + (\`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` -> (\cse -> - constr 0 - [ (case - (unConstrData - (force headList - ds)) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (force - headList - ds)) - , (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) ] - args) ]) - , (cse - (cse unIData) - (force headList l)) - , (case - (unConstrData - (force headList - l)) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - []) - , (\ds -> - constr 2 - [ (unBData - (force - headList - ds)) ]) - , (\ds -> - constr 1 - [ (force - headList - ds) ]) ] - args) ]) - , (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - unBData - (force headList - (force tailList - l))) ]) + (\`$fUnsafeFromDataList_$cunsafeFromBuiltinData` -> + (\cse -> + (\`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` -> + (\cse -> + (\arg_0 + arg_1 + arg_2 + arg_3 + arg_4 + arg_5 + arg_6 + arg_7 + arg_8 + arg_9 + arg_10 + arg_11 -> + constr 0 + [ arg_0 + , arg_1 + , arg_2 + , arg_3 + , arg_4 + , arg_5 + , arg_6 + , arg_7 + , arg_8 + , arg_9 + , arg_10 + , arg_11 ]) + (cse arg) + (cse arg)) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + (\d -> + case + d + [ (\arg + arg -> + constr 0 + [ (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg) + , (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) ]) ])) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg)) + (\eta -> + case + eta + [ (\arg + arg + arg + arg -> + constr 0 + [ (case + arg + [ (\arg + arg -> + constr 0 + [ (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + , (case + arg + [ (\arg -> + constr 0 + [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) ]) + , (constr 1 + [ ]) ]) ]) ]) + , (cse + arg) + , (case + arg + [ (constr 0 + [ ]) + , (\arg -> + constr 2 + [ (unBData + arg) ]) + , (\arg -> + constr 1 + [ arg ]) ]) + , (case + arg + [ (\arg -> + constr 0 + [ (unBData + arg) ]) + , (constr 1 + [ ]) ]) ]) ]) + (cse arg) + (cse arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + `$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + unIData + arg) + (case + arg + [ (\arg + arg -> + constr 0 + [ (case + arg + [ (\arg + arg -> + constr 0 + [ (case + arg + [ (constr 1 + [ ]) + , (\arg -> + constr 0 + [ (unIData + arg) ]) + , (constr 2 + [ ]) ]) + , (case + arg + [ False + , True ]) ]) ]) + , (case + arg + [ (\arg + arg -> + constr 0 + [ (case + arg + [ (constr 1 + [ ]) + , (\arg -> + constr 0 + [ (unIData + arg) ]) + , (constr 2 + [ ]) ]) + , (case + arg + [ False + , True ]) ]) ]) ]) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + unBData + arg)) + (cse (cse unIData))) + (\`$dUnsafeFromData` -> + (\go d -> + go (unListData d)) + ((\s -> + s s) + (\s + xs -> + case + xs + [ (\x + xs -> + constr 1 + [ (`$dUnsafeFromData` + x) + , (s + s + xs) ]) + , (constr 0 + [ ]) ]))) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (cse + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg)) (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` unBData)) (\`$dUnsafeFromData` - d -> + `$dUnsafeFromData` -> + (\go d -> + go (unMapData d)) + ((\s -> + s s) + (\s + xs -> + case + xs + [ (\tup + tups -> + constr 1 + [ (constr 0 + [ (`$dUnsafeFromData` + (case + tup + [ (\l + r -> + l) ])) + , (`$dUnsafeFromData` + (case + tup + [ (\l + r -> + r) ])) ]) + , (s + s + tups) ]) + , (constr 0 + []) ]))) + (case + arg + [(\arg -> unBData arg)])) ]) + , (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) ]) + (\d -> + case + d + [ (\arg -> constr 1 [(unBData arg)]) + , (\arg -> + constr 3 + [ (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg) ]) + , (\arg -> + constr 2 + [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) ]) + , (\arg -> + constr 0 + [ (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` + arg) ]) ])) + (\d -> + case + d + [ (\arg -> + constr 2 + [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) ]) + , (\arg -> + constr 0 + [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) ]) + , (\arg + arg -> + constr 1 + [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + arg) + , (unBData arg) ]) + , (\arg arg -> + constr 5 + [(unBData arg), (unBData arg)]) + , (\arg arg -> + constr 6 + [(unBData arg), (unIData arg)]) + , (constr 3 []) + , (constr 4 []) ])) + (\d -> + case + d + [ (\arg arg -> + constr 0 + [ (case arg [(\arg -> unBData arg)]) + , (unIData arg) ]) ])) ]) + [ (\ds + ds -> + case + ds + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + force + ((\`$j` -> + case + ds + [ (delay + ((\x -> + case + error + [(\a ds -> `$j` a ds)]) + (force trace + "PT8" + (constr 0 [])))) + , (\x ds -> + delay + (case x [(\a ds -> `$j` a ds)])) ]) + (\a + ds -> + force + ((\`$j` -> + case + ds + [ (delay + (`$j` + ((\x -> error) + (force trace + "PT9" + (constr 0 []))))) + , (\ds as -> delay (`$j` as)) ]) + (\rest -> + force + ((\`$j` -> case - (unConstrData d) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (`$dUnsafeFromData` - (force - headList - ds)) ]) - , (\ds -> - constr 1 []) ] - args) ])) - (force tailList l)) - (force tailList ds)) ] - args) ])) - (\`$dUnsafeFromData` `$dUnsafeFromData` -> - (\go d -> go (unMapData d)) - ((\s -> s s) - (\s xs -> - case - xs - [ (\tup tups -> - constr 1 - [ (constr 0 - [ (`$dUnsafeFromData` - (case tup [(\l r -> l)])) - , (`$dUnsafeFromData` - (case tup [(\l r -> r)])) ]) - , (s s tups) ]) - , (constr 0 []) ])))) - ((\s -> - s s) - (\s - xs -> - case - xs - [ (\x - xs -> - constr 1 - [ (`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` - x) - , (s s xs) ]) - , (constr 0 []) ]))) + rest + [ (delay + ((\x -> + case + error + [ (\a ds -> + `$j` + a + ds) ]) + (force trace + "PT8" + (constr 0 + [])))) + , (\x + ds -> + delay + (case + x + [ (\a + ds -> + `$j` + a + ds) ])) ]) + (\a + ds -> + (\obsScriptCred' -> + (\go -> + (\cse -> + case + (cse a) + [ (case + (cse a) + [ (go ds) + , (constr 0 + [ ]) ]) + , (constr 0 + []) ]) + (`$fEqStakingCredential_$c==` + obsScriptCred')) + ((\s -> + s s) + (\s + ds -> + case + ds + [ ((\x -> + error) + (force + trace + "not found" + (constr 0 + [ ]))) + , (\ds + xs' -> + case + ds + [ (\c' + i -> + case + (`$fEqStakingCredential_$c==` + c' + obsScriptCred') + [ (s + s + xs') + , (constr 0 + [ ]) ]) ]) ]))) + (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` + obsScriptCred)))))))) ]) ]) (\d -> case - (unConstrData d) - [ (\index - args -> - case - index - [ (\ds -> - constr 2 - [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (force headList ds)) ]) - , (\ds -> - constr 0 - [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (force headList ds)) ]) - , (\ds -> - constr 1 - [ (`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (force headList ds)) - , (unBData - (force headList (force tailList ds))) ]) - , (\ds -> - constr 5 - [ (unBData (force headList ds)) - , (unBData - (force headList (force tailList ds))) ]) - , (\ds -> - constr 6 - [ (unBData (force headList ds)) - , (unIData - (force headList (force tailList ds))) ]) - , (\ds -> constr 3 []) - , (\ds -> constr 4 []) ] - args) ])) + d + [ (\arg -> + constr 0 + [ (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) ]) + , (\arg arg arg -> + constr 1 + [(unIData arg), (unIData arg), (unIData arg)]) ])) (\d -> case - (unConstrData d) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (force headList ds)) ]) - , (\ds -> - (\l -> - constr 1 - [ (unIData (force headList ds)) - , (unIData (force headList l)) - , (unIData - (force headList (force tailList l))) ]) - (force tailList ds)) ] - args) ])) - (\d -> + d + [ (\arg -> constr 0 [(unBData arg)]) + , (\arg -> constr 1 [(unBData arg)]) ])) + (\ds ds -> case - (unConstrData d) - [ (\index args -> + ds + [ (\l -> case - index - [ (\ds -> constr 0 [(unBData (force headList ds))]) - , (\ds -> constr 1 [(unBData (force headList ds))]) ] - args) ])) - ((\s -> s s) - (\s xs -> - case - xs - [(\x xs -> constr 1 [(unBData x), (s s xs)]), (constr 0 [])])))) \ No newline at end of file + ds + [ (\r -> + case + l + [ (\l -> + case + r + [ (\r -> equalsByteString l r) + , (\ipv -> False) ]) + , (\a -> + case + r + [ (\ipv -> False) + , (\a' -> equalsByteString a a') ]) ]) + , (\ipv ipv ipv -> False) ]) + , (\a b c -> + case + ds + [ (\ipv -> False) + , (\a' b' c' -> + case + (equalsInteger a a') + [ False + , (case + (equalsInteger b b') + [False, (equalsInteger c c')]) ]) ]) ])) + (\d -> d))) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1.pir.golden b/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1.pir.golden index d3c8ec2c928..2c95cd8bf68 100644 --- a/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1.pir.golden +++ b/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1.pir.golden @@ -74,24 +74,10 @@ (unListData (headList {data} l)) (unMapData (headList {data} l)) (unMapData (headList {data} l)) - (let - !d : data = headList {data} (tailList {data} l) - in - (let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> - case r p [f]) - {bytestring} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bytestring) - index - [ (\(ds : list data) -> - unBData (headList {data} ds)) ] - args))) + (case + bytestring + (headList {data} (tailList {data} l)) + [(\(arg : data) -> unBData arg)])) (headList {data} (case diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-20.eval.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-20.eval.golden index 5258b49783d..74facbec428 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 126_102_096 -Memory: 612_722 -Term Size: 1_827 -Flat Size: 2_365 +CPU: 55_129_328 +Memory: 316_662 +Term Size: 991 +Flat Size: 1_670 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-4.eval.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-4.eval.golden index 0003fd3711c..d06d68543f5 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 39_448_432 -Memory: 188_114 -Term Size: 1_827 -Flat Size: 1_931 +CPU: 18_143_344 +Memory: 105_558 +Term Size: 991 +Flat Size: 1_236 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.pir.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.pir.golden index ff6fbf569e6..06af8f8c706 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.pir.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.pir.golden @@ -44,75 +44,63 @@ (\(ds : TxOut) (xs : List TxOut) -> addInteger 1 (go xs)) in let - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] - !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential - = \(d : data) -> - casePair - {integer} - {list data} - {Credential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args) - in - letrec - !go : list data -> List Credential - = \(xs : list data) -> - case - (List Credential) - xs - [ (\(x : data) (xs : list data) -> - Cons - {Credential} - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {Credential}) ] - in - let + !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data + = \(d : data) -> d + data (Extended :: * -> *) a | Extended_match where + Finite : a -> Extended a + NegInf : Extended a + PosInf : Extended a + !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> Extended a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> + case + (Extended a) + d + [ (NegInf {a}) + , (\(arg : data) -> Finite {a} (`$dUnsafeFromData` arg)) + , (PosInf {a}) ] data GovernanceActionId | GovernanceActionId_match where GovernanceActionId : bytestring -> integer -> GovernanceActionId !`$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` : data -> GovernanceActionId = \(d : data) -> - casePair - {integer} - {list data} - {GovernanceActionId} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> GovernanceActionId) - index - [ (\(ds : list data) -> - GovernanceActionId - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + case + GovernanceActionId + d + [ (\(arg : data) (arg : data) -> + GovernanceActionId (unBData arg) (unIData arg)) ] + !`$fUnsafeFromDataList_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> List a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) -> + letrec + !go : list data -> List a + = \(xs : list data) -> + case + (List a) + xs + [ (\(x : data) (xs : list data) -> + Cons {a} (`$dUnsafeFromData` x) (go xs)) + , (Nil {a}) ] + in + \(d : data) -> go (unListData d) + !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential + = \(d : data) -> + case + Credential + d + [ (\(arg : data) -> PubKeyCredential (unBData arg)) + , (\(arg : data) -> ScriptCredential (unBData arg)) ] !`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` : all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -222,260 +210,160 @@ !`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` : data -> ProposalProcedure = \(d : data) -> - casePair - {integer} - {list data} - {ProposalProcedure} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ProposalProcedure) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ProposalProcedure - (unIData (headList {data} ds)) - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} l)) - (let - !eta : data = headList {data} (tailList {data} l) - in - casePair - {integer} - {list data} - {GovernanceAction} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> GovernanceAction) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ParameterChange - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (headList {data} l) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) - , (\(ds : list data) -> - HardForkInitiation - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (let - !d : data - = headList {data} (tailList {data} ds) - in - casePair - {integer} - {list data} - {ProtocolVersion} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ProtocolVersion) - index - [ (\(ds : list data) -> - ProtocolVersion - (unIData - (headList {data} ds)) - (unIData - (headList - {data} - (tailList - {data} - ds)))) ] - args))) - , (\(ds : list data) -> - TreasuryWithdrawals - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Credential} - {integer} - `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList - {data} - (tailList {data} ds)))) - , (\(ds : list data) -> - NoConfidence - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - UpdateCommittee - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Credential} - {integer} - `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} l)) - (let - !x : data - = headList {data} (tailList {data} l) - in - Tuple2_match - {integer} - {integer} - (casePair - {integer} - {list data} - {Tuple2 integer integer} - (unConstrData x) - (\(index : integer) - (args : list data) -> - case - (list data -> - Tuple2 integer integer) - index - [ (\(ds : list data) -> - Tuple2 - {integer} - {integer} - (unIData - (headList {data} ds)) - (unIData - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - {Rational} - (\(a : integer) (b : integer) -> - unsafeRatio a b))) - , (\(ds : list data) -> - NewConstitution - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (let - !eta : data - = headList {data} (tailList {data} ds) - in - casePair - {integer} - {list data} - {Maybe bytestring} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Maybe bytestring) - index - [ (\(ds : list data) -> - `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} ds)) ] - args))) - , (\(ds : list data) -> InfoAction) ] - args))) ] - args) - in - letrec - !go : list data -> List ProposalProcedure - = \(xs : list data) -> case - (List ProposalProcedure) - xs - [ (\(x : data) (xs : list data) -> - Cons - {ProposalProcedure} - (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` - x) - (go xs)) - , (Nil {ProposalProcedure}) ] - in - letrec - !go : list data -> List bytestring - = \(xs : list data) -> + ProposalProcedure + d + [ (\(arg : data) + (arg : data) + (arg : data) -> + ProposalProcedure + (unIData arg) + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (case + GovernanceAction + arg + [ (\(arg : data) + (arg : data) + (arg : data) -> + ParameterChange + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + arg + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) + , (\(arg : data) + (arg : data) -> + HardForkInitiation + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + (case + ProtocolVersion + arg + [ (\(arg : data) (arg : data) -> + ProtocolVersion + (unIData arg) + (unIData arg)) ])) + , (\(arg : data) + (arg : data) -> + TreasuryWithdrawals + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Credential} + {integer} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + unIData + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) + , (\(arg : data) -> + NoConfidence + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) + (arg : data) + (arg : data) -> + UpdateCommittee + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {Credential} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Credential} + {integer} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + unIData + arg) + (Tuple2_match + {integer} + {integer} + (case + (Tuple2 integer integer) + arg + [ (\(arg : data) (arg : data) -> + Tuple2 + {integer} + {integer} + (unIData arg) + (unIData arg)) ]) + {Rational} + (\(a : integer) (b : integer) -> + unsafeRatio a b))) + , (\(arg : data) + (arg : data) -> + NewConstitution + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + (case + (Maybe bytestring) + arg + [ (\(arg : data) -> + `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) ])) + , InfoAction ])) ] + data Voter | Voter_match where + CommitteeVoter : Credential -> Voter + DRepVoter : Credential -> Voter + StakePoolVoter : bytestring -> Voter + !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> Voter + = \(d : data) -> case - (List bytestring) - xs - [ (\(x : data) (xs : list data) -> - Cons {bytestring} (unBData x) (go xs)) - , (Nil {bytestring}) ] - in - let + Voter + d + [ (\(arg : data) -> + CommitteeVoter + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> + DRepVoter + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> StakePoolVoter (unBData arg)) ] data DRep | DRep_match where DRep : Credential -> DRep DRepAlwaysAbstain : DRep DRepAlwaysNoConfidence : DRep !`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` : data -> DRep = \(d : data) -> - casePair - {integer} - {list data} - {DRep} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> DRep) - index - [ (\(ds : list data) -> - DRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> DRepAlwaysAbstain) - , (\(ds : list data) -> DRepAlwaysNoConfidence) ] - args) + case + DRep + d + [ (\(arg : data) -> + DRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , DRepAlwaysAbstain + , DRepAlwaysNoConfidence ] data Delegatee | Delegatee_match where DelegStake : bytestring -> Delegatee DelegStakeVote : bytestring -> DRep -> Delegatee DelegVote : DRep -> Delegatee !`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` : data -> Delegatee = \(d : data) -> - casePair - {integer} - {list data} - {Delegatee} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Delegatee) - index - [ (\(ds : list data) -> - DelegStake (unBData (headList {data} ds))) - , (\(ds : list data) -> - DelegVote - (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DelegStakeVote - (unBData (headList {data} ds)) - (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) + case + Delegatee + d + [ (\(arg : data) -> DelegStake (unBData arg)) + , (\(arg : data) -> + DelegVote (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) -> + DelegStakeVote + (unBData arg) + (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` arg)) ] data TxCert | TxCert_match where TxCertAuthHotCommittee : Credential -> Credential -> TxCert TxCertDelegStaking : Credential -> Delegatee -> TxCert @@ -490,354 +378,131 @@ TxCertUpdateDRep : Credential -> TxCert !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxCert = \(eta : data) -> - casePair - {integer} - {list data} - {TxCert} - (unConstrData eta) - (\(index : integer) (args : list data) -> - case - (list data -> TxCert) - index - [ (\(ds : list data) -> - TxCertRegStaking - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertUnRegStaking - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertDelegStaking - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - TxCertRegDeleg - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` - (headList {data} l)) - (unIData (headList {data} (tailList {data} l)))) - , (\(ds : list data) -> - TxCertRegDRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertUpdateDRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - TxCertUnRegDRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertPoolRegister - (unBData (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertPoolRetire - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertAuthHotCommittee - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertResignColdCommittee - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) ] - args) - in - letrec - !go : list data -> List TxCert - = \(xs : list data) -> - case - (List TxCert) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxCert} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxCert}) ] - in - let - !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : - data -> TxOut - = \(eta : data) -> - casePair - {integer} - {list data} - {TxOut} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {Address} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - (\(d : data) -> - casePair - {integer} - {list data} - {StakingCredential} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - StakingCredential) - index - [ (\(ds : list data) -> - StakingHash - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList - {data} - ds))) - , (\(ds : list data) -> - let - !l : list data - = tailList {data} ds - in - StakingPtr - (unIData - (headList - {data} - ds)) - (unIData - (headList - {data} - l)) - (unIData - (headList - {data} - (tailList - {data} - l)))) ] - args)) - (headList - {data} - (tailList {data} ds)))) ] - args)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) bytestring integer} - unBData - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {integer} - unBData - unIData) - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {OutputDatum} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> OutputDatum) - index - [ (\(ds : list data) -> NoOutputDatum) - , (\(ds : list data) -> - OutputDatumHash - (unBData (headList {data} ds))) - , (\(ds : list data) -> - OutputDatum (headList {data} ds)) ] - args)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : list data -> List TxOut - = \(xs : list data) -> case - (List TxOut) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxOut} - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxOut}) ] - in - let + TxCert + eta + [ (\(arg : data) (arg : data) -> + TxCertRegStaking + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg)) + , (\(arg : data) (arg : data) -> + TxCertUnRegStaking + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg)) + , (\(arg : data) (arg : data) -> + TxCertDelegStaking + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) (arg : data) -> + TxCertRegDeleg + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` arg) + (unIData arg)) + , (\(arg : data) (arg : data) -> + TxCertRegDRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (unIData arg)) + , (\(arg : data) -> + TxCertUpdateDRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) -> + TxCertUnRegDRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (unIData arg)) + , (\(arg : data) (arg : data) -> + TxCertPoolRegister (unBData arg) (unBData arg)) + , (\(arg : data) (arg : data) -> + TxCertPoolRetire (unBData arg) (unIData arg)) + , (\(arg : data) (arg : data) -> + TxCertAuthHotCommittee + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> + TxCertResignColdCommittee + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) ] data TxOutRef | TxOutRef_match where TxOutRef : bytestring -> integer -> TxOutRef !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef = \(d : data) -> - casePair - {integer} - {list data} - {TxOutRef} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + case + TxOutRef + d + [ (\(arg : data) (arg : data) -> + TxOutRef (unBData arg) (unIData arg)) ] + !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : + data -> TxOut + = \(eta : data) -> + case + TxOut + eta + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxOut + (case + Address + arg + [ (\(arg : data) + (arg : data) -> + Address + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {StakingCredential} + (\(d : data) -> + case + StakingCredential + d + [ (\(arg : data) -> + StakingHash + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) + (arg : data) -> + StakingPtr + (unIData arg) + (unIData arg) + (unIData arg)) ]) + arg)) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {integer} + unBData + unIData) + arg) + (case + OutputDatum + arg + [ NoOutputDatum + , (\(arg : data) -> OutputDatumHash (unBData arg)) + , (\(arg : data) -> OutputDatum arg) ]) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) ] data TxInInfo | TxInInfo_match where TxInInfo : TxOutRef -> TxOut -> TxInInfo !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - casePair - {integer} - {list data} - {TxInInfo} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> - case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - let - !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data - = \(d : data) -> d - !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool - = \(d : data) -> - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - data (Extended :: * -> *) a | Extended_match where - Finite : a -> Extended a - NegInf : Extended a - PosInf : Extended a - !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : - all a. (\a -> data -> a) a -> data -> Extended a - = /\a -> - \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Extended a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Extended a) - index - [ (\(ds : list data) -> NegInf {a}) - , (\(ds : list data) -> - Finite {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> PosInf {a}) ] - args) - data Voter | Voter_match where - CommitteeVoter : Credential -> Voter - DRepVoter : Credential -> Voter - StakePoolVoter : bytestring -> Voter - !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> Voter - = \(d : data) -> - casePair - {integer} - {list data} - {Voter} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Voter) - index - [ (\(ds : list data) -> - CommitteeVoter - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DRepVoter - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - StakePoolVoter (unBData (headList {data} ds))) ] - args) + TxInInfo + d + [ (\(arg : data) (arg : data) -> + TxInInfo + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` arg)) ] data ScriptInfo | ScriptInfo_match where CertifyingScript : integer -> TxCert -> ScriptInfo MintingScript : bytestring -> ScriptInfo @@ -890,318 +555,204 @@ in \(d : data) -> ScriptContext_match - (casePair - {integer} - {list data} - {ScriptContext} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ScriptContext - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {TxInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInfo) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - in - TxInfo - (let - !d : data = headList {data} ds - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (unIData (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {integer} - unBData - unIData) - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Credential} - {integer} - `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Interval integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval + (case + ScriptContext + d + [ (\(arg : data) + (arg : data) + (arg : data) -> + ScriptContext + (case + TxInfo + arg + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxInfo + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxOut} + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) + (unIData arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {integer} + unBData + unIData) + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxCert} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Credential} + {integer} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + unIData + arg) + (case + (Interval integer) + arg + [ (\(arg : data) + (arg : data) -> + Interval + {integer} + (case + (LowerBound integer) + arg + [ (\(arg : data) + (arg : data) -> + LowerBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` {integer} - (let - !d : data - = headList {data} ds - in - casePair - {integer} - {list data} - {LowerBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - LowerBound integer) - index - [ (\(ds : list data) -> - LowerBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (let - !d : data - = headList - {data} - (tailList {data} ds) - in - casePair - {integer} - {list data} - {UpperBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - UpperBound integer) - index - [ (\(ds : list data) -> - UpperBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args))) ] - args)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {ScriptPurpose} - {data} - (\(d : data) -> - casePair - {integer} - {list data} - {ScriptPurpose} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptPurpose) - index - [ (\(ds : list data) -> - Minting - (unBData - (headList {data} ds))) - , (\(ds : list data) -> - Spending - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Rewarding - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Certifying - (unIData - (headList {data} ds)) - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) - , (\(ds : list data) -> - Voting - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - Proposing - (unIData - (headList {data} ds)) - (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {data} - unBData - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (unBData (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Voter} - {(\k v -> List (Tuple2 k v)) - GovernanceActionId - Vote} - `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {GovernanceActionId} - {Vote} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (\(d : data) -> - casePair + unIData + arg) + (case bool arg [False, True])) ]) + (case + (UpperBound integer) + arg + [ (\(arg : data) + (arg : data) -> + UpperBound {integer} - {list data} - {Vote} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Vote) - index - [ (\(ds : list data) -> - VoteNo) - , (\(ds : list data) -> - VoteYes) - , (\(ds : list data) -> - Abstain) ] - args))) - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} l)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} (tailList {data} l)))) ] - args)) - (headList {data} l) - (let - !eta : data = headList {data} (tailList {data} l) - in - casePair - {integer} - {list data} - {ScriptInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptInfo) - index - [ (\(ds : list data) -> - MintingScript (unBData (headList {data} ds))) - , (\(ds : list data) -> - SpendingScript - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {data} - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - RewardingScript - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - CertifyingScript - (unIData (headList {data} ds)) - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - VotingScript - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - ProposingScript - (unIData (headList {data} ds)) - (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args))) ] - args)) + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (case + bool + arg + [False, True])) ])) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {ScriptPurpose} + {data} + (\(d : data) -> + case + ScriptPurpose + d + [ (\(arg : data) -> Minting (unBData arg)) + , (\(arg : data) -> + Spending + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Rewarding + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + Certifying + (unIData arg) + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Voting + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + Proposing + (unIData arg) + (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` + arg)) ]) + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {data} + unBData + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (unBData arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Voter} + {(\k v -> List (Tuple2 k v)) + GovernanceActionId + Vote} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {GovernanceActionId} + {Vote} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + (\(d : data) -> + case Vote d [VoteNo, VoteYes, Abstain])) + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {ProposalProcedure} + `$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg)) ]) + arg + (case + ScriptInfo + arg + [ (\(arg : data) -> MintingScript (unBData arg)) + , (\(arg : data) + (arg : data) -> + SpendingScript + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {data} + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + RewardingScript + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + CertifyingScript + (unIData arg) + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + VotingScript + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + ProposingScript + (unIData arg) + (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` + arg)) ])) ]) {Unit} (\(ipv : TxInfo) (ipv : data) (ipv : ScriptInfo) -> case diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.size.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.size.golden index 479391dbfea..b7e8805f4f8 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.size.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext1.size.golden @@ -1 +1 @@ -1827 \ No newline at end of file +991 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-20.eval.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-20.eval.golden index 01e964ee0e7..d31f153d089 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 118_709_673 -Memory: 580_280 -Term Size: 1_763 -Flat Size: 2_287 +CPU: 47_736_905 +Memory: 284_220 +Term Size: 927 +Flat Size: 1_592 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-4.eval.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-4.eval.golden index f4f910f61a2..4e180430b93 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 37_259_337 -Memory: 178_104 -Term Size: 1_763 -Flat Size: 1_853 +CPU: 15_954_249 +Memory: 95_548 +Term Size: 927 +Flat Size: 1_158 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.pir.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.pir.golden index 61be06512f7..1e48a35c67b 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.pir.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.pir.golden @@ -1,64 +1,62 @@ (let - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] - data Credential | Credential_match where - PubKeyCredential : bytestring -> Credential - ScriptCredential : bytestring -> Credential - !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential + !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data + = \(d : data) -> d + data (Extended :: * -> *) a | Extended_match where + Finite : a -> Extended a + NegInf : Extended a + PosInf : Extended a + !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> Extended a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> + case + (Extended a) + d + [ (NegInf {a}) + , (\(arg : data) -> Finite {a} (`$dUnsafeFromData` arg)) + , (PosInf {a}) ] + data GovernanceActionId | GovernanceActionId_match where + GovernanceActionId : bytestring -> integer -> GovernanceActionId + !`$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` : + data -> GovernanceActionId = \(d : data) -> - casePair - {integer} - {list data} - {Credential} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args) + case + GovernanceActionId + d + [ (\(arg : data) (arg : data) -> + GovernanceActionId (unBData arg) (unIData arg)) ] in letrec data (List :: * -> *) a | List_match where Nil : List a Cons : a -> List a -> List a in - letrec - !go : list data -> List Credential - = \(xs : list data) -> - case - (List Credential) - xs - [ (\(x : data) (xs : list data) -> - Cons - {Credential} - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {Credential}) ] - in let - data GovernanceActionId | GovernanceActionId_match where - GovernanceActionId : bytestring -> integer -> GovernanceActionId - !`$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` : - data -> GovernanceActionId + !`$fUnsafeFromDataList_$cunsafeFromBuiltinData` : + all a. (\a -> data -> a) a -> data -> List a + = /\a -> + \(`$dUnsafeFromData` : (\a -> data -> a) a) -> + letrec + !go : list data -> List a + = \(xs : list data) -> + case + (List a) + xs + [ (\(x : data) (xs : list data) -> + Cons {a} (`$dUnsafeFromData` x) (go xs)) + , (Nil {a}) ] + in + \(d : data) -> go (unListData d) + data Credential | Credential_match where + PubKeyCredential : bytestring -> Credential + ScriptCredential : bytestring -> Credential + !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - casePair - {integer} - {list data} - {GovernanceActionId} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> GovernanceActionId) - index - [ (\(ds : list data) -> - GovernanceActionId - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + case + Credential + d + [ (\(arg : data) -> PubKeyCredential (unBData arg)) + , (\(arg : data) -> ScriptCredential (unBData arg)) ] data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a @@ -66,19 +64,11 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : @@ -190,260 +180,160 @@ !`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` : data -> ProposalProcedure = \(d : data) -> - casePair - {integer} - {list data} - {ProposalProcedure} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ProposalProcedure) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ProposalProcedure - (unIData (headList {data} ds)) - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} l)) - (let - !eta : data = headList {data} (tailList {data} l) - in - casePair - {integer} - {list data} - {GovernanceAction} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> GovernanceAction) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ParameterChange - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (headList {data} l) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) - , (\(ds : list data) -> - HardForkInitiation - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (let - !d : data - = headList {data} (tailList {data} ds) - in - casePair - {integer} - {list data} - {ProtocolVersion} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ProtocolVersion) - index - [ (\(ds : list data) -> - ProtocolVersion - (unIData - (headList {data} ds)) - (unIData - (headList - {data} - (tailList - {data} - ds)))) ] - args))) - , (\(ds : list data) -> - TreasuryWithdrawals - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Credential} - {integer} - `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList - {data} - (tailList {data} ds)))) - , (\(ds : list data) -> - NoConfidence - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - UpdateCommittee - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Credential} - {integer} - `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} l)) - (let - !x : data - = headList {data} (tailList {data} l) - in - Tuple2_match - {integer} - {integer} - (casePair - {integer} - {list data} - {Tuple2 integer integer} - (unConstrData x) - (\(index : integer) - (args : list data) -> - case - (list data -> - Tuple2 integer integer) - index - [ (\(ds : list data) -> - Tuple2 - {integer} - {integer} - (unIData - (headList {data} ds)) - (unIData - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - {Rational} - (\(a : integer) (b : integer) -> - unsafeRatio a b))) - , (\(ds : list data) -> - NewConstitution - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {GovernanceActionId} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (headList {data} ds)) - (let - !eta : data - = headList {data} (tailList {data} ds) - in - casePair - {integer} - {list data} - {Maybe bytestring} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Maybe bytestring) - index - [ (\(ds : list data) -> - `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} ds)) ] - args))) - , (\(ds : list data) -> InfoAction) ] - args))) ] - args) - in - letrec - !go : list data -> List ProposalProcedure - = \(xs : list data) -> case - (List ProposalProcedure) - xs - [ (\(x : data) (xs : list data) -> - Cons - {ProposalProcedure} - (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` - x) - (go xs)) - , (Nil {ProposalProcedure}) ] - in - letrec - !go : list data -> List bytestring - = \(xs : list data) -> + ProposalProcedure + d + [ (\(arg : data) + (arg : data) + (arg : data) -> + ProposalProcedure + (unIData arg) + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (case + GovernanceAction + arg + [ (\(arg : data) + (arg : data) + (arg : data) -> + ParameterChange + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + arg + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) + , (\(arg : data) + (arg : data) -> + HardForkInitiation + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + (case + ProtocolVersion + arg + [ (\(arg : data) (arg : data) -> + ProtocolVersion + (unIData arg) + (unIData arg)) ])) + , (\(arg : data) + (arg : data) -> + TreasuryWithdrawals + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Credential} + {integer} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + unIData + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) + , (\(arg : data) -> + NoConfidence + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) + (arg : data) + (arg : data) -> + UpdateCommittee + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {Credential} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Credential} + {integer} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + unIData + arg) + (Tuple2_match + {integer} + {integer} + (case + (Tuple2 integer integer) + arg + [ (\(arg : data) (arg : data) -> + Tuple2 + {integer} + {integer} + (unIData arg) + (unIData arg)) ]) + {Rational} + (\(a : integer) (b : integer) -> + unsafeRatio a b))) + , (\(arg : data) + (arg : data) -> + NewConstitution + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {GovernanceActionId} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + arg) + (case + (Maybe bytestring) + arg + [ (\(arg : data) -> + `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) ])) + , InfoAction ])) ] + data Voter | Voter_match where + CommitteeVoter : Credential -> Voter + DRepVoter : Credential -> Voter + StakePoolVoter : bytestring -> Voter + !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> Voter + = \(d : data) -> case - (List bytestring) - xs - [ (\(x : data) (xs : list data) -> - Cons {bytestring} (unBData x) (go xs)) - , (Nil {bytestring}) ] - in - let + Voter + d + [ (\(arg : data) -> + CommitteeVoter + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> + DRepVoter + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> StakePoolVoter (unBData arg)) ] data DRep | DRep_match where DRep : Credential -> DRep DRepAlwaysAbstain : DRep DRepAlwaysNoConfidence : DRep !`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` : data -> DRep = \(d : data) -> - casePair - {integer} - {list data} - {DRep} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> DRep) - index - [ (\(ds : list data) -> - DRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> DRepAlwaysAbstain) - , (\(ds : list data) -> DRepAlwaysNoConfidence) ] - args) + case + DRep + d + [ (\(arg : data) -> + DRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , DRepAlwaysAbstain + , DRepAlwaysNoConfidence ] data Delegatee | Delegatee_match where DelegStake : bytestring -> Delegatee DelegStakeVote : bytestring -> DRep -> Delegatee DelegVote : DRep -> Delegatee !`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` : data -> Delegatee = \(d : data) -> - casePair - {integer} - {list data} - {Delegatee} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Delegatee) - index - [ (\(ds : list data) -> - DelegStake (unBData (headList {data} ds))) - , (\(ds : list data) -> - DelegVote - (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DelegStakeVote - (unBData (headList {data} ds)) - (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) + case + Delegatee + d + [ (\(arg : data) -> DelegStake (unBData arg)) + , (\(arg : data) -> + DelegVote (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) -> + DelegStakeVote + (unBData arg) + (`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` arg)) ] data TxCert | TxCert_match where TxCertAuthHotCommittee : Credential -> Credential -> TxCert TxCertDelegStaking : Credential -> Delegatee -> TxCert @@ -458,95 +348,63 @@ TxCertUpdateDRep : Credential -> TxCert !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxCert = \(eta : data) -> - casePair - {integer} - {list data} - {TxCert} - (unConstrData eta) - (\(index : integer) (args : list data) -> - case - (list data -> TxCert) - index - [ (\(ds : list data) -> - TxCertRegStaking - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertUnRegStaking - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertDelegStaking - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - TxCertRegDeleg - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` - (headList {data} l)) - (unIData (headList {data} (tailList {data} l)))) - , (\(ds : list data) -> - TxCertRegDRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertUpdateDRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - TxCertUnRegDRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertPoolRegister - (unBData (headList {data} ds)) - (unBData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertPoolRetire - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertAuthHotCommittee - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) - , (\(ds : list data) -> - TxCertResignColdCommittee - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) ] - args) - in - letrec - !go : list data -> List TxCert - = \(xs : list data) -> case - (List TxCert) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxCert} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxCert}) ] - in - let + TxCert + eta + [ (\(arg : data) (arg : data) -> + TxCertRegStaking + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg)) + , (\(arg : data) (arg : data) -> + TxCertUnRegStaking + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg)) + , (\(arg : data) (arg : data) -> + TxCertDelegStaking + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) (arg : data) -> + TxCertRegDeleg + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` arg) + (unIData arg)) + , (\(arg : data) (arg : data) -> + TxCertRegDRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (unIData arg)) + , (\(arg : data) -> + TxCertUpdateDRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) (arg : data) -> + TxCertUnRegDRep + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (unIData arg)) + , (\(arg : data) (arg : data) -> + TxCertPoolRegister (unBData arg) (unBData arg)) + , (\(arg : data) (arg : data) -> + TxCertPoolRetire (unBData arg) (unIData arg)) + , (\(arg : data) (arg : data) -> + TxCertAuthHotCommittee + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) + , (\(arg : data) -> + TxCertResignColdCommittee + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` arg)) ] + data TxOutRef | TxOutRef_match where + TxOutRef : bytestring -> integer -> TxOutRef + !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef + = \(d : data) -> + case + TxOutRef + d + [ (\(arg : data) (arg : data) -> + TxOutRef (unBData arg) (unIData arg)) ] data StakingCredential | StakingCredential_match where StakingHash : Credential -> StakingCredential StakingPtr : integer -> integer -> integer -> StakingCredential @@ -568,262 +426,71 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - casePair - {integer} - {list data} - {TxOut} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {Address} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - (\(d : data) -> - casePair - {integer} - {list data} - {StakingCredential} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - StakingCredential) - index - [ (\(ds : list data) -> - StakingHash - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList - {data} - ds))) - , (\(ds : list data) -> - let - !l : list data - = tailList {data} ds - in - StakingPtr - (unIData - (headList - {data} - ds)) - (unIData - (headList - {data} - l)) - (unIData - (headList - {data} - (tailList - {data} - l)))) ] - args)) - (headList - {data} - (tailList {data} ds)))) ] - args)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) bytestring integer} - unBData - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {integer} - unBData - unIData) - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {OutputDatum} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> OutputDatum) - index - [ (\(ds : list data) -> NoOutputDatum) - , (\(ds : list data) -> - OutputDatumHash - (unBData (headList {data} ds))) - , (\(ds : list data) -> - OutputDatum (headList {data} ds)) ] - args)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} (tailList {data} l)))) ] - args) - in - letrec - !go : list data -> List TxOut - = \(xs : list data) -> case - (List TxOut) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxOut} - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxOut}) ] - in - let - data TxOutRef | TxOutRef_match where - TxOutRef : bytestring -> integer -> TxOutRef - !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef - = \(d : data) -> - casePair - {integer} - {list data} - {TxOutRef} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + TxOut + eta + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxOut + (case + Address + arg + [ (\(arg : data) + (arg : data) -> + Address + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {StakingCredential} + (\(d : data) -> + case + StakingCredential + d + [ (\(arg : data) -> + StakingHash + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) + (arg : data) -> + StakingPtr + (unIData arg) + (unIData arg) + (unIData arg)) ]) + arg)) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {integer} + unBData + unIData) + arg) + (case + OutputDatum + arg + [ NoOutputDatum + , (\(arg : data) -> OutputDatumHash (unBData arg)) + , (\(arg : data) -> OutputDatum arg) ]) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg)) ] data TxInInfo | TxInInfo_match where TxInInfo : TxOutRef -> TxOut -> TxInInfo !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - casePair - {integer} - {list data} - {TxInInfo} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> - case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - letrec - !go : list data -> List TxInInfo - = \(xs : list data) -> case - (List TxInInfo) - xs - [ (\(x : data) (xs : list data) -> - Cons - {TxInInfo} - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` x) - (go xs)) - , (Nil {TxInInfo}) ] - in - let - !`$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` : data -> data - = \(d : data) -> d - !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool - = \(d : data) -> - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - data (Extended :: * -> *) a | Extended_match where - Finite : a -> Extended a - NegInf : Extended a - PosInf : Extended a - !`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` : - all a. (\a -> data -> a) a -> data -> Extended a - = /\a -> - \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Extended a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Extended a) - index - [ (\(ds : list data) -> NegInf {a}) - , (\(ds : list data) -> - Finite {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> PosInf {a}) ] - args) - data Voter | Voter_match where - CommitteeVoter : Credential -> Voter - DRepVoter : Credential -> Voter - StakePoolVoter : bytestring -> Voter - !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> Voter - = \(d : data) -> - casePair - {integer} - {list data} - {Voter} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Voter) - index - [ (\(ds : list data) -> - CommitteeVoter - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - DRepVoter - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - StakePoolVoter (unBData (headList {data} ds))) ] - args) + TxInInfo + d + [ (\(arg : data) (arg : data) -> + TxInInfo + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` arg) + (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` arg)) ] data ScriptInfo | ScriptInfo_match where CertifyingScript : integer -> TxCert -> ScriptInfo MintingScript : bytestring -> ScriptInfo @@ -878,341 +545,207 @@ let !ds : ScriptContext - = casePair - {integer} - {list data} - {ScriptContext} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ScriptContext - (let - !eta : data = headList {data} ds - in - casePair - {integer} - {list data} - {TxInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> TxInfo) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - !l : list data = tailList {data} l - in - TxInfo - (let - !d : data = headList {data} ds - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (unIData (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {(\k v -> List (Tuple2 k v)) - bytestring - integer} - unBData - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {integer} - unBData - unIData) - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Credential} - {integer} - `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - unIData - (headList {data} l)) - (let - !d : data = headList {data} l - in - casePair - {integer} - {list data} - {Interval integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval + = case + ScriptContext + d + [ (\(arg : data) + (arg : data) + (arg : data) -> + ScriptContext + (case + TxInfo + arg + [ (\(arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) + (arg : data) -> + TxInfo + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxInInfo} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxOut} + `$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` + arg) + (unIData arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {(\k v -> List (Tuple2 k v)) bytestring integer} + unBData + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {integer} + unBData + unIData) + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {TxCert} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Credential} + {integer} + `$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + unIData + arg) + (case + (Interval integer) + arg + [ (\(arg : data) + (arg : data) -> + Interval + {integer} + (case + (LowerBound integer) + arg + [ (\(arg : data) + (arg : data) -> + LowerBound + {integer} + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` {integer} - (let - !d : data - = headList {data} ds - in - casePair - {integer} - {list data} - {LowerBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - LowerBound integer) - index - [ (\(ds : - list data) -> - LowerBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - (let - !d : data - = headList - {data} - (tailList {data} ds) - in - casePair - {integer} - {list data} - {UpperBound integer} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> - UpperBound integer) - index - [ (\(ds : - list data) -> - UpperBound - {integer} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args))) ] - args)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {ScriptPurpose} - {data} - (\(d : data) -> - casePair - {integer} - {list data} - {ScriptPurpose} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptPurpose) - index - [ (\(ds : list data) -> - Minting - (unBData - (headList - {data} - ds))) - , (\(ds : list data) -> - Spending - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList - {data} - ds))) - , (\(ds : list data) -> - Rewarding - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList - {data} - ds))) - , (\(ds : list data) -> - Certifying - (unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) - , (\(ds : list data) -> - Voting - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList - {data} - ds))) - , (\(ds : list data) -> - Proposing - (unIData - (headList - {data} - ds)) - (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` - (headList - {data} - (tailList - {data} - ds)))) ] - args)) - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {bytestring} - {data} - unBData - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList {data} l)) - (unBData (headList {data} l)) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {Voter} - {(\k v -> List (Tuple2 k v)) - GovernanceActionId - Vote} - `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - {GovernanceActionId} - {Vote} - `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` - (\(d : data) -> - casePair + unIData + arg) + (case + bool + arg + [False, True])) ]) + (case + (UpperBound integer) + arg + [ (\(arg : data) + (arg : data) -> + UpperBound {integer} - {list data} - {Vote} - (unConstrData d) - (\(index : integer) - (args : list data) -> - case - (list data -> Vote) - index - [ (\(ds : list data) -> - VoteNo) - , (\(ds : list data) -> - VoteYes) - , (\(ds : list data) -> - Abstain) ] - args))) - (headList {data} l)) - (let - !d : data = headList {data} l - in - go (unListData d)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} l)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {integer} - unIData - (headList - {data} - (tailList {data} l)))) ] - args)) - (headList {data} l) - (let - !eta : data = headList {data} (tailList {data} l) - in - casePair - {integer} - {list data} - {ScriptInfo} - (unConstrData eta) - (\(index : integer) - (args : list data) -> - case - (list data -> ScriptInfo) - index - [ (\(ds : list data) -> - MintingScript - (unBData (headList {data} ds))) - , (\(ds : list data) -> - SpendingScript - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {data} - `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) - , (\(ds : list data) -> - RewardingScript - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - CertifyingScript - (unIData (headList {data} ds)) - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) - , (\(ds : list data) -> - VotingScript - (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> - ProposingScript - (unIData (headList {data} ds)) - (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) ] - args))) ] - args) + (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (case + bool + arg + [False, True])) ])) ]) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {bytestring} + unBData + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {ScriptPurpose} + {data} + (\(d : data) -> + case + ScriptPurpose + d + [ (\(arg : data) -> Minting (unBData arg)) + , (\(arg : data) -> + Spending + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Rewarding + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + Certifying + (unIData arg) + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + Voting + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + Proposing + (unIData arg) + (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` + arg)) ]) + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {bytestring} + {data} + unBData + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg) + (unBData arg) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {Voter} + {(\k v -> List (Tuple2 k v)) + GovernanceActionId + Vote} + `$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + {GovernanceActionId} + {Vote} + `$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` + (\(d : data) -> + case Vote d [VoteNo, VoteYes, Abstain])) + arg) + (`$fUnsafeFromDataList_$cunsafeFromBuiltinData` + {ProposalProcedure} + `$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {integer} + unIData + arg)) ]) + arg + (case + ScriptInfo + arg + [ (\(arg : data) -> MintingScript (unBData arg)) + , (\(arg : data) + (arg : data) -> + SpendingScript + (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` + arg) + (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` + {data} + `$fUnsafeFromDataBuiltinData_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + RewardingScript + (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + CertifyingScript + (unIData arg) + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) -> + VotingScript + (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` + arg)) + , (\(arg : data) + (arg : data) -> + ProposingScript + (unIData arg) + (`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` + arg)) ])) ] in Unit) (Constr 0 diff --git a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.size.golden b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.size.golden index 885a27e49a0..707001d7afb 100644 --- a/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.size.golden +++ b/plutus-benchmark/script-contexts/test/V3/9.6/checkScriptContext2.size.golden @@ -1 +1 @@ -1763 \ No newline at end of file +927 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1.pir.golden b/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1.pir.golden index eb9f57ebeff..2f928d808a2 100644 --- a/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1.pir.golden +++ b/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1.pir.golden @@ -14,21 +14,11 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - (let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] data Unit | Unit_match where Unit : Unit data (Solo :: * -> *) a | Solo_match where diff --git a/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed-4.eval.golden b/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed-4.eval.golden index 3d20fb7bdc9..c120b08d739 100644 --- a/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed-4.eval.golden @@ -1,6 +1,6 @@ CPU: 19_611_399 Memory: 79_830 -Term Size: 1_773 -Flat Size: 1_844 +Term Size: 1_756 +Flat Size: 1_833 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.pir.golden b/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.pir.golden index 46f55808fe9..7221a3784f9 100644 --- a/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.pir.golden +++ b/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.pir.golden @@ -344,21 +344,11 @@ let all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - (let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] !`$mTxCertRegStaking` : all r. data -> (data -> Maybe integer -> r) -> (unit -> r) -> r = /\r -> diff --git a/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.size.golden b/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.size.golden index 34e45b3489c..4ebabe0e5d5 100644 --- a/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.size.golden +++ b/plutus-benchmark/script-contexts/test/V3/Data/9.6/purposeIsWellFormed.size.golden @@ -1 +1 @@ -1771 \ No newline at end of file +1754 \ No newline at end of file diff --git a/plutus-core/plutus-core/src/PlutusCore/Builtin/Case.hs b/plutus-core/plutus-core/src/PlutusCore/Builtin/Case.hs index 99fc4fd9b12..4af905bc4a8 100644 --- a/plutus-core/plutus-core/src/PlutusCore/Builtin/Case.hs +++ b/plutus-core/plutus-core/src/PlutusCore/Builtin/Case.hs @@ -17,6 +17,12 @@ import NoThunks.Class import Text.PrettyBy (display) import Universe +data BranchArgShape term uni ann + = FixedArityBranch term [Type TyName uni ann] + -- ^ Each branch has an exact list of argument types. + | VariableArityBranch term (Type TyName uni ann) + -- ^ Each branch has one type, to be repeated for arbitrary arity. + class AnnotateCaseBuiltin uni where -- | Given a tag for a built-in type and a list of branches, annotate each of the branches with -- its expected argument types or fail if casing on values of the built-in type isn't supported. @@ -26,7 +32,7 @@ class AnnotateCaseBuiltin uni where :: UniOf term ~ uni => Type TyName uni ann -> [term] - -> Either Text [(term, [Type TyName uni ann])] + -> Either Text [BranchArgShape term uni ann] class CaseBuiltin uni where -- | Given a constant with its type tag and a vector of branches, choose the appropriate branch diff --git a/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs b/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs index 19d384b3bf8..206a8f42623 100644 --- a/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs +++ b/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs @@ -49,7 +49,7 @@ import PlutusCore.Core.Type (Type (..)) import PlutusCore.Crypto.BLS12_381.G1 qualified as BLS12_381.G1 import PlutusCore.Crypto.BLS12_381.G2 qualified as BLS12_381.G2 import PlutusCore.Crypto.BLS12_381.Pairing qualified as BLS12_381.Pairing -import PlutusCore.Data (Data) +import PlutusCore.Data (Data (Constr)) import PlutusCore.Evaluation.Machine.ExMemoryUsage (IntegerCostedLiterally (..), NumBytesCostedAsNumWords (..)) import PlutusCore.Pretty.Extra (juxtRenderContext) @@ -531,27 +531,29 @@ outOfBoundsErr x branches = fold ] instance AnnotateCaseBuiltin DefaultUni where - annotateCaseBuiltin ty branches = case ty of + annotateCaseBuiltin ty branches = case ty of TyBuiltin _ (SomeTypeIn DefaultUniUnit) -> case branches of - [x] -> Right $ [(x, [])] + [x] -> Right $ [FixedArityBranch x []] _ -> Left "Casing on unit only allows exactly one branch" TyBuiltin _ (SomeTypeIn DefaultUniBool) -> case branches of - [f] -> Right $ [(f, [])] - [f, t] -> Right $ [(f, []), (t, [])] + [f] -> Right $ [FixedArityBranch f []] + [f, t] -> Right $ [FixedArityBranch f [], FixedArityBranch t []] _ -> Left "Casing on bool requires exactly one branch or two branches" TyBuiltin _ (SomeTypeIn DefaultUniInteger) -> - Right $ map (, []) branches + Right $ map (flip FixedArityBranch []) branches listTy@(TyApp _ (TyBuiltin _ (SomeTypeIn DefaultUniProtoList)) argTy) -> case branches of - [cons] -> Right [(cons, [argTy, listTy])] - [cons, nil] -> Right [(cons, [argTy, listTy]), (nil, [])] + [cons] -> Right [FixedArityBranch cons [argTy, listTy]] + [cons, nil] -> Right [FixedArityBranch cons [argTy, listTy], FixedArityBranch nil []] _ -> Left "Casing on list requires exactly one branch or two branches" (TyApp _ (TyApp _ (TyBuiltin _ (SomeTypeIn DefaultUniProtoPair)) lTyArg) rTyArg) -> case branches of - [f] -> Right [(f, [lTyArg, rTyArg])] + [f] -> Right [FixedArityBranch f [lTyArg, rTyArg]] _ -> Left "Casing on pair requires exactly one branch" + TyBuiltin _ (SomeTypeIn DefaultUniData) -> + Right $ map (flip VariableArityBranch ty) branches _ -> Left $ display (() <$ ty) <> " isn't supported in 'case'" instance CaseBuiltin DefaultUni where @@ -584,6 +586,16 @@ instance CaseBuiltin DefaultUni where case x of (l, r) -> Right $ headSpine (branches Vector.! 0) [someValueOf tyL l, someValueOf tyR r] | otherwise -> Left $ outOfBoundsErr someVal branches + DefaultUniData -> + case x of + Constr ix ds + | 0 <= ix && ix < toInteger len -> + Right $ + headSpine + (branches Vector.! (fromIntegral ix)) + (someValueOf DefaultUniData <$> ds) + | otherwise -> Left $ outOfBoundsErr someVal branches + _ -> Left "Only 'Constr' constructor can be cased" _ -> Left $ display uni <> " isn't supported in 'case'" where !len = Vector.length branches diff --git a/plutus-core/plutus-core/src/PlutusCore/TypeCheck/Internal.hs b/plutus-core/plutus-core/src/PlutusCore/TypeCheck/Internal.hs index 08d36f237ba..ac743574391 100644 --- a/plutus-core/plutus-core/src/PlutusCore/TypeCheck/Internal.hs +++ b/plutus-core/plutus-core/src/PlutusCore/TypeCheck/Internal.hs @@ -5,6 +5,7 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} +{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} @@ -577,10 +578,28 @@ inferTypeM (Case ann resTy scrut branches) = do -- for the number of branches Nothing -> throwError (TypeMismatch ann (void scrut) expectedSop vScrutTy) vTy -> case annotateCaseBuiltin vTy branches of - Right branchesAndArgTypes -> for_ branchesAndArgTypes $ \(c, argTypes) -> do + Right branchesAndArgTypes -> for_ branchesAndArgTypes $ \case + FixedArityBranch c argTypes -> do vArgTypes <- traverse (fmap unNormalized . normalizeTypeM) argTypes -- made of sub-parts of a normalized type, so normalized checkTypeM ann c (Normalized $ mkIterTyFun () vArgTypes (unNormalized vResTy)) + VariableArityBranch c argType -> do + cTy <- inferTypeM c + let + checkVariableArityType t = + case t of + -- Make sure result type is correct + t' | t' == (unNormalized vResTy) -> pure () + -- If it is function type, make sure argument is 'argType'. + TyFun _ at t' + | at == argType -> checkVariableArityType t' + | otherwise -> + throwError $ + TypeMismatch ann (void c) (ExpectedExact $ unNormalized vResTy) cTy + _ -> + throwError $ + TypeMismatch ann (void c) (ExpectedExact $ unNormalized vResTy) cTy + checkVariableArityType (unNormalized cTy) Left err -> throwError $ UnsupportedCaseBuiltin ann err -- If we got through all that, then every case type is correct, including that diff --git a/plutus-core/plutus-ir/src/PlutusIR/TypeCheck/Internal.hs b/plutus-core/plutus-ir/src/PlutusIR/TypeCheck/Internal.hs index 7be5f85e71d..42e02b6c066 100644 --- a/plutus-core/plutus-ir/src/PlutusIR/TypeCheck/Internal.hs +++ b/plutus-core/plutus-ir/src/PlutusIR/TypeCheck/Internal.hs @@ -35,7 +35,7 @@ import PlutusIR.MkPir qualified as PIR import PlutusIR.Transform.Rename () import PlutusCore (toPatFuncKind, tyVarDeclName, typeAnn) -import PlutusCore.Builtin (annotateCaseBuiltin) +import PlutusCore.Builtin (BranchArgShape (..), annotateCaseBuiltin) import PlutusCore.Core qualified as PLC import PlutusCore.Error as PLC import PlutusCore.MkPlc (mkIterTyFun) @@ -289,10 +289,28 @@ inferTypeM (Case ann resTy scrut branches) = do -- for the number of branches Nothing -> throwError $ PLCTypeError (TypeMismatch ann (void scrut) expectedSop vScrutTy) vTy -> case annotateCaseBuiltin vTy branches of - Right branchesAndArgTypes -> for_ branchesAndArgTypes $ \(c, argTypes) -> do + Right branchesAndArgTypes -> for_ branchesAndArgTypes $ \case + FixedArityBranch c argTypes -> do vArgTypes <- traverse (fmap unNormalized . normalizeTypeM) argTypes -- made of sub-parts of a normalized type, so normalized checkTypeM ann c (Normalized $ mkIterTyFun () vArgTypes (unNormalized vResTy)) + VariableArityBranch c argType -> do + cTy <- inferTypeM c + let + checkVariableArityType t = + case t of + -- Make sure result type is correct + t' | t' == (unNormalized vResTy) -> pure () + -- If it is function type, make sure argument is 'argType'. + TyFun _ at t' + | at == argType -> checkVariableArityType t' + | otherwise -> + throwError $ PLCTypeError $ + TypeMismatch ann (void c) (ExpectedExact $ unNormalized vResTy) cTy + _ -> + throwError $ PLCTypeError $ + TypeMismatch ann (void c) (ExpectedExact $ unNormalized vResTy) cTy + checkVariableArityType (unNormalized cTy) Left err -> throwError $ PLCTypeError (UnsupportedCaseBuiltin ann err) -- If we got through all that, then every case type is correct, including that diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq1.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq1.eval.golden index 1d7da64e3c8..d24cea77866 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq1.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq1.eval.golden @@ -1,6 +1,6 @@ -CPU: 339_163_895 -Memory: 998_845 -Term Size: 659 -Flat Size: 939 +CPU: 328_592_875 +Memory: 964_285 +Term Size: 637 +Flat Size: 920 (con bool True) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq2.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq2.eval.golden index 964a67c9519..f4533bb6583 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq2.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq2.eval.golden @@ -1,6 +1,6 @@ -CPU: 356_777_594 -Memory: 1_065_515 -Term Size: 659 -Flat Size: 990 +CPU: 345_639_098 +Memory: 1_028_627 +Term Size: 637 +Flat Size: 971 (con bool False) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq3.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq3.eval.golden index 8e3436da5bd..c4567831e41 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq3.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq3.eval.golden @@ -1,6 +1,6 @@ -CPU: 370_496_887 -Memory: 1_111_429 -Term Size: 659 -Flat Size: 990 +CPU: 357_939_701 +Memory: 1_068_721 +Term Size: 637 +Flat Size: 971 (con bool True) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq4.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq4.eval.golden index 7d883985627..46e495acf1e 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq4.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq4.eval.golden @@ -1,6 +1,6 @@ -CPU: 332_716_553 -Memory: 955_736 -Term Size: 659 -Flat Size: 946 +CPU: 326_618_754 +Memory: 935_564 +Term Size: 637 +Flat Size: 927 (con bool False) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq5.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq5.eval.golden index 3f19cd63ae6..10bf69a13f1 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq5.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/geq5.eval.golden @@ -1,6 +1,6 @@ -CPU: 351_276_383 -Memory: 1_031_900 -Term Size: 659 -Flat Size: 946 +CPU: 340_421_625 +Memory: 996_176 +Term Size: 637 +Flat Size: 927 (con bool True) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt.pir.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt.pir.golden index ee74ddedcc5..ccacd6d4717 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt.pir.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt.pir.golden @@ -56,29 +56,17 @@ let \(`$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) + case + (These a b) + d + [ (\(arg : data) -> This {a} {b} (`$dUnsafeFromData` arg)) + , (\(arg : data) -> That {a} {b} (`$dUnsafeFromData` arg)) + , (\(arg : data) (arg : data) -> + These + {a} + {b} + (`$dUnsafeFromData` arg) + (`$dUnsafeFromData` arg)) ] in letrec !go : list (pair data data) -> bool diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt1.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt1.eval.golden index f8e3a05a720..5eef7c63b37 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt1.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt1.eval.golden @@ -1,6 +1,6 @@ -CPU: 390_276_300 -Memory: 1_179_960 -Term Size: 1_052 -Flat Size: 1_306 +CPU: 379_705_280 +Memory: 1_145_400 +Term Size: 1_030 +Flat Size: 1_287 (con bool False) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt2.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt2.eval.golden index 26b42d97cac..7ab9a9d5204 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt2.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt2.eval.golden @@ -1,6 +1,6 @@ -CPU: 357_145_594 -Memory: 1_067_815 -Term Size: 1_052 -Flat Size: 1_357 +CPU: 346_007_098 +Memory: 1_030_927 +Term Size: 1_030 +Flat Size: 1_338 (con bool False) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt3.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt3.eval.golden index ee849a733a0..26aaffa435e 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt3.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt3.eval.golden @@ -1,6 +1,6 @@ -CPU: 422_330_992 -Memory: 1_296_509 -Term Size: 1_052 -Flat Size: 1_357 +CPU: 409_773_806 +Memory: 1_253_801 +Term Size: 1_030 +Flat Size: 1_338 (con bool True) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt4.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt4.eval.golden index 7fbe388ea97..61da8c0ea09 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt4.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt4.eval.golden @@ -1,6 +1,6 @@ -CPU: 333_084_553 -Memory: 958_036 -Term Size: 1_052 -Flat Size: 1_313 +CPU: 326_986_754 +Memory: 937_864 +Term Size: 1_030 +Flat Size: 1_294 (con bool False) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt5.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt5.eval.golden index 35504f63d1f..3c78ee48af2 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt5.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/gt5.eval.golden @@ -1,6 +1,6 @@ -CPU: 375_739_011 -Memory: 1_122_324 -Term Size: 1_052 -Flat Size: 1_313 +CPU: 364_884_253 +Memory: 1_086_600 +Term Size: 1_030 +Flat Size: 1_294 (con bool True) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.pir.golden b/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.pir.golden index f045fe73028..bee805997d5 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.pir.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.pir.golden @@ -40,20 +40,10 @@ in in Maybe_match {data} - ((let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) - {Maybe data} - (unConstrData (headList {data} (tailList {data} l))) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe data) - index - [ (\(ds : list data) -> Just {data} (headList {data} ds)) - , (\(ds : list data) -> Nothing {data}) ] - args)) + (case + (Maybe data) + (headList {data} (tailList {data} l)) + [(\(arg : data) -> Just {data} arg), (Nothing {data})]) {all dead. bool} (\(ds : data) -> /\dead -> True) (/\dead -> False) diff --git a/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.uplc.golden b/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.uplc.golden index a7c65ea5261..7de37f6e755 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.uplc.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/ScriptContext/9.6/succeedsIfHasDatum.uplc.golden @@ -8,15 +8,8 @@ [ False , (case (case - (unConstrData - (force headList - (force tailList (case tup [(\l r -> r)])))) - [ (\index args -> - case - index - [ (\ds -> constr 0 [(force headList ds)]) - , (\ds -> constr 1 []) ] - args) ]) + (force headList (force tailList (case tup [(\l r -> r)]))) + [(\arg -> constr 0 [arg]), (constr 1 [])]) [(\ds -> True), False]) ]) (unConstrData (force headList diff --git a/plutus-ledger-api/test-plugin/Spec/ScriptSize.hs b/plutus-ledger-api/test-plugin/Spec/ScriptSize.hs index c75e22259c5..fe2673e866d 100644 --- a/plutus-ledger-api/test-plugin/Spec/ScriptSize.hs +++ b/plutus-ledger-api/test-plugin/Spec/ScriptSize.hs @@ -38,7 +38,7 @@ tests = assertBool "Size V2 script" $ sizeV2 Haskell.< 100 , testCase "V3 Script Size" do let sizeV3 = SBS.length (V3.serialiseCompiledCode codeV3) - assertBool "Size V3 script" $ sizeV3 Haskell.> 1700 + assertBool "Size V3 script" $ sizeV3 Haskell.> 1000 , testCase "V3 Script Size (lazy decoding)" do let sizeV3s = SBS.length (V3.serialiseCompiledCode codeV3lazy) assertBool "Size V3 script with a lazy decoding" $ sizeV3s Haskell.< 100 diff --git a/plutus-tx-plugin/src/PlutusTx/Compiler/Builtins.hs b/plutus-tx-plugin/src/PlutusTx/Compiler/Builtins.hs index 55627d4b224..1dc187a9842 100644 --- a/plutus-tx-plugin/src/PlutusTx/Compiler/Builtins.hs +++ b/plutus-tx-plugin/src/PlutusTx/Compiler/Builtins.hs @@ -23,6 +23,7 @@ module PlutusTx.Compiler.Builtins ( import PlutusTx.Builtins.HasOpaque qualified as Builtins import PlutusTx.Builtins.Internal qualified as Builtins +import PlutusTx.Plugin.Lib qualified import PlutusTx.Compiler.Error import PlutusTx.Compiler.Names @@ -49,6 +50,7 @@ import GHC.Plugins qualified as GHC import Language.Haskell.TH.Syntax qualified as TH +import Control.Exception.Base qualified import Control.Monad.Reader (asks) import Data.ByteString qualified as BS @@ -251,6 +253,8 @@ builtinNames = , 'Builtins.unsafeDataAsList , 'Builtins.unsafeDataAsB , 'Builtins.unsafeDataAsI + , 'PlutusTx.Plugin.Lib.caseDataConstr' + , 'Builtins.caseDataConstr , ''Builtins.BuiltinBLS12_381_G1_Element , 'Builtins.bls12_381_G1_equals , 'Builtins.bls12_381_G1_add @@ -289,6 +293,8 @@ builtinNames = , 'Builtins.countSetBits , 'Builtins.findFirstSetBit , 'Builtins.expModInteger + + , 'Control.Exception.Base.patError ] defineBuiltinTerm :: (CompilingDefault uni fun m ann) => Ann -> TH.Name -> PIRTerm uni fun -> m () diff --git a/plutus-tx-plugin/src/PlutusTx/Compiler/Expr.hs b/plutus-tx-plugin/src/PlutusTx/Compiler/Expr.hs index fded5488626..6ce2ae0d73c 100644 --- a/plutus-tx-plugin/src/PlutusTx/Compiler/Expr.hs +++ b/plutus-tx-plugin/src/PlutusTx/Compiler/Expr.hs @@ -16,6 +16,7 @@ -- | Functions for compiling GHC Core expressions into Plutus Core terms. module PlutusTx.Compiler.Expr (compileExpr, compileExprWithDefs, compileDataConRef) where +import Control.Exception.Base qualified import GHC.Builtin.Names qualified as GHC import GHC.Builtin.Types.Prim qualified as GHC import GHC.ByteCode.Types qualified as GHC @@ -49,6 +50,7 @@ import PlutusTx.List qualified import PlutusTx.Optimize.Inline qualified import PlutusTx.PIRTypes import PlutusTx.PLCTypes (PLCType, PLCVar) +import PlutusTx.Plugin.Lib qualified -- I feel like we shouldn't need this, we only need it to spot the special String type, which is annoying import PlutusTx.Builtins.HasOpaque qualified as Builtins @@ -864,7 +866,7 @@ compileHaskellList :: forall uni fun m ann . (CompilingDefault uni fun m ann) => GHC.CoreExpr - -> m [PIRTerm uni fun] + -> m [GHC.CoreExpr] compileHaskellList = buildList . strip where err = @@ -874,7 +876,7 @@ compileHaskellList = buildList . strip -- This is when the list is a single element and GHC will specialize list builder directly. -- GHC will generate core that looks like below: -- (:) @resTy e ([] @resTy) - buildList (GHC.App (GHC.App (GHC.App (GHC.Var _con) _ty) e) _) = traverse compileExpr [e] + buildList (GHC.App (GHC.App (GHC.App (GHC.Var _con) _ty) e) _) = pure [e] -- This is when the list has more than one elements. GHC will generate core that looks like below: -- build @resTy (\con nil -> con e1 (con e2 (... nil))) -- 'build' is some special function that abstracts the list type. @@ -888,7 +890,7 @@ compileHaskellList = buildList . strip | nil' == nil = pure [] | otherwise = err consume _ = err - in consume li >>= traverse compileExpr + in consume li buildList _ = err compileExpr :: (CompilingDefault uni fun m ann) => GHC.CoreExpr -> m (PIRTerm uni fun) @@ -922,16 +924,82 @@ compileExpr e = traceCompilation 2 ("Compiling expr:" GHC.<+> GHC.ppr e) $ do boolOperatorAnd <- lookupGhcName '(PlutusTx.Bool.&&) inlineName <- lookupGhcName 'PlutusTx.Optimize.Inline.inline + caseDataConstr <- lookupGhcName 'Builtins.caseDataConstr + caseDataConstr' <- lookupGhcId 'PlutusTx.Plugin.Lib.caseDataConstr' caseIntegerName <- lookupGhcName 'Builtins.caseInteger listIndexId <- lookupGhcId '(PlutusTx.List.!!) + patErrorId <- lookupGhcId 'Control.Exception.Base.patError case e of + -- case Data.Constr + GHC.App (GHC.App (GHC.App (GHC.Var var) (GHC.Type resTy)) scrut) li + | GHC.getName var == caseDataConstr && coDatatypeStyle opts == PIR.BuiltinCasing -> do + let + isPatError (GHC.Case (GHC.App (GHC.App (GHC.App (GHC.Var patId) _) _) _) _ _ []) = + patId == patErrorId + isPatError (GHC.App (GHC.App (GHC.App (GHC.Var patId) _) _) _) = + patId == patErrorId + isPatError _ = False + + -- case ds_dqhq of { + -- [] -> jump fail_dqhv (##); + -- : x_aqgg [Occ=Once1] ds_dqht [Occ=Once1!] -> <...nested...> + -- } + collapseNestedCases :: GHC.Id -> GHC.CoreExpr -> _ (GHC.CoreExpr, [GHC.Id]) + collapseNestedCases failer (GHC.Case _ _ _ [emptyCase, restCase]) = + case (emptyCase, restCase) of + (GHC.Alt _ [] (GHC.App (GHC.Var failer') _), GHC.Alt _ [binder, _] restExpr) + | failer' == failer -> (fmap . fmap) (binder:) $ collapseNestedCases failer (strip restExpr) + (GHC.Alt _ [] lastExpr, GHC.Alt _ _ (GHC.App (GHC.Var failer') _)) + | failer' == failer -> pure (lastExpr, []) + _ -> throwPlain $ CompilationError "List pattern should not have alternative matches" + collapseNestedCases _ _ = + throwPlain $ CompilationError "Unexpected expression where list pattern was expected" + + -- case ds_dqhq of { + -- [] -> patError ... or case patError ... {}; + -- : x_aqgg [Occ=Once1] ds_dqht [Occ=Once1!] -> <...nested...> + -- } + collapseNestedCases' :: GHC.CoreExpr -> _ (GHC.CoreExpr, [GHC.Id]) + collapseNestedCases' (GHC.Case _ _ _ [emptyCase, restCase]) = + case (emptyCase, restCase) of + (GHC.Alt _ [] failer, GHC.Alt _ [binder, _] restExpr) + | isPatError failer -> (fmap . fmap) (binder:) $ collapseNestedCases' (strip restExpr) + (GHC.Alt _ [] lastExpr, GHC.Alt _ _ failer) + | isPatError failer -> pure (lastExpr, []) + _ -> throwPlain $ CompilationError "List pattern should not have alternative matches" + collapseNestedCases' _ = + throwPlain $ CompilationError "Unexpected expression where list pattern was expected" + + -- \ (ds_dqbV [Occ=Once1!] :: [BuiltinData]) -> + -- join { + -- fail_dqc0 [Occ=Once3!T[1]] :: (# #) -> Bob + -- fail_dqc0 = ... + -- } in ... + go (GHC.Lam _arg (GHC.Let (GHC.NonRec failer _) x)) = + (uncurry $ foldr GHC.Lam) <$> collapseNestedCases failer (strip x) + go (GHC.Lam _arg x) = + (uncurry $ foldr GHC.Lam) <$> collapseNestedCases' (strip x) + go _ = + throwPlain $ + CompilationError "Unexpected expression where lambda with list pattern was expected" + + resTy' <- compileTypeNorm resTy + scrut' <- compileExpr scrut + branches <- + compileHaskellList li + >>= traverse (go . strip) + >>= traverse compileExpr + pure $ PIR.kase annAlwaysInline resTy' scrut' branches + | GHC.getName var == caseDataConstr -> do + compileExpr $ + GHC.App (GHC.App (GHC.App (GHC.Var caseDataConstr') (GHC.Type resTy)) scrut) li -- case integer GHC.App (GHC.App (GHC.App (GHC.Var var) (GHC.Type resTy)) scrut) li | GHC.getName var == caseIntegerName && coDatatypeStyle opts == PIR.BuiltinCasing -> do resTy' <- compileTypeNorm resTy scrut' <- compileExpr scrut - branches <- compileHaskellList li + branches <- compileHaskellList li >>= traverse compileExpr pure $ PIR.kase annAlwaysInline resTy' scrut' branches | GHC.getName var == caseIntegerName -> -- This is when we don't have bultin casing. We have to use something diff --git a/plutus-tx-plugin/test/Budget/9.6/map3.eval.golden b/plutus-tx-plugin/test/Budget/9.6/map3.eval.golden index 58218cf7af4..6aaf9e5ca11 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map3.eval.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map3.eval.golden @@ -1,7 +1,7 @@ -CPU: 112_163_732 -Memory: 335_284 -Term Size: 671 -Flat Size: 697 +CPU: 109_687_940 +Memory: 326_008 +Term Size: 649 +Flat Size: 678 (constr 1 diff --git a/plutus-tx-plugin/test/Budget/9.6/map3.pir.golden b/plutus-tx-plugin/test/Budget/9.6/map3.pir.golden index b3f0b5dcea3..251b1e22ff4 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map3.pir.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map3.pir.golden @@ -377,26 +377,11 @@ in \(d : (\k a -> list (pair data data)) integer a) -> go d) unIData (\(d : data) -> - (let - b = list data - in - /\r -> - \(p : pair integer b) (f : integer -> b -> r) -> case r p [f]) - {These integer integer} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> These integer integer) - index - [ (\(ds : list data) -> - This {integer} {integer} (unIData (headList {data} ds))) - , (\(ds : list data) -> - That {integer} {integer} (unIData (headList {data} ds))) - , (\(ds : list data) -> - These - {integer} - {integer} - (unIData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args)) + case + (These integer integer) + d + [ (\(arg : data) -> This {integer} {integer} (unIData arg)) + , (\(arg : data) -> That {integer} {integer} (unIData arg)) + , (\(arg : data) (arg : data) -> + These {integer} {integer} (unIData arg) (unIData arg)) ]) nt) \ No newline at end of file diff --git a/plutus-tx-plugin/test/Budget/9.6/map3.uplc.golden b/plutus-tx-plugin/test/Budget/9.6/map3.uplc.golden index 6955aa864fb..dc9d81d5746 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map3.uplc.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map3.uplc.golden @@ -58,41 +58,25 @@ r -> l) ])) , (case - (unConstrData - (case - hd - [ (\l - r -> - r) ])) - [ (\index - args -> - case - index - [ (\ds -> - constr 2 - [ (unIData - (force - headList - ds)) ]) - , (\ds -> - constr 0 - [ (unIData - (force - headList - ds)) ]) - , (\ds -> - constr 1 - [ (unIData - (force - headList - ds)) - , (unIData - (force - headList - (force - tailList - ds))) ]) ] - args) ]) ]) + (case + hd + [ (\l r -> + r) ]) + [ (\arg -> + constr 2 + [ (unIData + arg) ]) + , (\arg -> + constr 0 + [ (unIData + arg) ]) + , (\arg + arg -> + constr 1 + [ (unIData + arg) + , (unIData + arg) ]) ]) ]) , (s s tl) ]) , (constr 0 []) ]) nt)) diff --git a/plutus-tx-plugin/test/Budget/9.6/toFromData.eval.golden b/plutus-tx-plugin/test/Budget/9.6/toFromData.eval.golden index 96921707284..a65f38e02cd 100644 --- a/plutus-tx-plugin/test/Budget/9.6/toFromData.eval.golden +++ b/plutus-tx-plugin/test/Budget/9.6/toFromData.eval.golden @@ -1,7 +1,7 @@ -CPU: 3_182_422 -Memory: 13_404 -Term Size: 140 -Flat Size: 153 +CPU: 1_456_406 +Memory: 6_620 +Term Size: 70 +Flat Size: 94 (constr 1 (constr 0 (constr 0 (con bool True) (con integer 1) (con bool False))) diff --git a/plutus-tx-plugin/test/Budget/9.6/toFromData.pir.golden b/plutus-tx-plugin/test/Budget/9.6/toFromData.pir.golden index e19a4131d87..f1a28e31997 100644 --- a/plutus-tx-plugin/test/Budget/9.6/toFromData.pir.golden +++ b/plutus-tx-plugin/test/Budget/9.6/toFromData.pir.golden @@ -7,8 +7,6 @@ let data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] !d : data = (let b = Maybe (Tuple3 bool integer bool) @@ -79,86 +77,30 @@ in \(`$dUnsafeFromData` : (\a -> data -> a) integer) (`$dUnsafeFromData` : (\a -> data -> a) b) (d : data) -> - casePair - {integer} - {list data} - {Either integer b} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Either integer b) - index - [ (\(ds : list data) -> - Left {integer} {b} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> - Right {integer} {b} (`$dUnsafeFromData` (headList {data} ds))) ] - args)) + case + (Either integer b) + d + [ (\(arg : data) -> Left {integer} {b} (`$dUnsafeFromData` arg)) + , (\(arg : data) -> Right {integer} {b} (`$dUnsafeFromData` arg)) ]) unIData ((let a = Tuple3 bool integer bool in \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args)) + case + (Maybe a) + d + [(\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)), (Nothing {a})]) (\(d : data) -> - casePair - {integer} - {list data} - {Tuple3 bool integer bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Tuple3 bool integer bool) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - Tuple3 - {bool} - {integer} - {bool} - (let - !d : data = headList {data} ds - in - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [ (\(ds : list data) -> False) - , (\(ds : list data) -> True) ] - args)) - (unIData (headList {data} l)) - (let - !d : data = headList {data} (tailList {data} l) - in - casePair - {integer} - {list data} - {bool} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> bool) - index - [ (\(ds : list data) -> False) - , (\(ds : list data) -> True) ] - args))) ] - args))) + case + (Tuple3 bool integer bool) + d + [ (\(arg : data) (arg : data) (arg : data) -> + Tuple3 + {bool} + {integer} + {bool} + (case bool arg [False, True]) + (unIData arg) + (case bool arg [False, True])) ])) d \ No newline at end of file diff --git a/plutus-tx-plugin/test/Budget/9.6/toFromData.uplc.golden b/plutus-tx-plugin/test/Budget/9.6/toFromData.uplc.golden index 6365cded13b..804ca3c1697 100644 --- a/plutus-tx-plugin/test/Budget/9.6/toFromData.uplc.golden +++ b/plutus-tx-plugin/test/Budget/9.6/toFromData.uplc.golden @@ -1,82 +1,33 @@ (program 1.1.0 (case - (unConstrData - (constrData - 1 - (force mkCons - (constrData - 0 - (force mkCons - (constrData - 0 + (constrData + 1 + (force mkCons + (constrData + 0 + (force mkCons + (constrData + 0 + (force mkCons + (Constr 1 []) (force mkCons - (Constr 1 []) - (force mkCons - (iData 1) - (force mkCons (Constr 0 []) [])))) - [])) - []))) - [ (\index - args -> - case - index - [ (\ds -> constr 0 [(unIData (force headList ds))]) - , (\ds -> - constr 1 - [ (case - (unConstrData (force headList ds)) - [ (\index - args -> - case - index - [ (\ds -> - constr 0 - [ (case - (unConstrData (force headList ds)) - [ (\index - args -> - case - index - [ (\ds -> - (\l -> - constr 0 - [ (case - (unConstrData - (force - headList - ds)) - [ (\index - args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) ]) - , (unIData - (force - headList - l)) - , (case - (unConstrData - (force - headList - (force - tailList - l))) - [ (\index - args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) ]) ]) - (force tailList ds)) ] - args) ]) ]) - , (\ds -> constr 1 []) ] - args) ]) ]) ] - args) ])) \ No newline at end of file + (iData 1) + (force mkCons (Constr 0 []) [])))) + [])) + [])) + [ (\arg -> constr 0 [(unIData arg)]) + , (\arg -> + constr 1 + [ (case + arg + [ (\arg -> + constr 0 + [ (case + arg + [ (\arg arg arg -> + constr 0 + [ (case arg [False, True]) + , (unIData arg) + , (case arg [False, True]) ]) ]) ]) + , (constr 1 []) ]) ]) ])) \ No newline at end of file diff --git a/plutus-tx-plugin/test/IsData/9.6/MyMonoData.th.golden b/plutus-tx-plugin/test/IsData/9.6/MyMonoData.th.golden index 375f9f8de46..bee91a1b9e0 100644 --- a/plutus-tx-plugin/test/IsData/9.6/MyMonoData.th.golden +++ b/plutus-tx-plugin/test/IsData/9.6/MyMonoData.th.golden @@ -19,13 +19,7 @@ instance PlutusTx.IsData.Class.FromData Plugin.Data.Spec.MyMonoData in PlutusTx.Builtins.matchData' d_4 constrFun_5 (GHC.Base.const GHC.Maybe.Nothing) (GHC.Base.const GHC.Maybe.Nothing) (GHC.Base.const GHC.Maybe.Nothing) (GHC.Base.const GHC.Maybe.Nothing)} instance PlutusTx.IsData.Class.UnsafeFromData Plugin.Data.Spec.MyMonoData where {{-# INLINABLE PlutusTx.IsData.Class.unsafeFromBuiltinData #-}; - PlutusTx.IsData.Class.unsafeFromBuiltinData d_12 = PlutusTx.Builtins.Internal.casePair (PlutusTx.Builtins.Internal.unsafeDataAsConstr d_12) GHC.Base.$ (\index_13 args_14 -> PlutusTx.Builtins.Internal.caseInteger index_13 [\case - {(PlutusTx.AsData.Internal.wrapUnsafeUncons -> ((PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_15), - (PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_16)))) -> Plugin.Data.Spec.Mono1 arg_15 arg_16; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}, - \case - {(PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_17)) -> Plugin.Data.Spec.Mono2 arg_17; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}, - \case - {(PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_18)) -> Plugin.Data.Spec.Mono3 arg_18; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}] args_14)} \ No newline at end of file + PlutusTx.IsData.Class.unsafeFromBuiltinData d_12 = PlutusTx.Builtins.Internal.caseDataConstr d_12 [\[arg_13, + arg_14] -> Plugin.Data.Spec.Mono1 (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_13 :: GHC.Num.Integer.Integer) (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_14 :: GHC.Num.Integer.Integer) :: Plugin.Data.Spec.MyMonoData, + \[arg_15] -> Plugin.Data.Spec.Mono2 (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_15 :: GHC.Num.Integer.Integer) :: Plugin.Data.Spec.MyMonoData, + \[arg_16] -> Plugin.Data.Spec.Mono3 (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_16 :: GHC.Num.Integer.Integer) :: Plugin.Data.Spec.MyMonoData]} \ No newline at end of file diff --git a/plutus-tx-plugin/test/IsData/9.6/MyMonoRecord.th.golden b/plutus-tx-plugin/test/IsData/9.6/MyMonoRecord.th.golden index 9f4cb9c1b95..1126776565a 100644 --- a/plutus-tx-plugin/test/IsData/9.6/MyMonoRecord.th.golden +++ b/plutus-tx-plugin/test/IsData/9.6/MyMonoRecord.th.golden @@ -13,7 +13,5 @@ instance PlutusTx.IsData.Class.FromData Plugin.Data.Spec.MyMonoRecord in PlutusTx.Builtins.matchData' d_2 constrFun_3 (GHC.Base.const GHC.Maybe.Nothing) (GHC.Base.const GHC.Maybe.Nothing) (GHC.Base.const GHC.Maybe.Nothing) (GHC.Base.const GHC.Maybe.Nothing)} instance PlutusTx.IsData.Class.UnsafeFromData Plugin.Data.Spec.MyMonoRecord where {{-# INLINABLE PlutusTx.IsData.Class.unsafeFromBuiltinData #-}; - PlutusTx.IsData.Class.unsafeFromBuiltinData d_8 = PlutusTx.Builtins.Internal.casePair (PlutusTx.Builtins.Internal.unsafeDataAsConstr d_8) GHC.Base.$ (\index_9 args_10 -> PlutusTx.Builtins.Internal.caseInteger index_9 [\case - {(PlutusTx.AsData.Internal.wrapUnsafeUncons -> ((PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_11), - (PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_12)))) -> Plugin.Data.Spec.MyMonoRecord arg_11 arg_12; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}] args_10)} \ No newline at end of file + PlutusTx.IsData.Class.unsafeFromBuiltinData d_8 = PlutusTx.Builtins.Internal.caseDataConstr d_8 [\[arg_9, + arg_10] -> Plugin.Data.Spec.MyMonoRecord (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_9 :: GHC.Num.Integer.Integer) (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_10 :: GHC.Num.Integer.Integer) :: Plugin.Data.Spec.MyMonoRecord]} \ No newline at end of file diff --git a/plutus-tx-plugin/test/IsData/9.6/MyPolyData.th.golden b/plutus-tx-plugin/test/IsData/9.6/MyPolyData.th.golden index fbee3a576d8..f23d5e364d7 100644 --- a/plutus-tx-plugin/test/IsData/9.6/MyPolyData.th.golden +++ b/plutus-tx-plugin/test/IsData/9.6/MyPolyData.th.golden @@ -22,10 +22,8 @@ instance (PlutusTx.IsData.Class.UnsafeFromData a_0, PlutusTx.IsData.Class.UnsafeFromData b_1) => PlutusTx.IsData.Class.UnsafeFromData (Plugin.Data.Spec.MyPolyData a_0 b_1) where {{-# INLINABLE PlutusTx.IsData.Class.unsafeFromBuiltinData #-}; - PlutusTx.IsData.Class.unsafeFromBuiltinData d_12 = PlutusTx.Builtins.Internal.casePair (PlutusTx.Builtins.Internal.unsafeDataAsConstr d_12) GHC.Base.$ (\index_13 args_14 -> PlutusTx.Builtins.Internal.caseInteger index_13 [\case - {(PlutusTx.AsData.Internal.wrapUnsafeUncons -> ((PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_15), - (PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_16)))) -> Plugin.Data.Spec.Poly1 arg_15 arg_16; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}, - \case - {(PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_17)) -> Plugin.Data.Spec.Poly2 arg_17; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}] args_14)} \ No newline at end of file + PlutusTx.IsData.Class.unsafeFromBuiltinData d_12 = PlutusTx.Builtins.Internal.caseDataConstr d_12 [\[arg_13, + arg_14] -> Plugin.Data.Spec.Poly1 (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_13 :: a_0) (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_14 :: b_1) :: Plugin.Data.Spec.MyPolyData a_0 + b_1, + \[arg_15] -> Plugin.Data.Spec.Poly2 (PlutusTx.IsData.Class.unsafeFromBuiltinData arg_15 :: a_0) :: Plugin.Data.Spec.MyPolyData a_0 + b_1]} \ No newline at end of file diff --git a/plutus-tx-plugin/test/IsData/9.6/unsafeDeconstructData.pir.golden b/plutus-tx-plugin/test/IsData/9.6/unsafeDeconstructData.pir.golden index 13719758631..b302112307d 100644 --- a/plutus-tx-plugin/test/IsData/9.6/unsafeDeconstructData.pir.golden +++ b/plutus-tx-plugin/test/IsData/9.6/unsafeDeconstructData.pir.golden @@ -1,12 +1,6 @@ let data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] - !head : all a. list a -> a = headList - !unsafeDataAsConstr : data -> pair integer (list data) = unConstrData - !tail : all a. list a -> list a = tailList - ~wrapTail : all a. list a -> list a = tail ~`$fUnsafeFromDataTuple2_$cunsafeFromBuiltinData` : all a b. (\a -> data -> a) a -> (\a -> data -> a) b -> data -> Tuple2 a b = /\a b -> @@ -16,33 +10,15 @@ let let !d : data = d in - casePair - {integer} - {list data} - {Tuple2 a b} - (unsafeDataAsConstr d) - (\(index : integer) -> - let - !index : integer = index - in - \(args : list data) -> - let - !args : list data = args - in - case - (list data -> Tuple2 a b) - index - [ (\(ds : list data) -> - let - !ds : list data = ds - in - Tuple2 - {a} - {b} - (`$dUnsafeFromData` (head {data} ds)) - (`$dUnsafeFromData` - (head {data} (wrapTail {data} ds)))) ] - args) + case + (Tuple2 a b) + d + [ (\(arg : data) (arg : data) -> + Tuple2 + {a} + {b} + (`$dUnsafeFromData` arg) + (`$dUnsafeFromData` arg)) ] ~`$fUnsafeFromDataTuple2` : all a b. (\a -> data -> a) a -> @@ -67,29 +43,11 @@ let let !d : data = d in - casePair - {integer} - {list data} - {Maybe a} - (unsafeDataAsConstr d) - (\(index : integer) -> - let - !index : integer = index - in - \(args : list data) -> - let - !args : list data = args - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - let - !ds : list data = ds - in - Just {a} (`$dUnsafeFromData` (head {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + case + (Maybe a) + d + [ (\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)) + , (Nothing {a}) ] ~`$fUnsafeFromDataMaybe` : all a. (\a -> data -> a) a -> (\a -> data -> a) (Maybe a) = `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` diff --git a/plutus-tx-plugin/test/Optimization/9.6/unsafeDeconstructData.pir.golden b/plutus-tx-plugin/test/Optimization/9.6/unsafeDeconstructData.pir.golden index 21cec137074..69b1c8f802b 100644 --- a/plutus-tx-plugin/test/Optimization/9.6/unsafeDeconstructData.pir.golden +++ b/plutus-tx-plugin/test/Optimization/9.6/unsafeDeconstructData.pir.golden @@ -4,42 +4,20 @@ let data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a - !casePair : all a b r. pair a b -> (a -> b -> r) -> r - = /\a b r -> \(p : pair a b) (f : a -> b -> r) -> case r p [f] in \(ds : data) -> (let a = Tuple2 integer integer in \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - casePair - {integer} - {list data} - {Maybe a} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args)) + case + (Maybe a) + d + [(\(arg : data) -> Just {a} (`$dUnsafeFromData` arg)), (Nothing {a})]) (\(d : data) -> - casePair - {integer} - {list data} - {Tuple2 integer integer} - (unConstrData d) - (\(index : integer) (args : list data) -> - case - (list data -> Tuple2 integer integer) - index - [ (\(ds : list data) -> - Tuple2 - {integer} - {integer} - (unIData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args)) + case + (Tuple2 integer integer) + d + [ (\(arg : data) (arg : data) -> + Tuple2 {integer} {integer} (unIData arg) (unIData arg)) ]) ds \ No newline at end of file diff --git a/plutus-tx-plugin/test/size/Golden/Rational/Serialization/unsafeFromBuiltinData.size.golden b/plutus-tx-plugin/test/size/Golden/Rational/Serialization/unsafeFromBuiltinData.size.golden index b9c6c007cc1..2702ba3d439 100644 --- a/plutus-tx-plugin/test/size/Golden/Rational/Serialization/unsafeFromBuiltinData.size.golden +++ b/plutus-tx-plugin/test/size/Golden/Rational/Serialization/unsafeFromBuiltinData.size.golden @@ -1 +1 @@ -131 \ No newline at end of file +115 \ No newline at end of file diff --git a/plutus-tx/plutus-tx.cabal b/plutus-tx/plutus-tx.cabal index 371dc8415ce..70093ff901e 100644 --- a/plutus-tx/plutus-tx.cabal +++ b/plutus-tx/plutus-tx.cabal @@ -103,6 +103,7 @@ library PlutusTx.Optimize.Inline PlutusTx.Optimize.SpaceTime PlutusTx.Ord + PlutusTx.Plugin.Lib PlutusTx.Plugin.Utils PlutusTx.Prelude PlutusTx.Ratio diff --git a/plutus-tx/src/PlutusTx/Builtins.hs b/plutus-tx/src/PlutusTx/Builtins.hs index de75e201157..68b30b4632e 100644 --- a/plutus-tx/src/PlutusTx/Builtins.hs +++ b/plutus-tx/src/PlutusTx/Builtins.hs @@ -67,6 +67,7 @@ module PlutusTx.Builtins ( unsafeDataAsB, BI.builtinDataToData, BI.dataToBuiltinData, + BI.caseDataConstr, -- * Strings BuiltinString, diff --git a/plutus-tx/src/PlutusTx/Builtins/Internal.hs b/plutus-tx/src/PlutusTx/Builtins/Internal.hs index 1ac94f30b53..fd67b10e37e 100644 --- a/plutus-tx/src/PlutusTx/Builtins/Internal.hs +++ b/plutus-tx/src/PlutusTx/Builtins/Internal.hs @@ -4,6 +4,7 @@ {-# LANGUAGE KindSignatures #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} +{-# LANGUAGE TypeOperators #-} -- This ensures that we don't put *anything* about these functions into the interface -- file, otherwise GHC can be clever about the ones that are always error, even though -- they're OPAQUE! @@ -1068,3 +1069,15 @@ caseInteger i b = b !! fromIntegral i casePair :: forall a b r. BuiltinPair a b -> (a -> b -> r) -> r casePair p f = f (PlutusTx.Builtins.Internal.fst p) (PlutusTx.Builtins.Internal.snd p) {-# INLINE casePair #-} + +caseDataConstr :: forall r. BuiltinData -> [[BuiltinData] -> r] -> r +caseDataConstr d branches = + let + constr = unsafeDataAsConstr d + idx = PlutusTx.Builtins.Internal.fst constr + (BuiltinList ds) = PlutusTx.Builtins.Internal.snd constr + -- Use of 'fromOpaque' is EVIL. It is a necessary evil since we need + -- slower SOP list for the plugin to match list directly for builtin-case + -- version of this function. + in (branches Haskell.!! fromIntegral idx) ds +{-# OPAQUE caseDataConstr #-} diff --git a/plutus-tx/src/PlutusTx/IsData/TH.hs b/plutus-tx/src/PlutusTx/IsData/TH.hs index 0b544ceea1a..8a8e0188523 100644 --- a/plutus-tx/src/PlutusTx/IsData/TH.hs +++ b/plutus-tx/src/PlutusTx/IsData/TH.hs @@ -1,8 +1,10 @@ -- editorconfig-checker-disable-file -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE ViewPatterns #-} +{-# LANGUAGE BangPatterns #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TupleSections #-} +{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE ViewPatterns #-} module PlutusTx.IsData.TH ( unsafeFromDataClause, @@ -245,8 +247,8 @@ unsafeReconstructListCase TH.ConstructorInfo{TH.constructorName = name, TH.const (TH.normalB app) [] -unsafeFromDataClause :: [(TH.ConstructorInfo, Int)] -> TH.Q TH.Clause -unsafeFromDataClause indexedCons = do +unsafeFromDataClause :: [(TH.ConstructorInfo, Int)] -> TH.Type -> TH.Q TH.Clause +unsafeFromDataClause indexedCons appliedType = do dName <- TH.newName "d" tupName <- TH.newName "tup" indexName <- TH.newName "index" @@ -266,15 +268,24 @@ unsafeFromDataClause indexedCons = do if intCasingEligible then do let - kases = - TH.listE $ - (\(conInfo, _) -> TH.lamCaseE [unsafeReconstructListCase conInfo, finalCase]) - <$> indexedConsSorted - body = - [| BI.casePair (BI.unsafeDataAsConstr $(TH.varE dName)) $ - \($(TH.varP indexName)) ($(TH.varP argsName)) -> - (caseInteger $(TH.varE indexName) $kases) $(TH.varE argsName) - |] + unsafeReconBuiltinCasingCase + (TH.ConstructorInfo{TH.constructorName = constName, TH.constructorFields = argTys}) = do + argNamesWithType <- for argTys $ \ty -> (, ty) <$> TH.newName "arg" + + let + argNames = fst <$> argNamesWithType + listBinder = TH.listP $ TH.varP <$> argNames + apps = + foldl + (\f (v, ty) -> [|$f (unsafeFromBuiltinData $(TH.varE v) :: $(pure ty))|]) + (TH.conE constName) + argNamesWithType + + TH.lamE [listBinder] [|$apps :: $(pure appliedType)|] + + kases = TH.listE $ (unsafeReconBuiltinCasingCase . fst) <$> indexedConsSorted + + body = [| Builtins.caseDataConstr $(TH.varE dName) $kases |] TH.clause [TH.varP dName] (TH.normalB body) [] else do @@ -368,7 +379,7 @@ makeIsDataIndexed dataTypeName indices = do let constraints = TH.datatypeVars dataTypeInfo <&> \tyVarBinder -> TH.classPred ''UnsafeFromData [TH.VarT (tyvarbndrName tyVarBinder)] - unsafeFromDataDecl <- TH.funD 'unsafeFromBuiltinData [unsafeFromDataClause indexedCons] + unsafeFromDataDecl <- TH.funD 'unsafeFromBuiltinData [unsafeFromDataClause indexedCons appliedType] unsafeFromDataPrag <- TH.pragInlD 'unsafeFromBuiltinData TH.Inlinable TH.FunLike TH.AllPhases pure $ nonOverlapInstance diff --git a/plutus-tx/src/PlutusTx/Plugin/Lib.hs b/plutus-tx/src/PlutusTx/Plugin/Lib.hs new file mode 100644 index 00000000000..c18d6e6ef87 --- /dev/null +++ b/plutus-tx/src/PlutusTx/Plugin/Lib.hs @@ -0,0 +1,18 @@ +module PlutusTx.Plugin.Lib where + +import PlutusTx.Builtins +import PlutusTx.Builtins.Internal qualified as BI +import PlutusTx.List + +-- This is mainly for plugin to generate code for. Always prefer using 'PlutusTx.Builtin.caseDataConstr'. +caseDataConstr' :: forall r. BuiltinData -> [[BuiltinData] -> r] -> r +caseDataConstr' d branches = + let + constr = BI.unsafeDataAsConstr d + idx = BI.fst constr + ds = BI.snd constr + -- Use of 'fromOpaque' is EVIL. It is a necessary evil since we need + -- slower SOP list for the plugin to match list directly for builtin-case + -- version of this function. + in (branches !! idx) (fromOpaque ds) +{-# INLINE caseDataConstr' #-}