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 94589f6139c..a2701637a2b 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 @@ -2041 \ No newline at end of file +2045 \ 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 a5908c860c3..bc34b18cddb 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 417755505, exBudgetMemory = ExMemory 2085068} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 406467137, exBudgetMemory = ExMemory 2070956} \ 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 477bbf65755..3d1efc3e3d8 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,18 +488,21 @@ program all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + (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) in letrec ~matchData_go : list (pair data data) -> List (Tuple2 data data) @@ -513,11 +516,10 @@ program (\(x : pair data data) (xs : list (pair data data)) -> Cons {Tuple2 data data} - (Tuple2 - {data} - {data} - (fstPair {data} {data} x) - (sndPair {data} {data} x)) + (case + (Tuple2 data data) + x + [(\(l : data) (r : data) -> Tuple2 {data} {data} l r)]) (matchData_go xs)) in let @@ -5293,9 +5295,8 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} + (case + (list data) (unConstrData (let !tup : pair integer (list data) @@ -5306,24 +5307,34 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} - (unConstrData ds))))) + (case + (list data) + (unConstrData ds) + [ (\(l : integer) + (r : list data) -> + r) ])))) in case (all dead. data) (equalsInteger 5 - (fstPair {integer} {list data} tup)) + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> error {data}) , (/\dead -> headList {data} (tailList {data} - (sndPair {integer} {list data} tup))) ] - {all dead. dead}))))) + (case + (list data) + tup + [ (\(l : integer) (r : list data) -> + r) ]))) ] + {all dead. dead})) + [(\(l : integer) (r : list data) -> r)]))) in (let r = Maybe (List (Tuple2 data data)) @@ -5336,11 +5347,17 @@ program in case (all dead. r) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l in cont @@ -5372,11 +5389,17 @@ program in case (all dead. r) - (equalsInteger 2 (fstPair {integer} {list data} tup)) + (equalsInteger + 2 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (unMapData (headList {data} l)) 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 41238cfe756..1effc5dfb73 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 61469309, exBudgetMemory = ExMemory 277174} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 60269664, exBudgetMemory = ExMemory 276518} \ 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 095c83ad32d..ffac3bdc61d 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 @@ -38,27 +38,36 @@ program (\cse -> (\cse -> (\cse -> - (\fun - ds -> - case - ((\cse -> - (\cse -> + (\cse -> + (\fun + ds -> + case + ((\cse -> case (equalsInteger 0 - cse) + (case + cse + [ (\l + r -> + l) ])) [ (case (equalsInteger 2 - cse) + (case + cse + [ (\l + r -> + l) ])) [ error , ((\l -> constr 1 [ ]) - (force - (force - sndPair) - cse)) ]) + (case + cse + [ (\l + r -> + r) ])) ]) , (constr 0 [ (force matchData_go @@ -67,758 +76,763 @@ program headList (force tailList - (force - (force - sndPair) - cse))))) ]) ]) - (force - (force - fstPair) - cse)) - (unConstrData - (force - headList + (case + cse + [ (\l + r -> + r) ]))))) ]) ]) + (unConstrData (force - tailList + headList (force tailList (force - (force - sndPair) - (unConstrData - ((\tup -> - case - (equalsInteger - 5 - (force - (force - fstPair) - tup)) - [ error - , (force - headList - (force - tailList + tailList + (case + (unConstrData + ((\tup -> + case + (equalsInteger + 5 + (case + tup + [ (\l + r -> + l) ])) + [ error + , (force + headList (force - (force - sndPair) - tup))) ]) - (unConstrData - (force - headList + tailList + (case + tup + [ (\l + r -> + r) ]))) ]) + (unConstrData (force - tailList + headList (force tailList (force - (force - sndPair) - (unConstrData - ds)))))))))))))) - [ (\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 - [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]))) + 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 + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ])) (constr 3 [ (constr 1 [ cse - , cse ]) ])) + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , cse ]) ]) + , (constr 0 + [ ]) ]) ]) ])) (constr 3 [ (constr 1 [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ cse - , cse ]) ]) - , (constr 0 - [ ]) ]) ]) ])) - (constr 3 - [ (constr 1 - [ cse - , (constr 1 + , cse ]) ])) + (constr 1 + [ (constr 3 + [ (constr 1 [ (constr 0 - [ (constr 0 + [ (constr 1 [ ]) , (constr 1 [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ])) + , (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 - 100) - , (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 - [ ]) ]) ]) ])) + [ (cse + 10) + , 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 + [ (constr 0 [ ]) - , cse ]) + , (constr 1 + [ 500000000 + , (constr 0 + [ ]) ]) ]) , (constr 0 [ ]) ])) (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 500000000 - , (constr 0 - [ ]) ]) ]) + [ cse , (constr 0 [ ]) ])) (constr 1 @@ -829,33 +843,31 @@ program [ cse , (constr 0 [ ]) ])) - (constr 1 - [ cse - , (constr 0 - [ ]) ])) + (cse + 10)) (cse - 10)) - (cse 10)) - (cse 1)) - (constr 0 - [ (constr 1 - []) - , cse ])) - (cse 2)) - (cse 4)) + 5)) + (cse 2)) + (cse 100)) + (cse 1)) + (constr 0 + [ (constr 1 []) + , cse ])) + (constr 0 + [ (constr 1 []) + , (constr 1 + [ 1 + , (constr 0 + [ ]) ]) ])) (cse 1)) - (unsafeRatio 4 5)) - (constr 0 - [ (constr 1 []) - , (constr 1 - [ 1 - , (constr 0 []) ]) ])) - (unsafeRatio 0)) - (unsafeRatio 9)) - (unsafeRatio 51)) - (constr 1 [0, (constr 0 [])])) - (unsafeRatio 3)) - (unsafeRatio 1)) + (cse 4)) + (unsafeRatio 9)) + (unsafeRatio 4)) + (unsafeRatio 0)) + (unsafeRatio 1)) + (unsafeRatio 3)) + (constr 1 [0, (constr 0 [])])) + (unsafeRatio 51)) ((\s -> s s) (\s arg -> delay @@ -864,11 +876,10 @@ program xs [ (\x xs -> constr 1 - [ (constr 0 - [ (force (force fstPair) - x) - , (force (force sndPair) - x) ]) + [ (case + x + [ (\l r -> + constr 0 [l, r]) ]) , (force (s s (delay (\x -> x))) xs) ]) 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 3f3e22d7e91..94589f6139c 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 @@ -2035 \ No newline at end of file +2041 \ 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 909eee47acf..1db796d20b0 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 580168360, exBudgetMemory = ExMemory 2958303} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 568927992, exBudgetMemory = ExMemory 2944491} \ 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 616309bec49..793e631c952 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,18 +417,21 @@ program all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + (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) in letrec ~matchData_go : list (pair data data) -> List (Tuple2 data data) @@ -442,11 +445,10 @@ program (\(x : pair data data) (xs : list (pair data data)) -> Cons {Tuple2 data data} - (Tuple2 - {data} - {data} - (fstPair {data} {data} x) - (sndPair {data} {data} x)) + (case + (Tuple2 data data) + x + [(\(l : data) (r : data) -> Tuple2 {data} {data} l r)]) (matchData_go xs)) in let @@ -5220,9 +5222,8 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} + (case + (list data) (unConstrData (let !tup : pair integer (list data) @@ -5233,24 +5234,34 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} - (unConstrData ds))))) + (case + (list data) + (unConstrData ds) + [ (\(l : integer) + (r : list data) -> + r) ])))) in case (all dead. data) (equalsInteger 5 - (fstPair {integer} {list data} tup)) + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> error {data}) , (/\dead -> headList {data} (tailList {data} - (sndPair {integer} {list data} tup))) ] - {all dead. dead}))))) + (case + (list data) + tup + [ (\(l : integer) (r : list data) -> + r) ]))) ] + {all dead. dead})) + [(\(l : integer) (r : list data) -> r)]))) in (let r = Maybe (List (Tuple2 data data)) @@ -5263,11 +5274,17 @@ program in case (all dead. r) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l in cont @@ -5299,11 +5316,17 @@ program in case (all dead. r) - (equalsInteger 2 (fstPair {integer} {list data} tup)) + (equalsInteger + 2 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (unMapData (headList {data} l)) 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 6d79356d55b..f11870c8f0a 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 59835566, exBudgetMemory = ExMemory 268075} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 58683921, exBudgetMemory = ExMemory 267719} \ 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 59b6cf70af3..053622a9b4f 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 @@ -36,872 +36,888 @@ program (\cse -> (\cse -> (\cse -> - (\cfg -> - (\fun - ds -> - case - ((\cse -> - (\cse -> - case - (equalsInteger - 0 - cse) - [ (case - (equalsInteger - 2 - cse) - [ error - , ((\l -> - constr 1 - [ ]) - (force - (force - sndPair) - cse)) ]) - , (constr 0 - [ (force - matchData_go - (unMapData - (force - headList + (\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 (force - tailList + headList (force - (force - sndPair) - cse))))) ]) ]) - (force - (force - fstPair) - cse)) - (unConstrData - (force - headList - (force - tailList + tailList + (case + cse + [ (\l + r -> + r) ]))))) ]) ]) + (unConstrData (force - tailList + headList (force + tailList (force - sndPair) - (unConstrData - ((\tup -> - case - (equalsInteger - 5 - (force - (force - fstPair) - tup)) - [ error - , (force - headList - (force - tailList - (force - (force - sndPair) - tup))) ]) + tailList + (case (unConstrData - (force - headList - (force - tailList + ((\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 (force - sndPair) - (unConstrData - ds)))))))))))))) - [ (\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 - [ ]) ]) ]) ]) ]) + 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 + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ])) + (constr 3 + [ (constr 1 + [ cse , (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 - [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ])) + [ cse + , cse ]) ]) + , (constr 0 + [ ]) ]) ]) ])) (constr 3 [ (constr 1 [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ])) - (constr 3 - [ (constr 1 - [ cse - , (constr 1 + , cse ]) ])) + (constr 1 + [ (constr 3 + [ (constr 1 [ (constr 0 - [ (constr 0 + [ (constr 1 [ ]) , (constr 1 [ cse - , cse ]) ]) - , (constr 0 - [ ]) ]) ]) ])) - (constr 3 - [ (constr 1 - [ cse - , cse ]) ])) - (constr 1 - [ (constr 3 - [ (constr 1 - [ (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) - , cse ]) ]) - , (constr 0 - [ ]) ])) - (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ (cse - 10) - , cse ]) ])) + , (constr 0 + [ ]) ]) ]) + , cse ]) ]) + , (constr 0 + [ ]) ])) + (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ])) + (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ cse + , (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 - [ cse + [ 0 , (constr 1 - [ cse + [ 1000000 , (constr 0 [ ]) ]) ]) ])) (constr 1 [ (constr 0 - [ (constr 0 + [ (constr 2 [ ]) , cse ]) , (constr 0 [ ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ 0 + (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) , (constr 1 - [ 1000000 + [ 500000000 , (constr 0 - [ ]) ]) ]) ])) + [ ]) ]) ]) + , (constr 0 + [ ]) ])) (constr 1 - [ (constr 0 - [ (constr 2 - [ ]) - , cse ]) + [ cse , (constr 0 [ ]) ])) (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 500000000 - , (constr 0 - [ ]) ]) ]) + [ cse , (constr 0 [ ]) ])) (constr 1 [ cse , (constr 0 [ ]) ])) - (constr 1 - [ (cse - 4) - , (constr 0 - [ ]) ])) - (constr 1 - [ cse - , (constr 0 - [ ]) ])) - (cse 100)) - (cse 1)) - (cse 2)) - (cse 1)) - (cse 5)) - (cse 10)) - (constr 0 - [(constr 1 []), cse])) - (constr 0 - [ (constr 1 []) - , (constr 1 - [1, (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 0)) + (unsafeRatio 4)) (unsafeRatio 9)) - (unsafeRatio 3)) + (unsafeRatio 0)) (constr 1 [0, (constr 0 [])])) - (unsafeRatio 4)) + (unsafeRatio 3)) ((\s -> s s) (\s arg -> delay @@ -910,9 +926,9 @@ program xs [ (\x xs -> constr 1 - [ (constr 0 - [ (force (force fstPair) x) - , (force (force sndPair) x) ]) + [ (case + x + [(\l r -> constr 0 [l, r])]) , (force (s s (delay (\x -> x))) xs) ]) , (constr 0 []) ])) diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.cbor.size.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.cbor.size.golden index 94589f6139c..ab07ac44fb7 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.cbor.size.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.cbor.size.golden @@ -1 +1 @@ -2041 \ No newline at end of file +2043 \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.large.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.large.budget.golden index 6a3ea8ed7a8..de2f1801322 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.large.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.large.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 417851505, exBudgetMemory = ExMemory 2085668} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 406611137, exBudgetMemory = ExMemory 2071856} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.pir.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.pir.golden index 6bb2f7747d6..60dd65f0482 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.pir.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.pir.golden @@ -497,11 +497,12 @@ program (\(x : pair data data) (xs : list (pair data data)) -> Cons {Tuple2 data data} - (Tuple2 - {data} - {data} - (fstPair {data} {data} x) - (sndPair {data} {data} x)) + ((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)) (matchData_go xs)) in let @@ -5278,9 +5279,8 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} + (case + (list data) (unConstrData (let !si : pair integer (list data) @@ -5291,25 +5291,35 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} - (unConstrData ds))))) + (case + (list data) + (unConstrData ds) + [ (\(l : integer) + (r : list data) -> + r) ])))) in case (all dead. data) (equalsInteger 5 - (fstPair {integer} {list data} si)) + (case + integer + si + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> error {data}) , (/\dead -> headList {data} (tailList {data} - (sndPair {integer} {list data} si))) ] - {all dead. dead})))))) - !x : integer = fstPair {integer} {list data} ds + (case + (list data) + si + [ (\(l : integer) (r : list data) -> + r) ]))) ] + {all dead. dead})) + [(\(l : integer) (r : list data) -> r)])))) + !x : integer = case integer ds [(\(l : integer) (r : list data) -> l)] in case (all dead. Maybe (List (Tuple2 data data))) @@ -5328,7 +5338,12 @@ program !d : data = headList {data} - (tailList {data} (sndPair {integer} {list data} ds)) + (tailList + {data} + (case + (list data) + ds + [(\(l : integer) (r : list data) -> r)])) in matchData_go (unMapData d))) ] {all dead. dead}) diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.small.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.small.budget.golden index 403846c0e30..d3a4f666b63 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.small.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.small.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 61565309, exBudgetMemory = ExMemory 277774} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 60413664, exBudgetMemory = ExMemory 277418} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.uplc.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.uplc.golden index 969a355fe0a..a725fe511f2 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.uplc.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/sorted.uplc.golden @@ -39,778 +39,794 @@ program (\cse -> (\cse -> (\cse -> - (\fun - ds -> - case - ((\ds -> - (\x -> - case - (equalsInteger - 0 - x) - [ (case - (equalsInteger - 2 - x) - [ error - , (constr 1 - [ ]) ]) - , (constr 0 - [ ((\d -> - force - matchData_go - (unMapData - d)) - (force - headList + (\cse -> + (\fun + ds -> + case + ((\ds -> + (\x -> + case + (equalsInteger + 0 + x) + [ (case + (equalsInteger + 2 + x) + [ error + , (constr 1 + [ ]) ]) + , (constr 0 + [ ((\d -> + force + matchData_go + (unMapData + d)) (force - tailList + headList (force - (force - sndPair) - ds)))) ]) ]) - (force - (force - fstPair) - ds)) - (unConstrData - (force - headList + tailList + (case + ds + [ (\l + r -> + r) ])))) ]) ]) + (case + ds + [ (\l + r -> + l) ])) + (unConstrData (force - tailList + headList (force tailList (force - (force - sndPair) - (unConstrData - ((\si -> - case - (equalsInteger - 5 - (force - (force - fstPair) - si)) - [ error - , (force - headList - (force - tailList + tailList + (case + (unConstrData + ((\si -> + case + (equalsInteger + 5 + (case + si + [ (\l + r -> + l) ])) + [ error + , (force + headList (force - (force - sndPair) - si))) ]) - (unConstrData - (force - headList + tailList + (case + si + [ (\l + r -> + r) ]))) ]) + (unConstrData (force - tailList + headList (force tailList (force - (force - sndPair) - (unConstrData - ds)))))))))))))) - [ (\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 - [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]))) + 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 + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ])) (constr 3 [ (constr 1 [ cse - , (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ])) + , cse ]) ])) (constr 3 [ (constr 1 [ cse - , cse ]) ])) - (constr 3 - [ (constr 1 - [ cse - , (constr 1 + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , cse ]) ]) + , (constr 0 + [ ]) ]) ]) ])) + (constr 1 + [ (constr 3 + [ (constr 1 [ (constr 0 - [ (constr 0 + [ (constr 1 [ ]) , (constr 1 [ cse - , cse ]) ]) - , (constr 0 - [ ]) ]) ]) ])) + , (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 1 - [ cse - , (constr 1 - [ (cse - 10) - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ])) + (constr 0 + [ (constr 1 + [ ]) + , (constr 1 + [ cse + , cse ]) ])) (constr 0 [ (constr 1 [ ]) , (constr 1 [ cse - , cse ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ])) - (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 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 1 - [ cse + [ (constr 0 + [ (constr 2 + [ ]) + , cse ]) , (constr 0 [ ]) ])) (constr 1 [ (constr 0 - [ (constr 2 + [ (constr 0 [ ]) - , cse ]) + , (constr 1 + [ 500000000 + , (constr 0 + [ ]) ]) ]) , (constr 0 [ ]) ])) (constr 1 @@ -818,45 +834,37 @@ program , (constr 0 [ ]) ])) (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 500000000 - , (constr 0 - [ ]) ]) ]) + [ cse , (constr 0 [ ]) ])) - (constr 1 - [ cse - , (constr 0 - [ ]) ])) + (cse + 1)) (cse - 2)) - (constr 0 - [ (constr 1 - [ ]) - , cse ])) - (cse - 100)) + 4)) + (cse + 2)) + (constr 0 + [ (constr 1 + [ ]) + , cse ])) (cse 1)) - (cse 1)) - (constr 0 - [ (constr 1 []) - , (constr 1 - [ 1 - , (constr 0 - [ ]) ]) ])) - (cse 4)) - (cse 5)) - (cse 10)) - (unsafeRatio 51)) + (cse 100)) + (cse 10)) + (constr 0 + [ (constr 1 []) + , (constr 1 + [ 1 + , (constr 0 + [ ]) ]) ])) + (cse 10)) + (cse 5)) + (unsafeRatio 0)) (unsafeRatio 9)) - (unsafeRatio 0)) - (unsafeRatio 3)) - (unsafeRatio 4)) - (unsafeRatio 1)) - (constr 1 [0, (constr 0 [])])) + (unsafeRatio 51)) + (unsafeRatio 1)) + (constr 1 [0, (constr 0 [])])) + (unsafeRatio 3)) + (unsafeRatio 4)) ((\s -> s s) (\s arg -> delay @@ -865,11 +873,10 @@ program xs [ (\x xs -> constr 1 - [ (constr 0 - [ (force (force fstPair) - x) - , (force (force sndPair) - x) ]) + [ (case + x + [ (\l r -> + constr 0 [l, r]) ]) , (force (s s (delay (\x -> x))) xs) ]) diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.cbor.size.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.cbor.size.golden index 3f3e22d7e91..51ac2b4c292 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.cbor.size.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.cbor.size.golden @@ -1 +1 @@ -2035 \ No newline at end of file +2037 \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.large.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.large.budget.golden index 5f22ae7de99..9e197d962a1 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.large.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.large.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 580264360, exBudgetMemory = ExMemory 2958903} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 569023992, exBudgetMemory = ExMemory 2945091} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.pir.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.pir.golden index ed84e2b8e85..12e694dc23d 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.pir.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.pir.golden @@ -426,11 +426,12 @@ program (\(x : pair data data) (xs : list (pair data data)) -> Cons {Tuple2 data data} - (Tuple2 - {data} - {data} - (fstPair {data} {data} x) - (sndPair {data} {data} x)) + ((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)) (matchData_go xs)) in let @@ -5205,9 +5206,8 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} + (case + (list data) (unConstrData (let !si : pair integer (list data) @@ -5218,25 +5218,35 @@ program {data} (tailList {data} - (sndPair - {integer} - {list data} - (unConstrData ds))))) + (case + (list data) + (unConstrData ds) + [ (\(l : integer) + (r : list data) -> + r) ])))) in case (all dead. data) (equalsInteger 5 - (fstPair {integer} {list data} si)) + (case + integer + si + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> error {data}) , (/\dead -> headList {data} (tailList {data} - (sndPair {integer} {list data} si))) ] - {all dead. dead})))))) - !x : integer = fstPair {integer} {list data} ds + (case + (list data) + si + [ (\(l : integer) (r : list data) -> + r) ]))) ] + {all dead. dead})) + [(\(l : integer) (r : list data) -> r)])))) + !x : integer = case integer ds [(\(l : integer) (r : list data) -> l)] in case (all dead. Maybe (List (Tuple2 data data))) @@ -5255,7 +5265,12 @@ program !d : data = headList {data} - (tailList {data} (sndPair {integer} {list data} ds)) + (tailList + {data} + (case + (list data) + ds + [(\(l : integer) (r : list data) -> r)])) in matchData_go (unMapData d))) ] {all dead. dead}) diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.small.budget.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.small.budget.golden index 394e35fafbf..1791bf7ca34 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.small.budget.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.small.budget.golden @@ -1 +1 @@ -ExBudget {exBudgetCPU = ExCPU 59931566, exBudgetMemory = ExMemory 268675} \ No newline at end of file +ExBudget {exBudgetCPU = ExCPU 58779921, exBudgetMemory = ExMemory 268319} \ No newline at end of file diff --git a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.uplc.golden b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.uplc.golden index 557dfd68d63..3a1786073f0 100644 --- a/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.uplc.golden +++ b/cardano-constitution/test/Cardano/Constitution/Validator/GoldenTests/unsorted.uplc.golden @@ -37,834 +37,845 @@ program (\cse -> (\cse -> (\cse -> - (\cfg -> - (\fun - ds -> - case - ((\ds -> - (\x -> - case - (equalsInteger - 0 - x) - [ (case - (equalsInteger - 2 - x) - [ error - , (constr 1 - [ ]) ]) - , (constr 0 - [ ((\d -> - force - matchData_go - (unMapData - d)) - (force - headList + (\cse -> + (\cfg -> + (\fun + ds -> + case + ((\ds -> + (\x -> + case + (equalsInteger + 0 + x) + [ (case + (equalsInteger + 2 + x) + [ error + , (constr 1 + [ ]) ]) + , (constr 0 + [ ((\d -> + force + matchData_go + (unMapData + d)) (force - tailList + headList (force - (force - sndPair) - ds)))) ]) ]) - (force - (force - fstPair) - ds)) - (unConstrData - (force - headList + tailList + (case + ds + [ (\l + r -> + r) ])))) ]) ]) + (case + ds + [ (\l + r -> + l) ])) + (unConstrData (force - tailList + headList (force tailList (force - (force - sndPair) - (unConstrData - ((\si -> - case - (equalsInteger - 5 - (force - (force - fstPair) - si)) - [ error - , (force - headList - (force - tailList + tailList + (case + (unConstrData + ((\si -> + case + (equalsInteger + 5 + (case + si + [ (\l + r -> + l) ])) + [ error + , (force + headList (force - (force - sndPair) - si))) ]) - (unConstrData - (force - headList + tailList + (case + si + [ (\l + r -> + r) ]))) ]) + (unConstrData (force - tailList + headList (force tailList (force - (force - sndPair) - (unConstrData - ds)))))))))))))) - [ (\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 - [ ]) ]) ]) ]) ]) + 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 , (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 - [ ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ])) + [ cse + , cse ]) ]) + , (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 3 - [ (constr 1 - [ cse - , (constr 1 + , (constr 1 + [ (constr 0 + [ (constr 0 + [ ]) + , (constr 1 + [ cse + , (constr 1 + [ cse + , (constr 0 + [ ]) ]) ]) ]) + , (constr 0 + [ ]) ]) ]) ])) + (constr 1 + [ (constr 3 + [ (constr 1 [ (constr 0 - [ (constr 0 + [ (constr 1 [ ]) , (constr 1 [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ]) - , (constr 0 - [ ]) ]) ]) ])) + , (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 , cse ]) ])) - (constr 0 - [ (constr 1 - [ ]) - , (constr 1 - [ cse - , (constr 1 - [ cse - , (constr 0 - [ ]) ]) ]) ])) - (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 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 + [ (constr 0 [ ]) - , cse ]) + , (constr 1 + [ 500000000 + , (constr 0 + [ ]) ]) ]) , (constr 0 [ ]) ])) (constr 1 - [ (constr 0 - [ (constr 0 - [ ]) - , (constr 1 - [ 500000000 - , (constr 0 - [ ]) ]) ]) + [ cse , (constr 0 [ ]) ])) (constr 1 @@ -875,34 +886,32 @@ program [ cse , (constr 0 [ ]) ])) - (constr 1 - [ (cse - 4) - , (constr 0 - [ ]) ])) - (cse 1)) - (cse 1)) - (cse 10)) + (cse + 1)) + (cse + 100)) + (cse 4)) + (cse 5)) (constr 0 [ (constr 1 []) , cse ])) - (cse 100)) - (cse 10)) - (constr 0 - [ (constr 1 []) - , (constr 1 - [ 1 - , (constr 0 - []) ]) ])) - (cse 5)) - (cse 2)) - (unsafeRatio 51)) - (unsafeRatio 1)) - (unsafeRatio 4)) - (unsafeRatio 9)) - (unsafeRatio 3)) - (constr 1 [0, (constr 0 [])])) - (unsafeRatio 0)) + (cse 10)) + (constr 0 + [ (constr 1 []) + , (constr 1 + [ 1 + , (constr 0 + []) ]) ])) + (cse 2)) + (cse 1)) + (cse 10)) + (unsafeRatio 0)) + (unsafeRatio 9)) + (unsafeRatio 3)) + (unsafeRatio 51)) + (constr 1 [0, (constr 0 [])])) + (unsafeRatio 1)) + (unsafeRatio 4)) ((\s -> s s) (\s arg -> delay @@ -911,9 +920,9 @@ program xs [ (\x xs -> constr 1 - [ (constr 0 - [ (force (force fstPair) x) - , (force (force sndPair) x) ]) + [ (case + x + [(\l r -> constr 0 [l, r])]) , (force (s s (delay (\x -> x))) xs) ]) , (constr 0 []) ])) diff --git a/plutus-benchmark/cardano-loans/test/9.6/main.eval.golden b/plutus-benchmark/cardano-loans/test/9.6/main.eval.golden index b31bb356f19..b1e8c11a47a 100644 --- a/plutus-benchmark/cardano-loans/test/9.6/main.eval.golden +++ b/plutus-benchmark/cardano-loans/test/9.6/main.eval.golden @@ -1,6 +1,6 @@ -CPU: 121_424_595 -Memory: 621_882 -Term Size: 8_054 -Flat Size: 9_189 +CPU: 110_908_889 +Memory: 621_150 +Term Size: 7_446 +Flat Size: 8_702 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/cardano-loans/test/9.6/main.pir.golden b/plutus-benchmark/cardano-loans/test/9.6/main.pir.golden index 5663102a772..8d4e6d981a1 100644 --- a/plutus-benchmark/cardano-loans/test/9.6/main.pir.golden +++ b/plutus-benchmark/cardano-loans/test/9.6/main.pir.golden @@ -1147,6 +1147,8 @@ in let ~defaultBody : TxOut = traceError {TxOut} "script input error ownInput" + !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] !`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` : data -> Maybe bytestring = \(d : data) -> @@ -1154,12 +1156,12 @@ {Unit -> Maybe bytestring} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !ds : integer = fstPair {integer} {list data} tup - !ds : list data = sndPair {integer} {list data} tup - in - Nothing {bytestring}) + casePair + {integer} + {list data} + {Maybe bytestring} + (unConstrData d) + (\(l : integer) (r : list data) -> Nothing {bytestring})) (\(ds : Unit) -> let !ds : list (pair data data) = unMapData d @@ -1191,77 +1193,80 @@ {Unit -> Maybe (Tuple2 a b)} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (all dead. Maybe (Tuple2 a b)) - (equalsInteger 0 index) - [ (/\dead -> Nothing {Tuple2 a b}) - , (/\dead -> - Maybe_match - {Tuple2 data (list data)} - (case - (Maybe (Tuple2 data (list data))) - args - [ (\(h : data) (t : list data) -> - Just - {Tuple2 data (list data)} - (Tuple2 {data} {list data} h t)) - , (Nothing {Tuple2 data (list data)}) ]) - {all dead. Maybe (Tuple2 a b)} - (\(ds : Tuple2 data (list data)) -> - /\dead -> - Tuple2_match - {data} - {list data} - ds - {Maybe (Tuple2 a b)} - (\(ds : data) (ds : list data) -> - Maybe_match - {a} - (`$dFromData` ds) - {all dead. Maybe (Tuple2 a b)} - (\(arg : a) -> - /\dead -> - Maybe_match - {data} - (case - (Maybe data) - ds - [ (\(h : data) - (ds : list data) -> - Just {data} h) - , (Nothing {data}) ]) - {all dead. Maybe (Tuple2 a b)} - (\(ds : data) -> - /\dead -> - Maybe_match - {b} - (`$dFromData` ds) - {all dead. - Maybe (Tuple2 a b)} - (\(arg : b) -> - /\dead -> - Just - {Tuple2 a b} - (Tuple2 - {a} - {b} - arg - arg)) - (/\dead -> - Nothing {Tuple2 a b}) - {all dead. dead}) - (/\dead -> Nothing {Tuple2 a b}) - {all dead. dead}) - (/\dead -> Nothing {Tuple2 a b}) - {all dead. dead})) - (/\dead -> Nothing {Tuple2 a b}) - {all dead. dead}) ] - {all dead. dead}) + casePair + {integer} + {list data} + {Maybe (Tuple2 a b)} + (unConstrData d) + (\(l : integer) (r : list data) -> + case + (all dead. Maybe (Tuple2 a b)) + (equalsInteger 0 l) + [ (/\dead -> Nothing {Tuple2 a b}) + , (/\dead -> + Maybe_match + {Tuple2 data (list data)} + (case + (Maybe (Tuple2 data (list data))) + r + [ (\(h : data) (t : list data) -> + Just + {Tuple2 data (list data)} + (Tuple2 {data} {list data} h t)) + , (Nothing {Tuple2 data (list data)}) ]) + {all dead. Maybe (Tuple2 a b)} + (\(ds : Tuple2 data (list data)) -> + /\dead -> + Tuple2_match + {data} + {list data} + ds + {Maybe (Tuple2 a b)} + (\(ds : data) (ds : list data) -> + Maybe_match + {a} + (`$dFromData` ds) + {all dead. Maybe (Tuple2 a b)} + (\(arg : a) -> + /\dead -> + Maybe_match + {data} + (case + (Maybe data) + ds + [ (\(h : data) + (ds : list data) -> + Just {data} h) + , (Nothing {data}) ]) + {all dead. Maybe (Tuple2 a b)} + (\(ds : data) -> + /\dead -> + Maybe_match + {b} + (`$dFromData` ds) + {all dead. + Maybe (Tuple2 a b)} + (\(arg : b) -> + /\dead -> + Just + {Tuple2 a b} + (Tuple2 + {a} + {b} + arg + arg)) + (/\dead -> + Nothing + {Tuple2 a b}) + {all dead. dead}) + (/\dead -> + Nothing {Tuple2 a b}) + {all dead. dead}) + (/\dead -> Nothing {Tuple2 a b}) + {all dead. dead})) + (/\dead -> Nothing {Tuple2 a b}) + {all dead. dead}) ] + {all dead. dead})) (\(ds : Unit) -> Nothing {Tuple2 a b}) (\(ds : Unit) -> Nothing {Tuple2 a b}) (\(ds : Unit) -> Nothing {Tuple2 a b}) @@ -1279,12 +1284,12 @@ {Unit -> Maybe integer} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !ds : integer = fstPair {integer} {list data} tup - !ds : list data = sndPair {integer} {list data} tup - in - Nothing {integer}) + casePair + {integer} + {list data} + {Maybe integer} + (unConstrData d) + (\(l : integer) (r : list data) -> Nothing {integer})) (\(ds : Unit) -> let !ds : list (pair data data) = unMapData d @@ -1393,28 +1398,60 @@ {Unit -> Maybe bool} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (all dead. Maybe bool) - (equalsInteger 0 index) - [ (/\dead -> - case - (all dead. Maybe bool) - (equalsInteger 1 index) - [ (/\dead -> Nothing {bool}) - , (/\dead -> Just {bool} True) ] - {all dead. dead}) - , (/\dead -> Just {bool} False) ] - {all dead. dead}) + casePair + {integer} + {list data} + {Maybe bool} + (unConstrData d) + (\(l : integer) (r : list data) -> + case + (all dead. Maybe bool) + (equalsInteger 0 l) + [ (/\dead -> + case + (all dead. Maybe bool) + (equalsInteger 1 l) + [ (/\dead -> Nothing {bool}) + , (/\dead -> Just {bool} True) ] + {all dead. dead}) + , (/\dead -> Just {bool} False) ] + {all dead. dead})) (\(ds : Unit) -> Nothing {bool}) (\(ds : Unit) -> Nothing {bool}) (\(ds : Unit) -> Nothing {bool}) (\(ds : Unit) -> Nothing {bool}) Unit + !matchData' : + all r. + data -> + (integer -> list data -> r) -> + (list (pair data data) -> r) -> + (list data -> r) -> + (integer -> r) -> + (bytestring -> r) -> + r + = /\r -> + \(d : data) + (constrCase : integer -> list data -> r) + (mapCase : list (pair data data) -> r) + (listCase : list data -> r) + (iCase : integer -> r) + (bCase : bytestring -> r) -> + chooseData + {Unit -> r} + d + (\(ds : Unit) -> + casePair + {integer} + {list data} + {r} + (unConstrData d) + (\(l : integer) (r : list data) -> constrCase l r)) + (\(ds : Unit) -> mapCase (unMapData d)) + (\(ds : Unit) -> listCase (unListData d)) + (\(ds : Unit) -> iCase (unIData d)) + (\(ds : Unit) -> bCase (unBData d)) + Unit data (Extended :: * -> *) a | Extended_match where Finite : a -> Extended a NegInf : Extended a @@ -1423,15 +1460,10 @@ all a. (\a -> data -> Maybe a) a -> data -> Maybe (Extended a) = /\a -> \(`$dFromData` : (\a -> data -> Maybe a) a) (d : data) -> - chooseData - {Unit -> Maybe (Extended a)} + matchData' + {Maybe (Extended a)} d - (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in + (\(index : integer) (args : list data) -> case (all dead. Maybe (Extended a)) (equalsInteger 0 index) @@ -1488,25 +1520,20 @@ {all dead. dead}) , (/\dead -> Just {Extended a} (NegInf {a})) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {Extended a}) - (\(ds : Unit) -> Nothing {Extended a}) - (\(ds : Unit) -> Nothing {Extended a}) - (\(ds : Unit) -> Nothing {Extended a}) - Unit + (\(ds : list (pair data data)) -> Nothing {Extended a}) + (\(ds : list data) -> Nothing {Extended a}) + (\(ds : integer) -> Nothing {Extended a}) + (\(ds : bytestring) -> Nothing {Extended a}) data GovernanceActionId | GovernanceActionId_match where GovernanceActionId : bytestring -> integer -> GovernanceActionId !`$fFromDataGovernanceAction_$cfromBuiltinData` : data -> Maybe GovernanceActionId = \(d : data) -> - chooseData - {Unit -> Maybe GovernanceActionId} + matchData' + {Maybe GovernanceActionId} d - (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe GovernanceActionId) (equalsInteger 0 index) @@ -1575,22 +1602,19 @@ (/\dead -> Nothing {GovernanceActionId}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {GovernanceActionId}) - (\(ds : Unit) -> Nothing {GovernanceActionId}) - (\(ds : Unit) -> Nothing {GovernanceActionId}) - (\(ds : Unit) -> Nothing {GovernanceActionId}) - Unit + (\(ds : list (pair data data)) -> Nothing {GovernanceActionId}) + (\(ds : list data) -> Nothing {GovernanceActionId}) + (\(ds : integer) -> Nothing {GovernanceActionId}) + (\(ds : bytestring) -> Nothing {GovernanceActionId}) !`$fFromDataCredential_$cfromBuiltinData` : data -> Maybe Credential = \(d : data) -> - chooseData - {Unit -> Maybe Credential} + matchData' + {Maybe Credential} d - (\(ds : Unit) -> + (\(index : integer) + (args : list data) -> let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup !fail : unit -> Maybe Credential = \(ds : unit) -> @@ -1654,11 +1678,10 @@ (/\dead -> fail ()) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {Credential}) - (\(ds : Unit) -> Nothing {Credential}) - (\(ds : Unit) -> Nothing {Credential}) - (\(ds : Unit) -> Nothing {Credential}) - Unit + (\(ds : list (pair data data)) -> Nothing {Credential}) + (\(ds : list data) -> Nothing {Credential}) + (\(ds : integer) -> Nothing {Credential}) + (\(ds : bytestring) -> Nothing {Credential}) !`$fFromDataMaybe_$cfromBuiltinData` : all a. (\a -> data -> Maybe a) a -> data -> Maybe (Maybe a) = /\a -> @@ -1667,45 +1690,46 @@ {Unit -> Maybe (Maybe a)} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (all dead. Maybe (Maybe a)) - (equalsInteger 1 index) - [ (/\dead -> - case - (all dead. Maybe (Maybe a)) - (equalsInteger 0 index) - [ (/\dead -> Nothing {Maybe a}) - , (/\dead -> - Maybe_match - {data} - (case - (Maybe data) - args - [ (\(h : data) (ds : list data) -> - Just {data} h) - , (Nothing {data}) ]) - {all dead. Maybe (Maybe a)} - (\(ds : data) -> - /\dead -> - Maybe_match - {a} - (`$dFromData` ds) - {all dead. Maybe (Maybe a)} - (\(arg : a) -> - /\dead -> - Just {Maybe a} (Just {a} arg)) - (/\dead -> Nothing {Maybe a}) - {all dead. dead}) - (/\dead -> Nothing {Maybe a}) - {all dead. dead}) ] - {all dead. dead}) - , (/\dead -> Just {Maybe a} (Nothing {a})) ] - {all dead. dead}) + casePair + {integer} + {list data} + {Maybe (Maybe a)} + (unConstrData d) + (\(l : integer) (r : list data) -> + case + (all dead. Maybe (Maybe a)) + (equalsInteger 1 l) + [ (/\dead -> + case + (all dead. Maybe (Maybe a)) + (equalsInteger 0 l) + [ (/\dead -> Nothing {Maybe a}) + , (/\dead -> + Maybe_match + {data} + (case + (Maybe data) + r + [ (\(h : data) (ds : list data) -> + Just {data} h) + , (Nothing {data}) ]) + {all dead. Maybe (Maybe a)} + (\(ds : data) -> + /\dead -> + Maybe_match + {a} + (`$dFromData` ds) + {all dead. Maybe (Maybe a)} + (\(arg : a) -> + /\dead -> + Just {Maybe a} (Just {a} arg)) + (/\dead -> Nothing {Maybe a}) + {all dead. dead}) + (/\dead -> Nothing {Maybe a}) + {all dead. dead}) ] + {all dead. dead}) + , (/\dead -> Just {Maybe a} (Nothing {a})) ] + {all dead. dead})) (\(ds : Unit) -> Nothing {Maybe a}) (\(ds : Unit) -> Nothing {Maybe a}) (\(ds : Unit) -> Nothing {Maybe a}) @@ -1729,7 +1753,8 @@ [ (\(tup : pair data data) (tups : list (pair data data)) -> let - !a : data = fstPair {data} {data} tup + !a : data + = case data tup [(\(l : data) (r : data) -> l)] in Maybe_match {k} @@ -1738,7 +1763,11 @@ (\(a : k) -> /\dead -> let - !a : data = sndPair {data} {data} tup + !a : data + = case + data + tup + [(\(l : data) (r : data) -> r)] in Maybe_match {v} @@ -1771,7 +1800,11 @@ (/\dead -> let !ds : Maybe v - = `$dFromData` (sndPair {data} {data} tup) + = `$dFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]) !ds : Maybe (List (Tuple2 k v)) = go tups in Nothing {List (Tuple2 k v)}) @@ -1783,12 +1816,13 @@ {Unit -> Maybe ((\k v -> List (Tuple2 k v)) k v)} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !ds : integer = fstPair {integer} {list data} tup - !ds : list data = sndPair {integer} {list data} tup - in - Nothing {(\k v -> List (Tuple2 k v)) k v}) + casePair + {integer} + {list data} + {Maybe ((\k v -> List (Tuple2 k v)) k v)} + (unConstrData d) + (\(l : integer) (r : list data) -> + Nothing {(\k v -> List (Tuple2 k v)) k v})) (\(ds : Unit) -> let !es : list (pair data data) = unMapData d @@ -1855,12 +1889,12 @@ {Unit -> Maybe (List a)} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !ds : integer = fstPair {integer} {list data} tup - !ds : list data = sndPair {integer} {list data} tup - in - Nothing {List a}) + casePair + {integer} + {list data} + {Maybe (List a)} + (unConstrData d) + (\(l : integer) (r : list data) -> Nothing {List a})) (\(ds : Unit) -> let !ds : list (pair data data) = unMapData d @@ -1905,15 +1939,11 @@ !`$fFromDataProposalProcedure_$cfromBuiltinData` : data -> Maybe ProposalProcedure = \(d : data) -> - chooseData - {Unit -> Maybe ProposalProcedure} + matchData' + {Maybe ProposalProcedure} d - (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe ProposalProcedure) (equalsInteger 0 index) @@ -2000,36 +2030,16 @@ /\dead -> Maybe_match {GovernanceAction} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe GovernanceAction} ds - (\(ds : - Unit) -> + (\(index : + integer) + (args : + list + data) -> let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup !fail : unit -> Maybe @@ -2154,38 +2164,16 @@ Maybe_match {Maybe bytestring} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe (Maybe bytestring)} ds - (\(ds : - Unit) -> - let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup - in + (\(index : + integer) + (args : + list + data) -> case (all dead. Maybe @@ -2256,26 +2244,29 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {Maybe bytestring}) (\(ds : - Unit) -> + list + data) -> Nothing {Maybe bytestring}) (\(ds : - Unit) -> + integer) -> Nothing {Maybe bytestring}) (\(ds : - Unit) -> + bytestring) -> Nothing {Maybe - bytestring}) - Unit) + bytestring})) {all dead. Maybe GovernanceAction} @@ -3022,37 +3013,15 @@ /\dead -> Maybe_match {ProtocolVersion} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe ProtocolVersion} ds - (\(ds : - Unit) -> - let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup - in + (\(index : + integer) + (args : + list + data) -> case (all dead. Maybe @@ -3188,22 +3157,25 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {ProtocolVersion}) (\(ds : - Unit) -> + list + data) -> Nothing {ProtocolVersion}) (\(ds : - Unit) -> + integer) -> Nothing {ProtocolVersion}) (\(ds : - Unit) -> + bytestring) -> Nothing - {ProtocolVersion}) - Unit) + {ProtocolVersion})) {all dead. Maybe GovernanceAction} @@ -3441,22 +3413,25 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {GovernanceAction}) (\(ds : - Unit) -> + list + data) -> Nothing {GovernanceAction}) (\(ds : - Unit) -> + integer) -> Nothing {GovernanceAction}) (\(ds : - Unit) -> + bytestring) -> Nothing - {GovernanceAction}) - Unit) + {GovernanceAction})) {all dead. Maybe ProposalProcedure} @@ -3490,24 +3465,21 @@ (/\dead -> Nothing {ProposalProcedure}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {ProposalProcedure}) - (\(ds : Unit) -> Nothing {ProposalProcedure}) - (\(ds : Unit) -> Nothing {ProposalProcedure}) - (\(ds : Unit) -> Nothing {ProposalProcedure}) - Unit + (\(ds : list (pair data data)) -> Nothing {ProposalProcedure}) + (\(ds : list data) -> Nothing {ProposalProcedure}) + (\(ds : integer) -> Nothing {ProposalProcedure}) + (\(ds : bytestring) -> Nothing {ProposalProcedure}) data DRep | DRep_match where DRep : Credential -> DRep DRepAlwaysAbstain : DRep DRepAlwaysNoConfidence : DRep !`$fFromDataDRep_$cfromBuiltinData` : data -> Maybe DRep = \(d : data) -> - chooseData - {Unit -> Maybe DRep} + matchData' + {Maybe DRep} d - (\(ds : Unit) -> + (\(index : integer) -> let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup !fail : unit -> Maybe DRep = \(ds : unit) -> case @@ -3523,39 +3495,38 @@ {all dead. dead}) , (/\dead -> Just {DRep} DRepAlwaysAbstain) ] {all dead. dead} - !args : list data = sndPair {integer} {list data} tup in - case - (all dead. Maybe DRep) - (equalsInteger 0 index) - [ (/\dead -> fail ()) - , (/\dead -> - Maybe_match - {data} - (case - (Maybe data) - args - [ (\(h : data) (ds : list data) -> Just {data} h) - , (Nothing {data}) ]) - {all dead. Maybe DRep} - (\(ds : data) -> - /\dead -> - Maybe_match - {Credential} - (`$fFromDataCredential_$cfromBuiltinData` ds) - {all dead. Maybe DRep} - (\(arg : Credential) -> - /\dead -> Just {DRep} (DRep arg)) - (/\dead -> fail ()) - {all dead. dead}) - (/\dead -> fail ()) - {all dead. dead}) ] - {all dead. dead}) - (\(ds : Unit) -> Nothing {DRep}) - (\(ds : Unit) -> Nothing {DRep}) - (\(ds : Unit) -> Nothing {DRep}) - (\(ds : Unit) -> Nothing {DRep}) - Unit + \(args : list data) -> + case + (all dead. Maybe DRep) + (equalsInteger 0 index) + [ (/\dead -> fail ()) + , (/\dead -> + Maybe_match + {data} + (case + (Maybe data) + args + [ (\(h : data) (ds : list data) -> Just {data} h) + , (Nothing {data}) ]) + {all dead. Maybe DRep} + (\(ds : data) -> + /\dead -> + Maybe_match + {Credential} + (`$fFromDataCredential_$cfromBuiltinData` ds) + {all dead. Maybe DRep} + (\(arg : Credential) -> + /\dead -> Just {DRep} (DRep arg)) + (/\dead -> fail ()) + {all dead. dead}) + (/\dead -> fail ()) + {all dead. dead}) ] + {all dead. dead}) + (\(ds : list (pair data data)) -> Nothing {DRep}) + (\(ds : list data) -> Nothing {DRep}) + (\(ds : integer) -> Nothing {DRep}) + (\(ds : bytestring) -> Nothing {DRep}) data Delegatee | Delegatee_match where DelegStake : bytestring -> Delegatee DelegStakeVote : bytestring -> DRep -> Delegatee @@ -3563,14 +3534,12 @@ !`$fFromDataDelegatee_$cfromBuiltinData` : data -> Maybe Delegatee = \(d : data) -> - chooseData - {Unit -> Maybe Delegatee} + matchData' + {Maybe Delegatee} d - (\(ds : Unit) -> + (\(index : integer) + (args : list data) -> let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup !fail : unit -> Maybe Delegatee = \(ds : unit) -> @@ -3701,11 +3670,10 @@ (/\dead -> fail ()) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {Delegatee}) - (\(ds : Unit) -> Nothing {Delegatee}) - (\(ds : Unit) -> Nothing {Delegatee}) - (\(ds : Unit) -> Nothing {Delegatee}) - Unit + (\(ds : list (pair data data)) -> Nothing {Delegatee}) + (\(ds : list data) -> Nothing {Delegatee}) + (\(ds : integer) -> Nothing {Delegatee}) + (\(ds : bytestring) -> Nothing {Delegatee}) data TxCert | TxCert_match where TxCertAuthHotCommittee : Credential -> Credential -> TxCert TxCertDelegStaking : Credential -> Delegatee -> TxCert @@ -3721,14 +3689,12 @@ !`$fFromDataScriptContext_$cfromBuiltinData` : data -> Maybe TxCert = \(d : data) -> - chooseData - {Unit -> Maybe TxCert} + matchData' + {Maybe TxCert} d - (\(ds : Unit) -> + (\(index : integer) + (args : list data) -> let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup !fail : unit -> Maybe TxCert = \(ds : unit) -> case @@ -4489,11 +4455,10 @@ (/\dead -> fail ()) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {TxCert}) - (\(ds : Unit) -> Nothing {TxCert}) - (\(ds : Unit) -> Nothing {TxCert}) - (\(ds : Unit) -> Nothing {TxCert}) - Unit + (\(ds : list (pair data data)) -> Nothing {TxCert}) + (\(ds : list data) -> Nothing {TxCert}) + (\(ds : integer) -> Nothing {TxCert}) + (\(ds : bytestring) -> Nothing {TxCert}) data Voter | Voter_match where CommitteeVoter : Credential -> Voter DRepVoter : Credential -> Voter @@ -4501,14 +4466,12 @@ !`$fFromDataScriptContext_$cfromBuiltinData` : data -> Maybe Voter = \(d : data) -> - chooseData - {Unit -> Maybe Voter} + matchData' + {Maybe Voter} d - (\(ds : Unit) -> + (\(index : integer) + (args : list data) -> let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup !fail : unit -> Maybe Voter = \(ds : unit) -> @@ -4599,23 +4562,18 @@ (/\dead -> fail ()) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {Voter}) - (\(ds : Unit) -> Nothing {Voter}) - (\(ds : Unit) -> Nothing {Voter}) - (\(ds : Unit) -> Nothing {Voter}) - Unit + (\(ds : list (pair data data)) -> Nothing {Voter}) + (\(ds : list data) -> Nothing {Voter}) + (\(ds : integer) -> Nothing {Voter}) + (\(ds : bytestring) -> Nothing {Voter}) !`$fFromDataTxOutRef_$cfromBuiltinData` : data -> Maybe TxOutRef = \(d : data) -> - chooseData - {Unit -> Maybe TxOutRef} + matchData' + {Maybe TxOutRef} d - (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe TxOutRef) (equalsInteger 0 index) @@ -4678,23 +4636,18 @@ (/\dead -> Nothing {TxOutRef}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {TxOutRef}) - (\(ds : Unit) -> Nothing {TxOutRef}) - (\(ds : Unit) -> Nothing {TxOutRef}) - (\(ds : Unit) -> Nothing {TxOutRef}) - Unit + (\(ds : list (pair data data)) -> Nothing {TxOutRef}) + (\(ds : list data) -> Nothing {TxOutRef}) + (\(ds : integer) -> Nothing {TxOutRef}) + (\(ds : bytestring) -> Nothing {TxOutRef}) !`$fFromDataTxOut_$cfromBuiltinData` : data -> Maybe TxOut = \(d : data) -> - chooseData - {Unit -> Maybe TxOut} + matchData' + {Maybe TxOut} d - (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe TxOut) (equalsInteger 0 index) @@ -4722,24 +4675,11 @@ (ds : list data) -> Maybe_match {Address} - (chooseData - {Unit -> Maybe Address} + (matchData' + {Maybe Address} ds - (\(ds : Unit) -> - let - !tup : pair integer (list data) - = unConstrData ds - !index : integer - = fstPair - {integer} - {list data} - tup - !args : list data - = sndPair - {integer} - {list data} - tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe Address) (equalsInteger 0 index) @@ -4819,36 +4759,16 @@ {StakingCredential} (\(d : data) -> - chooseData - {Unit -> - Maybe + matchData' + {Maybe StakingCredential} d - (\(ds : - Unit) -> + (\(index : + integer) + (args : + list + data) -> let - !tup : - pair - integer - (list - data) - = unConstrData - d - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup !fail : unit -> Maybe @@ -5125,22 +5045,25 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {StakingCredential}) (\(ds : - Unit) -> + list + data) -> Nothing {StakingCredential}) (\(ds : - Unit) -> + integer) -> Nothing {StakingCredential}) (\(ds : - Unit) -> + bytestring) -> Nothing - {StakingCredential}) - Unit) + {StakingCredential})) ds) {all dead. Maybe @@ -5172,11 +5095,12 @@ (/\dead -> Nothing {Address}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {Address}) - (\(ds : Unit) -> Nothing {Address}) - (\(ds : Unit) -> Nothing {Address}) - (\(ds : Unit) -> Nothing {Address}) - Unit) + (\(ds : list (pair data data)) -> + Nothing {Address}) + (\(ds : list data) -> Nothing {Address}) + (\(ds : integer) -> Nothing {Address}) + (\(ds : bytestring) -> + Nothing {Address})) {all dead. Maybe TxOut} (\(arg : Address) -> /\dead -> @@ -5292,36 +5216,16 @@ data) -> Maybe_match {OutputDatum} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe OutputDatum} ds - (\(ds : - Unit) -> + (\(index : + integer) + (args : + list + data) -> let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup !fail : unit -> Maybe @@ -5447,22 +5351,25 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {OutputDatum}) (\(ds : - Unit) -> + list + data) -> Nothing {OutputDatum}) (\(ds : - Unit) -> + integer) -> Nothing {OutputDatum}) (\(ds : - Unit) -> + bytestring) -> Nothing - {OutputDatum}) - Unit) + {OutputDatum})) {all dead. Maybe TxOut} @@ -5541,23 +5448,18 @@ (/\dead -> Nothing {TxOut}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {TxOut}) - (\(ds : Unit) -> Nothing {TxOut}) - (\(ds : Unit) -> Nothing {TxOut}) - (\(ds : Unit) -> Nothing {TxOut}) - Unit + (\(ds : list (pair data data)) -> Nothing {TxOut}) + (\(ds : list data) -> Nothing {TxOut}) + (\(ds : integer) -> Nothing {TxOut}) + (\(ds : bytestring) -> Nothing {TxOut}) !`$fFromDataScriptContext_$cfromBuiltinData` : data -> Maybe TxInInfo = \(d : data) -> - chooseData - {Unit -> Maybe TxInInfo} + matchData' + {Maybe TxInInfo} d - (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe TxInInfo) (equalsInteger 0 index) @@ -5619,11 +5521,10 @@ (/\dead -> Nothing {TxInInfo}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {TxInInfo}) - (\(ds : Unit) -> Nothing {TxInInfo}) - (\(ds : Unit) -> Nothing {TxInInfo}) - (\(ds : Unit) -> Nothing {TxInInfo}) - Unit + (\(ds : list (pair data data)) -> Nothing {TxInInfo}) + (\(ds : list data) -> Nothing {TxInInfo}) + (\(ds : integer) -> Nothing {TxInInfo}) + (\(ds : bytestring) -> Nothing {TxInInfo}) data (AdditiveMonoid :: * -> *) a | AdditiveMonoid_match where CConsAdditiveMonoid : (\a -> a -> a -> a) a -> a -> AdditiveMonoid a data (AdditiveGroup :: * -> *) a | AdditiveGroup_match where @@ -6178,16 +6079,11 @@ (trace {Maybe ScriptContext} "Parsing ScriptContext..." - (chooseData - {Unit -> Maybe ScriptContext} + (matchData' + {Maybe ScriptContext} scriptContextData - (\(ds : Unit) -> - let - !tup : pair integer (list data) - = unConstrData scriptContextData - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe ScriptContext) (equalsInteger 0 index) @@ -6215,24 +6111,11 @@ (ds : list data) -> Maybe_match {TxInfo} - (chooseData - {Unit -> Maybe TxInfo} + (matchData' + {Maybe TxInfo} ds - (\(ds : Unit) -> - let - !tup : pair integer (list data) - = unConstrData ds - !index : integer - = fstPair - {integer} - {list data} - tup - !args : list data - = sndPair - {integer} - {list data} - tup - in + (\(index : integer) + (args : list data) -> case (all dead. Maybe TxInfo) (equalsInteger 0 index) @@ -6800,38 +6683,16 @@ Maybe_match {Interval integer} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe (Interval integer)} ds - (\(ds : - Unit) -> - let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup - in + (\(index : + integer) + (args : + list + data) -> case (all dead. Maybe @@ -6904,38 +6765,16 @@ Maybe_match {LowerBound integer} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe (LowerBound integer)} ds - (\(ds : - Unit) -> - let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup - in + (\(index : + integer) + (args : + list + data) -> case (all dead. Maybe @@ -7088,26 +6927,29 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {LowerBound integer}) (\(ds : - Unit) -> + list + data) -> Nothing {LowerBound integer}) (\(ds : - Unit) -> + integer) -> Nothing {LowerBound integer}) (\(ds : - Unit) -> + bytestring) -> Nothing {LowerBound - integer}) - Unit) + integer})) {all dead. Maybe (Interval @@ -7142,38 +6984,16 @@ Maybe_match {UpperBound integer} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe (UpperBound integer)} ds - (\(ds : - Unit) -> - let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup - in + (\(index : + integer) + (args : + list + data) -> case (all dead. Maybe @@ -7326,26 +7146,29 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {UpperBound integer}) (\(ds : - Unit) -> + list + data) -> Nothing {UpperBound integer}) (\(ds : - Unit) -> + integer) -> Nothing {UpperBound integer}) (\(ds : - Unit) -> + bytestring) -> Nothing {UpperBound - integer}) - Unit) + integer})) {all dead. Maybe (Interval @@ -7388,26 +7211,29 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {Interval integer}) (\(ds : - Unit) -> + list + data) -> Nothing {Interval integer}) (\(ds : - Unit) -> + integer) -> Nothing {Interval integer}) (\(ds : - Unit) -> + bytestring) -> Nothing {Interval - integer}) - Unit) + integer})) {all dead. Maybe TxInfo} @@ -7551,36 +7377,16 @@ {data} (\(d : data) -> - chooseData - {Unit -> - Maybe + matchData' + {Maybe ScriptPurpose} d - (\(ds : - Unit) -> + (\(index : + integer) + (args : + list + data) -> let - !tup : - pair - integer - (list - data) - = unConstrData - d - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup !fail : unit -> Maybe @@ -8117,22 +7923,25 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {ScriptPurpose}) (\(ds : - Unit) -> + list + data) -> Nothing {ScriptPurpose}) (\(ds : - Unit) -> + integer) -> Nothing {ScriptPurpose}) (\(ds : - Unit) -> + bytestring) -> Nothing - {ScriptPurpose}) - Unit) + {ScriptPurpose})) `$fFromDataBuiltinData_$cfromBuiltinData` ds) {all dead. @@ -8381,37 +8190,15 @@ `$fFromDataGovernanceAction_$cfromBuiltinData` (\(d : data) -> - chooseData - {Unit -> - Maybe + matchData' + {Maybe Vote} d - (\(ds : - Unit) -> - let - !tup : - pair - integer - (list - data) - = unConstrData - d - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup - in + (\(index : + integer) + (args : + list + data) -> case (all dead. Maybe @@ -8457,22 +8244,25 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {Vote}) (\(ds : - Unit) -> + list + data) -> Nothing {Vote}) (\(ds : - Unit) -> + integer) -> Nothing {Vote}) (\(ds : - Unit) -> + bytestring) -> Nothing - {Vote}) - Unit)) + {Vote}))) ds) {all dead. Maybe @@ -8843,11 +8633,11 @@ (/\dead -> Nothing {TxInfo}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {TxInfo}) - (\(ds : Unit) -> Nothing {TxInfo}) - (\(ds : Unit) -> Nothing {TxInfo}) - (\(ds : Unit) -> Nothing {TxInfo}) - Unit) + (\(ds : list (pair data data)) -> + Nothing {TxInfo}) + (\(ds : list data) -> Nothing {TxInfo}) + (\(ds : integer) -> Nothing {TxInfo}) + (\(ds : bytestring) -> Nothing {TxInfo})) {all dead. Maybe ScriptContext} (\(arg : TxInfo) -> /\dead -> @@ -8892,36 +8682,16 @@ /\dead -> Maybe_match {ScriptInfo} - (chooseData - {Unit -> - Maybe + (matchData' + {Maybe ScriptInfo} ds - (\(ds : - Unit) -> + (\(index : + integer) + (args : + list + data) -> let - !tup : - pair - integer - (list - data) - = unConstrData - ds - !index : - integer - = fstPair - {integer} - {list - data} - tup - !args : - list - data - = sndPair - {integer} - {list - data} - tup !fail : unit -> Maybe @@ -9537,22 +9307,25 @@ {all dead. dead}) (\(ds : - Unit) -> + list + (pair + data + data)) -> Nothing {ScriptInfo}) (\(ds : - Unit) -> + list + data) -> Nothing {ScriptInfo}) (\(ds : - Unit) -> + integer) -> Nothing {ScriptInfo}) (\(ds : - Unit) -> + bytestring) -> Nothing - {ScriptInfo}) - Unit) + {ScriptInfo})) {all dead. Maybe ScriptContext} @@ -9580,11 +9353,10 @@ (/\dead -> Nothing {ScriptContext}) {all dead. dead}) ] {all dead. dead}) - (\(ds : Unit) -> Nothing {ScriptContext}) - (\(ds : Unit) -> Nothing {ScriptContext}) - (\(ds : Unit) -> Nothing {ScriptContext}) - (\(ds : Unit) -> Nothing {ScriptContext}) - Unit)) + (\(ds : list (pair data data)) -> Nothing {ScriptContext}) + (\(ds : list data) -> Nothing {ScriptContext}) + (\(ds : integer) -> Nothing {ScriptContext}) + (\(ds : bytestring) -> Nothing {ScriptContext}))) {all dead. unit} (\(ctx : ScriptContext) -> /\dead -> @@ -9619,61 +9391,66 @@ {Unit -> Maybe LoanRedeemer} d (\(ds : Unit) -> - let - !tup : pair integer (list data) - = unConstrData d - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (all dead. Maybe LoanRedeemer) - (equalsInteger 0 index) - [ (/\dead -> - case - (all dead. Maybe LoanRedeemer) - (equalsInteger 1 index) - [ (/\dead -> - case - (all dead. Maybe LoanRedeemer) - (equalsInteger 2 index) - [ (/\dead -> - case - (all dead. - Maybe LoanRedeemer) - (equalsInteger 3 index) - [ (/\dead -> - case - (all dead. - Maybe - LoanRedeemer) - (equalsInteger - 4 - index) - [ (/\dead -> - Nothing - {LoanRedeemer}) - , (/\dead -> - Just - {LoanRedeemer} - Claim) ] - {all dead. dead}) - , (/\dead -> - Just - {LoanRedeemer} - RepayLoan) ] - {all dead. dead}) - , (/\dead -> - Just - {LoanRedeemer} - AcceptOffer) ] - {all dead. dead}) - , (/\dead -> - Just {LoanRedeemer} CloseOffer) ] - {all dead. dead}) - , (/\dead -> Just {LoanRedeemer} CloseAsk) ] - {all dead. dead}) + casePair + {integer} + {list data} + {Maybe LoanRedeemer} + (unConstrData d) + (\(l : integer) + (r : list data) -> + case + (all dead. Maybe LoanRedeemer) + (equalsInteger 0 l) + [ (/\dead -> + case + (all dead. Maybe LoanRedeemer) + (equalsInteger 1 l) + [ (/\dead -> + case + (all dead. + Maybe LoanRedeemer) + (equalsInteger 2 l) + [ (/\dead -> + case + (all dead. + Maybe + LoanRedeemer) + (equalsInteger 3 l) + [ (/\dead -> + case + (all dead. + Maybe + LoanRedeemer) + (equalsInteger + 4 + l) + [ (/\dead -> + Nothing + {LoanRedeemer}) + , (/\dead -> + Just + {LoanRedeemer} + Claim) ] + {all dead. + dead}) + , (/\dead -> + Just + {LoanRedeemer} + RepayLoan) ] + {all dead. dead}) + , (/\dead -> + Just + {LoanRedeemer} + AcceptOffer) ] + {all dead. dead}) + , (/\dead -> + Just + {LoanRedeemer} + CloseOffer) ] + {all dead. dead}) + , (/\dead -> + Just {LoanRedeemer} CloseAsk) ] + {all dead. dead})) (\(ds : Unit) -> Nothing {LoanRedeemer}) (\(ds : Unit) -> Nothing {LoanRedeemer}) (\(ds : Unit) -> Nothing {LoanRedeemer}) @@ -9723,1903 +9500,1930 @@ {Unit -> Maybe LoanDatum} ipv (\(ds : Unit) -> - let - !tup : pair integer (list data) - = unConstrData ipv - in - (\(index : integer) - (args : list data) -> - let - !fail : - unit -> Maybe LoanDatum - = \(ds : unit) -> - case - (all dead. Maybe LoanDatum) - (equalsInteger 2 index) - [ (/\dead -> - Nothing {LoanDatum}) - , (/\dead -> - Maybe_match - {Tuple2 - data - (list data)} - (case - (Maybe - (Tuple2 - data - (list data))) - args - [ (\(h : data) - (t : - list data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe LoanDatum} - (\(ds : - Tuple2 - data - (list data)) -> - /\dead -> - Tuple2_match - {data} - {list data} - ds - {Maybe + casePair + {integer} + {list data} + {Maybe LoanDatum} + (unConstrData ipv) + (\(l : integer) + (r : list data) -> + (\(index : integer) + (args : list data) -> + let + !fail : + unit -> Maybe LoanDatum + = \(ds : unit) -> + case + (all dead. + Maybe LoanDatum) + (equalsInteger 2 index) + [ (/\dead -> + Nothing {LoanDatum}) + , (/\dead -> + Maybe_match + {Tuple2 + data + (list data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + args + [ (\(h : data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Rational} - (`$fFromDataRational_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Rational) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Rational} + (`$fFromDataRational_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Rational) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {List - (Tuple2 - (Tuple2 - bytestring - bytestring) - Rational)} - (`$fFromDataList_$cfromBuiltinData` + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just {Tuple2 - (Tuple2 - bytestring - bytestring) - Rational} - `$dFromData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - List - (Tuple2 - (Tuple2 - bytestring - bytestring) - Rational)) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {List + (Tuple2 + (Tuple2 + bytestring + bytestring) + Rational)} + (`$fFromDataList_$cfromBuiltinData` + {Tuple2 + (Tuple2 + bytestring + bytestring) + Rational} + `$dFromData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + List + (Tuple2 + (Tuple2 + bytestring + bytestring) + Rational)) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {data} - (case - (Maybe - data) - ds - [ (\(h : - data) - (ds : - list - data) -> - Just - {data} - h) - , (Nothing - {data}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - data) -> - /\dead -> - Maybe_match - {Rational} - (`$fFromDataRational_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Rational) -> - /\dead -> - Just - {LoanDatum} - (ActiveDatum - arg - arg - arg - arg - arg - arg - arg - arg - arg - arg - arg)) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead}) - (/\dead -> - Nothing - {LoanDatum}) - {all dead. - dead})) - (/\dead -> - Nothing {LoanDatum}) - {all dead. dead}) ] - {all dead. dead} - !fail : - unit -> Maybe LoanDatum - = \(ds : unit) -> - case - (all dead. Maybe LoanDatum) - (equalsInteger 1 index) - [ (/\dead -> fail ()) - , (/\dead -> - Maybe_match - {Tuple2 - data - (list data)} - (case - (Maybe - (Tuple2 - data - (list data))) - args - [ (\(h : data) - (t : - list data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe LoanDatum} - (\(ds : - Tuple2 - data - (list data)) -> - /\dead -> - Tuple2_match - {data} - {list data} - ds - {Maybe - LoanDatum} - (\(ds : data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Rational} - (`$fFromDataRational_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Rational) -> - /\dead -> - Maybe_match - {Tuple2 - data - (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 - data - (list - data)) -> - /\dead -> - Tuple2_match - {data} - {list - data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {data} - (case - (Maybe - data) - ds - [ (\(h : - data) - (ds : - list - data) -> - Just - {data} - h) - , (Nothing - {data}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - data) -> - /\dead -> - Maybe_match - {List - (Tuple2 - (Tuple2 - bytestring - bytestring) - Rational)} - (`$fFromDataList_$cfromBuiltinData` - {Tuple2 - (Tuple2 - bytestring - bytestring) - Rational} - `$dFromData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - List - (Tuple2 - (Tuple2 - bytestring - bytestring) - Rational)) -> - /\dead -> - Just - {LoanDatum} - (OfferDatum - arg - arg - arg - arg - arg - arg - arg - arg)) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail ()) - {all dead. - dead})) - (/\dead -> fail ()) - {all dead. dead}) ] - {all dead. dead} - in - case - (all dead. Maybe LoanDatum) - (equalsInteger 0 index) - [ (/\dead -> fail ()) - , (/\dead -> - Maybe_match - {Tuple2 data (list data)} - (case - (Maybe - (Tuple2 - data - (list data))) - args - [ (\(h : data) - (t : list data) -> - Just - {Tuple2 - data - (list data)} - (Tuple2 - {data} - {list data} - h - t)) - , (Nothing - {Tuple2 - data - (list data)}) ]) - {all dead. Maybe LoanDatum} - (\(ds : - Tuple2 - data - (list data)) -> - /\dead -> - Tuple2_match - {data} - {list data} - ds - {Maybe LoanDatum} - (\(ds : data) - (ds : list data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {data} + (case + (Maybe + data) + ds + [ (\(h : + data) + (ds : + list + data) -> + Just + {data} + h) + , (Nothing + {data}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + data) -> + /\dead -> + Maybe_match + {Rational} + (`$fFromDataRational_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Rational) -> + /\dead -> + Just + {LoanDatum} + (ActiveDatum + arg + arg + arg + arg + arg + arg + arg + arg + arg + arg + arg)) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead})) + (/\dead -> + Nothing + {LoanDatum}) + {all dead. + dead}) ] + {all dead. dead} + !fail : + unit -> Maybe LoanDatum + = \(ds : unit) -> + case + (all dead. + Maybe LoanDatum) + (equalsInteger 1 index) + [ (/\dead -> fail ()) + , (/\dead -> + Maybe_match + {Tuple2 + data + (list data)} + (case + (Maybe + (Tuple2 data (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 + data))) + args + [ (\(h : data) + (t : + list + data) -> + Just + {Tuple2 data (list - data)) -> - /\dead -> - Tuple2_match + data)} + (Tuple2 {data} {list data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 data (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 data (list - data)) -> - /\dead -> - Tuple2_match + data)} + (Tuple2 {data} {list data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {Tuple2 - bytestring - bytestring} - (`$fFromDataTuple2_$cfromBuiltinData` - {bytestring} - {bytestring} - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - Tuple2 - bytestring - bytestring) -> - /\dead -> - Maybe_match - {Tuple2 + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 data (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 data (list - data)) -> - /\dead -> - Tuple2_match + data)} + (Tuple2 {data} {list data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {Tuple2 + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 data (list - data)} - (case - (Maybe - (Tuple2 - data - (list - data))) - ds - [ (\(h : - data) - (t : - list - data) -> - Just - {Tuple2 - data - (list - data)} - (Tuple2 - {data} - {list - data} - h - t)) - , (Nothing - {Tuple2 - data - (list - data)}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - Tuple2 + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 data (list - data)) -> - /\dead -> - Tuple2_match + data)} + (Tuple2 {data} {list data} - ds - {Maybe - LoanDatum} - (\(ds : - data) - (ds : - list - data) -> - Maybe_match - {integer} - (`$fFromDataInteger_$cfromBuiltinData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - integer) -> - /\dead -> - Maybe_match - {data} - (case - (Maybe + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : data) - ds - [ (\(h : - data) - (ds : - list - data) -> - Just - {data} - h) - , (Nothing - {data}) ]) - {all dead. - Maybe - LoanDatum} - (\(ds : - data) -> - /\dead -> - Maybe_match - {List - (Tuple2 - bytestring - bytestring)} - (`$fFromDataList_$cfromBuiltinData` - {Tuple2 - bytestring - bytestring} - `$dFromData` - ds) - {all dead. - Maybe - LoanDatum} - (\(arg : - List - (Tuple2 - bytestring - bytestring)) -> - /\dead -> - Just - {LoanDatum} - (AskDatum - arg - arg - arg - arg - arg - arg)) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail - ()) - {all dead. - dead}) - (/\dead -> - fail - ()) - {all dead. - dead})) - (/\dead -> - fail ()) - {all dead. - dead}) - (/\dead -> fail ()) - {all dead. dead})) - (/\dead -> fail ()) - {all dead. dead}) ] - {all dead. dead}) - (fstPair {integer} {list data} tup) - (sndPair {integer} {list data} tup)) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Rational} + (`$fFromDataRational_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Rational) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {data} + (case + (Maybe + data) + ds + [ (\(h : + data) + (ds : + list + data) -> + Just + {data} + h) + , (Nothing + {data}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + data) -> + /\dead -> + Maybe_match + {List + (Tuple2 + (Tuple2 + bytestring + bytestring) + Rational)} + (`$fFromDataList_$cfromBuiltinData` + {Tuple2 + (Tuple2 + bytestring + bytestring) + Rational} + `$dFromData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + List + (Tuple2 + (Tuple2 + bytestring + bytestring) + Rational)) -> + /\dead -> + Just + {LoanDatum} + (OfferDatum + arg + arg + arg + arg + arg + arg + arg + arg)) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail ()) + {all dead. + dead}) ] + {all dead. dead} + in + case + (all dead. Maybe LoanDatum) + (equalsInteger 0 index) + [ (/\dead -> fail ()) + , (/\dead -> + Maybe_match + {Tuple2 data (list data)} + (case + (Maybe + (Tuple2 + data + (list data))) + args + [ (\(h : data) + (t : list data) -> + Just + {Tuple2 + data + (list data)} + (Tuple2 + {data} + {list data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe LoanDatum} + (\(ds : + Tuple2 + data + (list data)) -> + /\dead -> + Tuple2_match + {data} + {list data} + ds + {Maybe LoanDatum} + (\(ds : data) + (ds : + list data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {Tuple2 + bytestring + bytestring} + (`$fFromDataTuple2_$cfromBuiltinData` + {bytestring} + {bytestring} + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + Tuple2 + bytestring + bytestring) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {Tuple2 + data + (list + data)} + (case + (Maybe + (Tuple2 + data + (list + data))) + ds + [ (\(h : + data) + (t : + list + data) -> + Just + {Tuple2 + data + (list + data)} + (Tuple2 + {data} + {list + data} + h + t)) + , (Nothing + {Tuple2 + data + (list + data)}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + Tuple2 + data + (list + data)) -> + /\dead -> + Tuple2_match + {data} + {list + data} + ds + {Maybe + LoanDatum} + (\(ds : + data) + (ds : + list + data) -> + Maybe_match + {integer} + (`$fFromDataInteger_$cfromBuiltinData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + integer) -> + /\dead -> + Maybe_match + {data} + (case + (Maybe + data) + ds + [ (\(h : + data) + (ds : + list + data) -> + Just + {data} + h) + , (Nothing + {data}) ]) + {all dead. + Maybe + LoanDatum} + (\(ds : + data) -> + /\dead -> + Maybe_match + {List + (Tuple2 + bytestring + bytestring)} + (`$fFromDataList_$cfromBuiltinData` + {Tuple2 + bytestring + bytestring} + `$dFromData` + ds) + {all dead. + Maybe + LoanDatum} + (\(arg : + List + (Tuple2 + bytestring + bytestring)) -> + /\dead -> + Just + {LoanDatum} + (AskDatum + arg + arg + arg + arg + arg + arg)) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail + ()) + {all dead. + dead})) + (/\dead -> + fail + ()) + {all dead. + dead}) + (/\dead -> + fail ()) + {all dead. + dead})) + (/\dead -> fail ()) + {all dead. dead}) ] + {all dead. dead}) + l + r)) (\(ds : Unit) -> Nothing {LoanDatum}) (\(ds : Unit) -> Nothing {LoanDatum}) (\(ds : Unit) -> Nothing {LoanDatum}) diff --git a/plutus-benchmark/cardano-loans/test/9.6/main.uplc.golden b/plutus-benchmark/cardano-loans/test/9.6/main.uplc.golden index 3fe7f69a1e1..23d5c90e2e5 100644 --- a/plutus-benchmark/cardano-loans/test/9.6/main.uplc.golden +++ b/plutus-benchmark/cardano-loans/test/9.6/main.uplc.golden @@ -24,705 +24,718 @@ (\`$fAdditiveGroupInteger` -> (\`$fFromDataMap_$cfromBuiltinData` -> (\`$fFromDataMaybe_$cfromBuiltinData` -> - (\`$fFromDataCredential_$cfromBuiltinData` -> - (\`$fFromDataTxOut_$cfromBuiltinData` -> - (\`$fFromDataTxOutRef_$cfromBuiltinData` -> - (\`$fFromDataScriptContext_$cfromBuiltinData` -> + (\matchData' -> + (\`$fFromDataCredential_$cfromBuiltinData` -> + (\`$fFromDataTxOut_$cfromBuiltinData` -> + (\`$fFromDataTxOutRef_$cfromBuiltinData` -> (\`$fFromDataScriptContext_$cfromBuiltinData` -> - (\`$fFromDataList_$cfromBuiltinData` -> - (\`$fFromDataGovernanceAction_$cfromBuiltinData` -> - (\`$fFromDataRational_$cfromBuiltinData` -> - (\`$fFromDataProposalProcedure_$cfromBuiltinData` -> - (\`$fFromDataExtended_$cfromBuiltinData` -> - (\`$fFromDataBool_$cfromBuiltinData` -> - (\`$fFromDataBuiltinData_$cfromBuiltinData` -> - (\`$dFromData` -> - (\`$fAdditiveGroupValue_go` -> - (\encodeDatum -> - (\getScriptInput -> - (\negate -> - (\signed - scriptContextData -> - case - (force - trace - "Parsing ScriptContext..." + (\`$fFromDataScriptContext_$cfromBuiltinData` -> + (\`$fFromDataList_$cfromBuiltinData` -> + (\`$fFromDataGovernanceAction_$cfromBuiltinData` -> + (\`$fFromDataRational_$cfromBuiltinData` -> + (\`$fFromDataProposalProcedure_$cfromBuiltinData` -> + (\`$fFromDataExtended_$cfromBuiltinData` -> + (\`$fFromDataBool_$cfromBuiltinData` -> + (\`$fFromDataBuiltinData_$cfromBuiltinData` -> + (\`$dFromData` -> + (\`$fAdditiveGroupValue_go` -> + (\encodeDatum -> + (\getScriptInput -> + (\negate -> + (\signed + scriptContextData -> + case (force - chooseData - scriptContextData - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTxOutRef_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataTxOut_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - ds) - [ (\arg -> - case - (case + trace + "Parsing ScriptContext..." + (matchData' + scriptContextData + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (matchData' + ds + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + (\d -> + matchData' + d + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTxOutRef_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataTxOut_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> + [ (\ds + ds -> + case + (`$fFromDataTxOutRef_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataTxOut_$cfromBuiltinData` + ds) + [ (\arg -> constr 0 [ (constr 0 - [ h - , t ]) ]) + [ arg + , arg ]) ]) , (constr 1 [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - `$fFromDataTxOut_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + (\d -> + matchData' + d + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataTxOutRef_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataTxOut_$cfromBuiltinData` + ds) + [ (\arg -> constr 0 [ (constr 0 - [ h - , t ]) ]) + [ arg + , arg ]) ]) , (constr 1 [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData`) - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - `$fFromDataScriptContext_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataCredential_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + `$fFromDataTxOut_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData`) + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + `$fFromDataScriptContext_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataCredential_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (matchData' + ds + (\index + args -> case - ds - [ (\ds - ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (matchData' + ds + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataExtended_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBool_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) , (constr 1 - [ ]) ]) - [ (\ds -> - case + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (matchData' ds - [ (\ds - ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataExtended_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBool_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - case - (case + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case ds - [ (\h + [ (\ds ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> + case + (`$fFromDataExtended_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataExtended_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBool_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMap_$cfromBuiltinData` - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> + (`$fFromDataBool_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMap_$cfromBuiltinData` + (\d -> + matchData' + d + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 1 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataTxOutRef_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 4 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 2 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 3 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> force ((\fail -> case (equalsInteger - 0 + 3 index) [ (delay (fail @@ -732,21 +745,46 @@ (case args [ (\h - ds -> + t -> constr 0 - [ h ]) + [ (constr 0 + [ h + , t ]) ]) , (constr 1 [ ]) ]) [ (\ds -> case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 1 - [ arg ]) ]) - , (fail - ()) ]) + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataScriptContext_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) , (fail ()) ])) ]) (\ds -> @@ -754,7 +792,7 @@ ((\fail -> case (equalsInteger - 1 + 4 index) [ (delay (fail @@ -771,1738 +809,1764 @@ [ ]) ]) [ (\ds -> case - (`$fFromDataTxOutRef_$cfromBuiltinData` + (`$fFromDataScriptContext_$cfromBuiltinData` ds) [ (\arg -> constr 0 - [ (constr 4 + [ (constr 5 [ arg ]) ]) , (fail ()) ]) , (fail ()) ])) ]) (\ds -> - force - ((\fail -> - case - (equalsInteger - 2 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 3 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 3 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case + case + (equalsInteger + 5 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case ds - [ (\ds + [ (\h ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataScriptContext_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 4 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataProposalProcedure_$cfromBuiltinData` + ds) + [ (\arg -> constr 0 - [ h ]) + [ (constr 2 + [ arg + , arg ]) ]) , (constr 1 [ ]) ]) - [ (\ds -> - case - (`$fFromDataScriptContext_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 5 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 5 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataProposalProcedure_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 2 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]))))))))))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - `$fFromDataBuiltinData_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinData_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataScriptContext_$cfromBuiltinData` - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataGovernanceAction_$cfromBuiltinData` - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (case - (equalsInteger - 1 - index) - [ (case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 0 - [ ]) ]) ]) - , (constr 0 - [ (constr 2 - [ ]) ]) ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]))))))))))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + `$fFromDataBuiltinData_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinData_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataScriptContext_$cfromBuiltinData` + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataGovernanceAction_$cfromBuiltinData` + (\d -> + matchData' + d + (\index + args -> + case + (equalsInteger + 0 + index) + [ (case + (equalsInteger + 1 + index) + [ (case + (equalsInteger + 2 + index) + [ (constr 1 [ ]) - (constr 0 - [ ]))) - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - `$fFromDataProposalProcedure_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> + , (constr 0 + [ (constr 0 + [ ]) ]) ]) + , (constr 0 + [ (constr 2 + [ ]) ]) ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]))) + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + `$fFromDataProposalProcedure_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (matchData' + ds + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 1 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + (`$fFromDataTxOutRef_$cfromBuiltinData` ds) [ (\arg -> - constr 0 - [ (constr 1 - [ arg ]) ]) + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataBuiltinData_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 4 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 1 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTxOutRef_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataBuiltinData_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 4 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 2 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (equalsInteger - 2 - index) - [ (delay - (fail - ())) - , (delay - (case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 3 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 3 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataScriptContext_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 4 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataScriptContext_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 5 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 5 + index) + [ (constr 1 + [ ]) + , (case (case args [ (\h - ds -> + t -> constr 0 - [ h ]) + [ (constr 0 + [ h + , t ]) ]) , (constr 1 [ ]) ]) [ (\ds -> case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 3 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 3 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataScriptContext_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 4 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataScriptContext_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 5 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 5 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataProposalProcedure_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 2 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]))))))))))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , ds - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - scriptContextData)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ]))) - [ (\ctx -> - case - ((\context -> - case - context - [ (\ipv - ipv - ipv -> - (\loanRedeemer -> - (\loanDatum -> - force - trace - "Validation completed" - ((\txInfoInputs -> - (\ds -> - (\inputCredentials -> - (\txInfoSignatories -> - (\stakingCredApproves' -> - (\nt -> + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataProposalProcedure_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 2 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]))))))))))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , ds + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]))) + [ (\ctx -> + case + ((\context -> + case + context + [ (\ipv + ipv + ipv -> + (\loanRedeemer -> + (\loanDatum -> + force + trace + "Validation completed" + ((\txInfoInputs -> + (\ds -> + (\inputCredentials -> + (\txInfoSignatories -> + (\stakingCredApproves' -> (\nt -> - (\allAddrInputs -> - (\nt -> - case - ((\outputs -> - case - (foo - inputCredentials - (constr 0 - [ ]) - outputs) - [ (traceError - "Missing output to address") - , (\x - ds -> - case + (\nt -> + (\allAddrInputs -> + (\nt -> + case + ((\outputs -> + case + (foo + inputCredentials + (constr 0 + [ ]) + outputs) + [ (traceError + "Missing output to address") + , (\x + ds -> + case + ds + [ x + , (\ipv + ipv -> + traceError + "Missing output to address") ]) ]) + (case + ipv + [ (\ds ds - [ x - , (\ipv - ipv -> - traceError - "Missing output to address") ]) ]) - (case - ipv - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - [ (\ipv - ipv - ipv - ipv -> - (\valueOf -> - (\uncurry -> - (\cse -> - (\cse -> - (\repaidAmount -> - case - loanRedeemer - [ True - , True - , (case - (case - (equalsInteger - 0 - (encodeDatum - loanDatum)) - [ (force - trace - "Datum is not an AskDatum" - False) - , True ]) - [ False - , (case - (case - stakingCredApproves' - [ (force - trace - "Staking credential did not approve" - False) - , True ]) - [ False - , ((\cse -> - case - (equalsInteger - (uncurry - (valueOf - nt) - cse) - (negate - `$fAdditiveGroupInteger` - (uncurry - (valueOf - nt) - cse))) - [ (force - trace - "Ask beacons not burned." - False) - , True ]) - (case - loanDatum - [ (\default_arg0 - default_arg1 - default_arg2 - default_arg3 - default_arg4 - default_arg5 - default_arg6 - default_arg7 - default_arg8 - default_arg9 - default_arg10 -> - error) - , (\ds - ds - ds - ds - ds - ds -> - ds) - , (\default_arg0 - default_arg1 - default_arg2 - default_arg3 - default_arg4 - default_arg5 - default_arg6 - default_arg7 -> - error) ])) ]) ]) - , (case - (case - (equalsInteger - 1 - (encodeDatum - loanDatum)) - [ (force - trace - "Datum is not an OfferDatum" - False) - , True ]) - [ False - , ((\cse -> - case - (equalsInteger - 1 - (uncurry - (valueOf - cse) - cse)) - [ (case - stakingCredApproves' - [ (force - trace - "Staking credential did not approve" - False) - , True ]) + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ])) + [ (\ipv + ipv + ipv + ipv -> + (\valueOf -> + (\uncurry -> + (\cse -> + (\cse -> + (\repaidAmount -> + case + loanRedeemer + [ True + , True + , (case + (case + (equalsInteger + 0 + (encodeDatum + loanDatum)) + [ (force + trace + "Datum is not an AskDatum" + False) + , True ]) + [ False + , (case + (case + stakingCredApproves' + [ (force + trace + "Staking credential did not approve" + False) + , True ]) + [ False , ((\cse -> case - (case - (signed - (txInfoSignatories - ipv) - (case - cse - [ (\ds - b -> - b) ])) - [ (force - trace - "Lender did not sign" - False) - , True ]) - [ False - , ((\cse -> - (\cse -> - (\cse -> - (\cse -> - (\cse -> - case - (case - (equalsInteger - (cse - cse) - (cse - (cse - cse))) - [ (force - trace - "Offer beacons not burned" - False) - , True ]) - [ False - , (case - (equalsInteger - (cse - cse) - (cse - (cse - cse))) - [ (force - trace - "Lender IDs not burned" - False) - , True ]) ]) - (uncurry - cse)) - (uncurry - cse)) - (negate - `$fAdditiveGroupInteger`)) - (valueOf - nt)) - (valueOf - nt)) ]) + (equalsInteger + (uncurry + (valueOf + nt) + cse) + (negate + `$fAdditiveGroupInteger` + (uncurry + (valueOf + nt) + cse))) + [ (force + trace + "Ask beacons not burned." + False) + , True ]) (case loanDatum - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) - , (\ipv - ipv - ipv - ipv - ipv - ipv -> + [ (\default_arg0 + default_arg1 + default_arg2 + default_arg3 + default_arg4 + default_arg5 + default_arg6 + default_arg7 + default_arg8 + default_arg9 + default_arg10 -> error) , (\ds ds ds ds ds - ds - ds ds -> - ds) ])) ]) - (case - loanDatum - [ (\default_arg0 - default_arg1 - default_arg2 - default_arg3 - default_arg4 - default_arg5 - default_arg6 - default_arg7 - default_arg8 - default_arg9 - default_arg10 -> - error) - , (\default_arg0 - default_arg1 - default_arg2 - default_arg3 - default_arg4 - default_arg5 -> - error) - , (\ds - ds - ds - ds - ds - ds - ds - ds -> - ds) ])) ]) - , True ]) - (constr 0 - [ (uncurry - (valueOf - (cse - ipv - (negate - (constr 0 - [ (constr 0 - [ cse - , (constr 0 - [ ]) ]) - , (\eta - eta -> - cse - eta - (`$fAdditiveGroupValue_go` - eta)) ]) - cse))) - (case - loanDatum - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) - , (\ds - ds - ds - ds - ds - ds -> - ds) - , (\ds - ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - , 1 ])) - (`$fAdditiveGroupValue` - addInteger)) - (case - ds - [ (\inputCredentials - inputValue -> - inputValue) ])) - (\f - ds -> - case - ds - [ (\a - b -> - f - a - b) ])) - (\value - cur - tn -> - (\go -> - (\s -> - s - s) - (\s - ds -> - case - ds - [ 0 - , (\ds - xs' -> - case - ds - [ (\c' - i -> - case - (equalsByteString - c' - cur) - [ (s - s - xs') - , (go - i) ]) ]) ]) - value) - ((\s -> - s - s) - (\s - ds -> - case - ds - [ 0 - , (\ds - xs' -> - case - ds - [ (\c' - i -> - case - (equalsByteString - c' - tn) - [ (s - s - xs') - , i ]) ]) ])))) ]) - (case + ds) + , (\default_arg0 + default_arg1 + default_arg2 + default_arg3 + default_arg4 + default_arg5 + default_arg6 + default_arg7 -> + error) ])) ]) ]) + , (case + (case + (equalsInteger + 1 + (encodeDatum + loanDatum)) + [ (force + trace + "Datum is not an OfferDatum" + False) + , True ]) + [ False + , ((\cse -> + case + (equalsInteger + 1 + (uncurry + (valueOf + cse) + cse)) + [ (case + stakingCredApproves' + [ (force + trace + "Staking credential did not approve" + False) + , True ]) + , ((\cse -> + case + (case + (signed + (txInfoSignatories + ipv) + (case + cse + [ (\ds + b -> + b) ])) + [ (force + trace + "Lender did not sign" + False) + , True ]) + [ False + , ((\cse -> + (\cse -> + (\cse -> + (\cse -> + (\cse -> + case + (case + (equalsInteger + (cse + cse) + (cse + (cse + cse))) + [ (force + trace + "Offer beacons not burned" + False) + , True ]) + [ False + , (case + (equalsInteger + (cse + cse) + (cse + (cse + cse))) + [ (force + trace + "Lender IDs not burned" + False) + , True ]) ]) + (uncurry + cse)) + (uncurry + cse)) + (valueOf + nt)) + (valueOf + nt)) + (negate + `$fAdditiveGroupInteger`)) ]) + (case + loanDatum + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) + , (\ipv + ipv + ipv + ipv + ipv + ipv -> + error) + , (\ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ])) ]) + (case + loanDatum + [ (\default_arg0 + default_arg1 + default_arg2 + default_arg3 + default_arg4 + default_arg5 + default_arg6 + default_arg7 + default_arg8 + default_arg9 + default_arg10 -> + error) + , (\default_arg0 + default_arg1 + default_arg2 + default_arg3 + default_arg4 + default_arg5 -> + error) + , (\ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ])) ]) + , True ]) + (constr 0 + [ (uncurry + (valueOf + (cse + ipv + (negate + (constr 0 + [ (constr 0 + [ cse + , (constr 0 + [ ]) ]) + , (\eta + eta -> + cse + eta + (`$fAdditiveGroupValue_go` + eta)) ]) + cse))) + (case + loanDatum + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) + , (\ds + ds + ds + ds + ds + ds -> + ds) + , (\ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ])) + , 1 ])) + (`$fAdditiveGroupValue` + addInteger)) + (case + ds + [ (\inputCredentials + inputValue -> + inputValue) ])) + (\f + ds -> + case + ds + [ (\a + b -> + f + a + b) ])) + (\value + cur + tn -> + (\go -> + (\s -> + s + s) + (\s + ds -> + case + ds + [ 0 + , (\ds + xs' -> + case + ds + [ (\c' + i -> + case + (equalsByteString + c' + cur) + [ (s + s + xs') + , (go + i) ]) ]) ]) + value) + ((\s -> + s + s) + (\s + ds -> + case + ds + [ 0 + , (\ds + xs' -> + case + ds + [ (\c' + i -> + case + (equalsByteString + c' + tn) + [ (s + s + xs') + , i ]) ]) ])))) ]) (case (case (case - ipv + (case + ipv + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ]) [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds ds -> ds) ]) - [ (\ds + [ (\t ds -> - ds) ]) - [ (\t - ds -> - t) ]) - [ (\t -> - t) - , (traceError - "Shouldn't be NegInf.") - , (traceError - "invalid-hereafter not specified") ])) - ((\inputs -> - foo - inputCredentials - (constr 0 - [ ]) - inputs) - (txInfoInputs - ipv))) - (go - (case - ipv - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) ]))) - (case - ipv - [ (\ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv - ipv -> - go - ipv) ])) - (case + t) ]) + [ (\t -> + t) + , (traceError + "Shouldn't be NegInf.") + , (traceError + "invalid-hereafter not specified") ])) + ((\inputs -> + foo + inputCredentials + (constr 0 + [ ]) + inputs) + (txInfoInputs + ipv))) + (go + (case + ipv + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ]))) + (case + ipv + [ (\ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv + ipv -> + go + ipv) ])) (case - inputCredentials - [ (\ds - ds -> - ds) ]) - [ (\ds -> - case - ds - [ (\cred -> - (\go -> - case - cred - [ (\pkh -> - signed - (txInfoSignatories - ipv) - pkh) - , (\ds -> - case - (go - (case - ipv - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - [ (\ds -> - True) - , False ]) ]) - ((\s -> - s - s) - (\s - ds -> - case - ds - [ (constr 1 - [ ]) - , (\ds - xs' -> - case - ds - [ (\c' - i -> - case - (`$fEqCredential_$c==` - c' - cred) - [ (s - s - xs') - , (constr 0 - [ i ]) ]) ]) ]))) - , (\ipv - ipv - ipv -> - traceError - "Wrong kind of staking credential.") ]) - , True ])) - (\ds -> - case - ds - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) ])) - (case - ds - [ (\inputCredentials - inputValue -> - inputCredentials) ])) - (case - (case - ipv - [ (\default_arg0 - default_arg1 -> - traceError - "script input error ownInput") - , (\default_arg0 -> - traceError - "script input error ownInput") - , (\default_arg0 - default_arg1 -> - traceError - "script input error ownInput") - , (\default_arg0 -> - traceError - "script input error ownInput") - , (\ref - ds -> - getScriptInput - (txInfoInputs - ipv) - ref) - , (\default_arg0 -> - traceError - "script input error ownInput") ]) - [ (\ipv - ipv - ipv - ipv -> - constr 0 - [ ipv - , ipv ]) ])) - (\ds -> - case - ds - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - ds) ]))) - (case - (case - (case - context - [ (\ds - ds - ds -> - ds) ]) - [ (\default_arg0 - default_arg1 -> - (\cse -> - case - cse - [ cse ]) - error) - , (\default_arg0 -> - (\cse -> - case - cse - [ cse ]) - error) - , (\default_arg0 - default_arg1 -> - (\cse -> - case - cse - [ cse ]) - error) - , (\default_arg0 -> - (\cse -> + (case + inputCredentials + [ (\ds + ds -> + ds) ]) + [ (\ds -> + case + ds + [ (\cred -> + (\go -> + case + cred + [ (\pkh -> + signed + (txInfoSignatories + ipv) + pkh) + , (\ds -> + case + (go + (case + ipv + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ])) + [ (\ds -> + True) + , False ]) ]) + ((\s -> + s + s) + (\s + ds -> + case + ds + [ (constr 1 + [ ]) + , (\ds + xs' -> + case + ds + [ (\c' + i -> + case + (`$fEqCredential_$c==` + c' + cred) + [ (s + s + xs') + , (constr 0 + [ i ]) ]) ]) ]))) + , (\ipv + ipv + ipv -> + traceError + "Wrong kind of staking credential.") ]) + , True ])) + (\ds -> + case + ds + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ])) + (case + ds + [ (\inputCredentials + inputValue -> + inputCredentials) ])) + (case + (case + ipv + [ (\default_arg0 + default_arg1 -> + traceError + "script input error ownInput") + , (\default_arg0 -> + traceError + "script input error ownInput") + , (\default_arg0 + default_arg1 -> + traceError + "script input error ownInput") + , (\default_arg0 -> + traceError + "script input error ownInput") + , (\ref + ds -> + getScriptInput + (txInfoInputs + ipv) + ref) + , (\default_arg0 -> + traceError + "script input error ownInput") ]) + [ (\ipv + ipv + ipv + ipv -> + constr 0 + [ ipv + , ipv ]) ])) + (\ds -> + case + ds + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + ds) ]))) + (case + (case + (case + context + [ (\ds + ds + ds -> + ds) ]) + [ (\default_arg0 + default_arg1 -> + (\cse -> + case + cse + [ cse ]) + error) + , (\default_arg0 -> + (\cse -> + case + cse + [ cse ]) + error) + , (\default_arg0 + default_arg1 -> + (\cse -> + case + cse + [ cse ]) + error) + , (\default_arg0 -> + (\cse -> + case + cse + [ cse ]) + error) + , (\ds + ds -> case - cse - [ cse ]) - error) - , (\ds - ds -> + ds + [ (\ds -> + constr 0 + [ ds ]) + , ((\cse -> + case + cse + [ cse ]) + error) ]) + , (\default_arg0 -> + (\cse -> + case + cse + [ cse ]) + error) ]) + [ (\ipv -> case - ds - [ (\ds -> - constr 0 - [ ds ]) - , ((\cse -> + (force + chooseData + ipv + (\ds -> case - cse - [ cse ]) - error) ]) - , (\default_arg0 -> - (\cse -> - case - cse - [ cse ]) - error) ]) - [ (\ipv -> - case - (force - chooseData - ipv - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> - case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataList_$cfromBuiltinData` - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData`) - ds) - [ (\arg -> - constr 0 - [ (constr 1 - [ arg - , arg - , arg - , arg - , arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 1 - index) - [ (delay - (fail - ())) - , (delay - (case + (unConstrData + ipv) + [ (\l + r -> + force + ((\fail -> + case + (equalsInteger + 0 + l) + [ (delay + (fail + ())) + , (delay + (case + (case + r + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataList_$cfromBuiltinData` + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData`) + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg + , arg + , arg + , arg + , arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 1 + l) + [ (delay + (fail + ())) + , (delay + (case + (case + r + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataRational_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataList_$cfromBuiltinData` + (force + `$dFromData`) + ds) + [ (\arg -> + constr 0 + [ (constr 2 + [ arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 2 + l) + [ (constr 1 + [ ]) + , (case (case - args + r [ (\h t -> constr 0 @@ -2583,7 +2647,9 @@ [ (\ds ds -> case - (`$fFromDataInteger_$cfromBuiltinData` + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` ds) [ (\arg -> case @@ -2623,7 +2689,7 @@ [ (\ds ds -> case - (`$fFromDataRational_$cfromBuiltinData` + (`$fFromDataInteger_$cfromBuiltinData` ds) [ (\arg -> case @@ -2643,665 +2709,501 @@ [ (\ds ds -> case - (`$fFromDataInteger_$cfromBuiltinData` + (`$fFromDataRational_$cfromBuiltinData` ds) [ (\arg -> case (case ds [ (\h - ds -> + t -> constr 0 - [ h ]) + [ (constr 0 + [ h + , t ]) ]) , (constr 1 [ ]) ]) [ (\ds -> case - (`$fFromDataList_$cfromBuiltinData` - (force - `$dFromData`) - ds) - [ (\arg -> - constr 0 - [ (constr 2 - [ arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataRational_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - (force - `$dFromData`) - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataRational_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]))))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ipv)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\r -> - force - trace - "Parsed Datum" - r) - , (traceError - "Failed to parse Datum") ]) ])) - (case - ((\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (case - (equalsInteger - 1 - index) - [ (case - (equalsInteger - 2 - index) - [ (case - (equalsInteger - 3 - index) - [ (case - (equalsInteger - 4 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) - , (constr 0 - [ (constr 4 - [ ]) ]) ]) - , (constr 0 - [ (constr 0 - [ ]) ]) ]) - , (constr 0 - [ (constr 3 - [ ]) ]) ]) - , (constr 0 - [ (constr 2 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - (case - context - [ (\ds - ds - ds -> - ds) ])) - [ (\r -> - force - trace - "Parsed Redeemer" - r) - , (traceError - "Failed to parse Redeemer") ])) ]) - (force - trace - "Parsed ScriptContext" - ctx)) - [ (traceError - "PT5") - , () ]) - , (traceError - "Failed to parse ScriptContext") ]) - ((\s -> - s - s) - (\s - ds - ds -> - case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + (force + `$dFromData`) + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataRational_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]))))) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (constr 0 + [ ])) + [ (\r -> + force + trace + "Parsed Datum" + r) + , (traceError + "Failed to parse Datum") ]) ])) + (case + ((\d -> + force + chooseData + d + (\ds -> + case + (unConstrData + d) + [ (\l + r -> + case + (equalsInteger + 0 + l) + [ (case + (equalsInteger + 1 + l) + [ (case + (equalsInteger + 2 + l) + [ (case + (equalsInteger + 3 + l) + [ (case + (equalsInteger + 4 + l) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) + , (constr 0 + [ (constr 4 + [ ]) ]) ]) + , (constr 0 + [ (constr 0 + [ ]) ]) ]) + , (constr 0 + [ (constr 3 + [ ]) ]) ]) + , (constr 0 + [ (constr 2 + [ ]) ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (constr 0 + [ ])) + (case + context + [ (\ds + ds + ds -> + ds) ])) + [ (\r -> + force + trace + "Parsed Redeemer" + r) + , (traceError + "Failed to parse Redeemer") ])) ]) + (force + trace + "Parsed ScriptContext" + ctx)) + [ (traceError + "PT5") + , () ]) + , (traceError + "Failed to parse ScriptContext") ]) + ((\s -> + s + s) + (\s ds - [ False - , (\k - ks -> - case - (equalsByteString - k - ds) - [ (s - s - ks - ds) - , True ]) ]))) - (\`$dAdditiveGroup` - eta -> - case - `$dAdditiveGroup` - [ (\v - v -> - v) ] - (case + ds -> + case + ds + [ False + , (\k + ks -> + case + (equalsByteString + k + ds) + [ (s + s + ks + ds) + , True ]) ]))) + (\`$dAdditiveGroup` + eta -> + case + `$dAdditiveGroup` + [ (\v + v -> + v) ] (case - `$dAdditiveGroup` + (case + `$dAdditiveGroup` + [ (\v + v -> + v) ]) [ (\v v -> v) ]) - [ (\v - v -> - v) ]) - eta)) - ((\s -> - s - s) - (\s - ds - ds -> - case + eta)) + ((\s -> + s + s) + (\s ds - [ ((\x -> - error) - (force - trace - "script input error getScriptInput" - (constr 0 - [ ]))) - , (\ds - tl -> - case - ds - [ (\iRef - ot -> - case - (case + ds -> + case + ds + [ ((\x -> + error) + (force + trace + "script input error getScriptInput" + (constr 0 + [ ]))) + , (\ds + tl -> + case + ds + [ (\iRef + ot -> + case (case - iRef - [ (\ds - ds -> - case - ds - [ (\ds - ds -> - equalsByteString - ds - ds) ]) ]) - [ False - , (case - iRef - [ (\ds - ds -> - case - ds - [ (\ds - ds -> - equalsInteger - ds - ds) ]) ]) ]) - [ (s - s - tl - ds) - , ot ]) ]) ]))) - (\ds -> - case - ds - [ (\ds - ds - ds - ds - ds - ds - ds - ds - ds - ds - ds -> - 2) - , (\ds - ds - ds - ds - ds - ds -> - 0) - , (\ds - ds - ds - ds - ds - ds - ds - ds -> - 1) ])) - ((\s -> - s - s) - (\s - ds -> - case - ds - [ (constr 0 - [ ]) - , (\x - xs -> - constr 1 - [ (case - x - [ (\c - a -> - constr 0 - [ c - , (`$fFunctorMap_$cfmap` - (\i' -> - multiplyInteger - -1 - i') - a) ]) ]) - , (s - s - xs) ]) ]))) - (delay - (`$fFromDataTuple2_$cfromBuiltinData` + (case + iRef + [ (\ds + ds -> + case + ds + [ (\ds + ds -> + equalsByteString + ds + ds) ]) ]) + [ False + , (case + iRef + [ (\ds + ds -> + case + ds + [ (\ds + ds -> + equalsInteger + ds + ds) ]) ]) ]) + [ (s + s + tl + ds) + , ot ]) ]) ]))) + (\ds -> + case + ds + [ (\ds + ds + ds + ds + ds + ds + ds + ds + ds + ds + ds -> + 2) + , (\ds + ds + ds + ds + ds + ds -> + 0) + , (\ds + ds + ds + ds + ds + ds + ds + ds -> + 1) ])) + ((\s -> + s + s) + (\s + ds -> + case + ds + [ (constr 0 + [ ]) + , (\x + xs -> + constr 1 + [ (case + x + [ (\c + a -> + constr 0 + [ c + , (`$fFunctorMap_$cfmap` + (\i' -> + multiplyInteger + -1 + i') + a) ]) ]) + , (s + s + xs) ]) ]))) + (delay (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData`) - `$fFromDataRational_$cfromBuiltinData`))) + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData`) + `$fFromDataRational_$cfromBuiltinData`))) + (\d -> + constr 0 + [ d ])) (\d -> - constr 0 - [ d ])) - (\d -> - force - chooseData + force + chooseData + d + (\ds -> + case + (unConstrData + d) + [ (\l + r -> + case + (equalsInteger + 0 + l) + [ (case + (equalsInteger + 1 + l) + [ (constr 1 + [ ]) + , (constr 0 + [ True ]) ]) + , (constr 0 + [ False ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (constr 0 + [ ]))) + (\`$dFromData` + d -> + matchData' d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (case - (equalsInteger - 1 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ True ]) ]) - , (constr 0 - [ False ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) + (\index + args -> + case + (equalsInteger + 0 + index) + [ (case + (equalsInteger + 1 + index) + [ (case + (equalsInteger + 2 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 2 + [ ]) ]) ]) + , (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$dFromData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg ]) ]) + , (case + (equalsInteger + 2 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 2 + [ ]) ]) ]) ]) + , (case + (equalsInteger + 2 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 2 + [ ]) ]) ]) ]) ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) (\ds -> constr 1 [ ]) @@ -3313,397 +3215,493 @@ [ ]) (\ds -> constr 1 - [ ]) - (constr 0 - [ ]))) - (\`$dFromData` - d -> - force - chooseData + [ ]))) + (\d -> + matchData' d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (case - (equalsInteger - 1 - index) - [ (case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 2 - [ ]) ]) ]) - , (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> case - (`$dFromData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg ]) ]) - , (case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 2 - [ ]) ]) ]) ]) - , (case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 2 - [ ]) ]) ]) ]) ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ]))) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (matchData' + ds + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> + ds + [ (\ds + ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataGovernanceAction_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 4 + [ arg + , ds + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 1 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> case - ds - [ (\ds - ds -> + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataGovernanceAction_$cfromBuiltinData` + ds) + [ (\arg -> case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataGovernanceAction_$cfromBuiltinData` - ds) - [ (\arg -> + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (case + (matchData' ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 4 - [ arg - , ds - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) , (fail ()) ]) , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 1 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 2 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> case - ds - [ (\ds - ds -> + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataCredential_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataGovernanceAction_$cfromBuiltinData` - ds) - [ (\arg -> + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (fail - ()) ]) + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 5 + [ arg + , arg ]) ]) , (fail ()) ]) , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 2 - index) - [ (delay - (fail - ())) - , (delay - (case + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 3 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataGovernanceAction_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 3 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 4 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataGovernanceAction_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataList_$cfromBuiltinData` + `$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataCredential_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataRational_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 6 + [ arg + , arg + , arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 5 + index) + [ (case + (equalsInteger + 6 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) + , (case (case args [ (\h @@ -3720,9 +3718,8 @@ [ (\ds ds -> case - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataCredential_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataGovernanceAction_$cfromBuiltinData` ds) [ (\arg -> case @@ -3736,1728 +3733,792 @@ [ ]) ]) [ (\ds -> case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) + (matchData' + ds + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ arg ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) [ (\arg -> constr 0 - [ (constr 5 + [ (constr 2 [ arg , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 3 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataGovernanceAction_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 3 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 4 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataGovernanceAction_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataList_$cfromBuiltinData` - `$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataCredential_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataRational_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 6 - [ arg - , arg - , arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 5 - index) - [ (case - (equalsInteger - 6 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataGovernanceAction_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ arg ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - constr 0 - [ (constr 2 - [ arg - , arg ]) ]) - , (case - (equalsInteger - 6 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) ]) - , (case - (equalsInteger - 6 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) ]) - , (case - (equalsInteger - 6 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) ]) ]) - , (case - (equalsInteger - 6 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) ]) ]))))))))))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ]))) - (\eta -> - case - (`$fFromDataTuple2_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - eta) - [ (\x -> - case - x - [ (\n - d -> - case - (equalsInteger - 0 - d) - [ (constr 0 - [ (unsafeRatio - n - d) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ])) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) + , (case + (equalsInteger + 6 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) ]) + , (case + (equalsInteger + 6 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) ]) + , (case + (equalsInteger + 6 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) ]) ]) + , (case + (equalsInteger + 6 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) ]) ]))))))))))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) , (constr 1 [ ]) ]) , (constr 1 [ ]) ]) ]) , (constr 1 [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ]))) - (\`$dFromData` -> - (\go - d -> - force - chooseData - d - (\ds -> - (\tup -> - (\ds -> (\ds -> constr 1 [ ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]))) + (\eta -> + case + (`$fFromDataTuple2_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + eta) + [ (\x -> + case + x + [ (\n + d -> + case + (equalsInteger + 0 + d) + [ (constr 0 + [ (unsafeRatio + n + d) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ])) + (\d -> + matchData' + d + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) (\ds -> constr 1 [ ]) - (unMapData - d)) - (\ds -> - go - (unListData - d)) - (\ds -> (\ds -> constr 1 [ ]) - (unIData - d)) - (\ds -> (\ds -> constr 1 [ ]) - (unBData - d)) - (constr 0 - [ ])) - ((\s -> - s - s) - (\s - xs -> - case - xs - [ (\x - xs -> - case - (`$dFromData` - x) - [ (\a -> - case - (s - s - xs) - [ (\ipv -> + (\ds -> + constr 1 + [ ]))) + (\`$dFromData` -> + (\go + d -> + force + chooseData + d + (\ds -> + case + (unConstrData + d) + [ (\l + r -> + constr 1 + [ ]) ]) + (\ds -> + (\ds -> + constr 1 + [ ]) + (unMapData + d)) + (\ds -> + go + (unListData + d)) + (\ds -> + (\ds -> + constr 1 + [ ]) + (unIData + d)) + (\ds -> + (\ds -> + constr 1 + [ ]) + (unBData + d)) + (constr 0 + [ ])) + ((\s -> + s + s) + (\s + xs -> + case + xs + [ (\x + xs -> + case + (`$dFromData` + x) + [ (\a -> + case + (s + s + xs) + [ (\ipv -> + constr 0 + [ (constr 1 + [ a + , ipv ]) ]) + , (constr 1 + [ ]) ]) + , ((\ds -> + constr 1 + [ ]) + (s + s + xs)) ]) + , (constr 0 + [ (constr 0 + [ ]) ]) ])))) + (\d -> + matchData' + d + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> constr 0 - [ (constr 1 - [ a - , ipv ]) ]) + [ (constr 0 + [ h + , t ]) ]) , (constr 1 [ ]) ]) - , ((\ds -> - constr 1 - [ ]) - (s - s - xs)) ]) - , (constr 0 - [ (constr 0 - [ ]) ]) ])))) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> - case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 6 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 1 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> case - ds - [ (\ds - ds -> + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (`$fFromDataCredential_$cfromBuiltinData` + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` ds) [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 9 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) + constr 0 + [ (constr 6 + [ arg + , arg ]) ]) , (fail - ()) ]) ]) + ()) ]) + , (fail + ()) ]) , (fail - ()) ])) ]) - (\ds -> - force - ((\`$fFromDataDelegatee_$cfromBuiltinData` -> - (\fail -> - case - (equalsInteger - 2 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 1 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataDelegatee_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 1 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 3 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataDelegatee_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 5 - [ arg - , arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 4 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 4 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 5 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 10 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 6 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 8 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 7 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 2 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 8 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 3 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 9 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ]) - , (fail - ()) ]) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 10 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 7 - [ arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ])))))))))))))))) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> - case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\`$fFromDataDRep_$cfromBuiltinData` -> - (\fail -> - case - (equalsInteger - 1 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataDRep_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 2 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataDRep_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 1 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ])) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> - case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 1 - index) - [ (case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 2 - [ ]) ]) ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])))))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])))))))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ]))) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> - case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - force - ((\fail -> - case - (equalsInteger - 1 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 1 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 2 - [ arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]))))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ]))) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ]))) - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataCredential_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - (\d -> - force - chooseData - d - (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 9 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\`$fFromDataDelegatee_$cfromBuiltinData` -> + (\fail -> + case + (equalsInteger + 2 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataDelegatee_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 3 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataDelegatee_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 5 + [ arg + , arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 4 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 4 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 5 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 10 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 6 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 8 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 7 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 2 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 8 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case (case - args + ds [ (\h ds -> constr 0 @@ -5466,160 +4527,535 @@ [ ]) ]) [ (\ds -> case - (`$fFromDataCredential_$cfromBuiltinData` + (`$fFromDataInteger_$cfromBuiltinData` ds) [ (\arg -> constr 0 - [ (constr 0 - [ arg ]) ]) + [ (constr 3 + [ arg + , arg ]) ]) , (fail ()) ]) , (fail - ()) ])) ]) - (\ds -> + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 9 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> case - (equalsInteger - 1 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataInteger_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 1 - [ arg - , arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 - [ ])) - [ (\arg -> - case + ds + [ (\ds + ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ]) + , (fail + ()) ]) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 10 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 7 + [ arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ])))))))))))))))) + (\d -> + matchData' + d + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\`$fFromDataDRep_$cfromBuiltinData` -> + (\fail -> + case + (equalsInteger + 1 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataDRep_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 2 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 2 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataDRep_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ])) + (\d -> + matchData' + d + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 1 + index) + [ (case + (equalsInteger + 2 + index) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 2 + [ ]) ]) ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])))))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])))))))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]))) + (\d -> + matchData' + d + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + force + ((\fail -> + case + (equalsInteger + 1 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 2 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 2 + [ arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]))))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]))) + (\d -> + matchData' + d + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]))) + (\d -> + matchData' + d + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (matchData' + ds + (\index + args -> + case + (equalsInteger + 0 + index) + [ (constr 1 + [ ]) + , (case (case - ds + args [ (\h t -> constr 0 @@ -5634,169 +5070,405 @@ [ (\ds ds -> case - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - (`$fFromDataMap_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - `$fFromDataInteger_$cfromBuiltinData`) + (`$fFromDataCredential_$cfromBuiltinData` ds) [ (\arg -> case (case ds [ (\h - t -> + ds -> constr 0 - [ (constr 0 - [ h - , t ]) ]) + [ h ]) , (constr 1 [ ]) ]) [ (\ds -> case - ds - [ (\ds - ds -> - case - (force - chooseData - ds - (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (force - ((\fail -> - case - (equalsInteger - 1 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> + (`$fFromDataMaybe_$cfromBuiltinData` + (\d -> + matchData' + d + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataCredential_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 1 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> constr 0 - [ (constr 2 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 2 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - constr 0 - [ (constr 1 - [ ds ]) ]) - , (constr 1 - [ ]) ]) ]))) - , (constr 0 - [ (constr 0 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - ds)) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (\ds -> - constr 1 - [ ]) - (constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataInteger_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg + , arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]))) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 [ ])) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataMaybe_$cfromBuiltinData` - `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg - , arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) , (constr 1 [ ]) ]) , (constr 1 [ ]) ]) ]) , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + (`$fFromDataMap_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + `$fFromDataInteger_$cfromBuiltinData`) + ds) + [ (\arg -> + case + (case + ds + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (matchData' + ds + (\index + args -> + case + (equalsInteger + 0 + index) + [ (force + ((\fail -> + case + (equalsInteger + 1 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 2 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 2 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + constr 0 + [ (constr 1 + [ ds ]) ]) + , (constr 1 + [ ]) ]) ]))) + , (constr 0 + [ (constr 0 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ])) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataMaybe_$cfromBuiltinData` + `$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg + , arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]) + (\ds -> + constr 1 + [ ]))) + (\d -> + matchData' + d + (\index + args -> + force + ((\fail -> + case + (equalsInteger + 0 + index) + [ (delay + (fail + ())) + , (delay + (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg ]) ]) + , (fail + ()) ]) + , (fail + ()) ])) ]) + (\ds -> + case + (equalsInteger + 1 + index) + [ (constr 1 + [ ]) + , (case + (case + args + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` + ds) + [ (\arg -> + constr 0 + [ (constr 1 + [ arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]))) (\ds -> constr 1 [ ]) @@ -5808,98 +5480,41 @@ [ ]) (\ds -> constr 1 - [ ]) - (constr 0 - [ ]))) - (\d -> + [ ]))) + (\d + constrCase + mapCase + listCase + iCase + bCase -> force chooseData d (\ds -> - (\tup -> - (\index -> - (\args -> - force - ((\fail -> - case - (equalsInteger - 0 - index) - [ (delay - (fail - ())) - , (delay - (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg ]) ]) - , (fail - ()) ]) - , (fail - ()) ])) ]) - (\ds -> - case - (equalsInteger - 1 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$fFromDataBuiltinBLS12_381_G1_Element_$cfromBuiltinData` - ds) - [ (\arg -> - constr 0 - [ (constr 1 - [ arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]))) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + case (unConstrData - d)) + d) + [ (\l + r -> + constrCase + l + r) ]) (\ds -> - constr 1 - [ ]) + mapCase + (unMapData + d)) (\ds -> - constr 1 - [ ]) + listCase + (unListData + d)) (\ds -> - constr 1 - [ ]) + iCase + (unIData + d)) (\ds -> - constr 1 - [ ]) + bCase + (unBData + d)) (constr 0 [ ]))) (\`$dFromData` @@ -5908,53 +5523,45 @@ chooseData d (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 1 - index) - [ (case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$dFromData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + case (unConstrData - d)) + d) + [ (\l + r -> + case + (equalsInteger + 1 + l) + [ (case + (equalsInteger + 0 + l) + [ (constr 1 + [ ]) + , (case + (case + r + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$dFromData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) ]) (\ds -> constr 1 [ ]) @@ -5977,21 +5584,13 @@ chooseData d (\ds -> - (\tup -> - (\ds -> - (\ds -> - constr 1 - [ ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + case (unConstrData - d)) + d) + [ (\l + r -> + constr 1 + [ ]) ]) (\ds -> case (go @@ -6033,17 +5632,19 @@ tups -> case (`$dFromData` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (\a -> case (`$dFromData` - (force - (force - sndPair) - tup)) + (case + tup + [ (\l + r -> + r) ])) [ (\ipv -> case (s @@ -6072,10 +5673,11 @@ s tups)) (`$dFromData` - (force - (force - sndPair) - tup))) ]) + (case + tup + [ (\l + r -> + r) ]))) ]) , (constr 0 [ (constr 0 [ ]) ]) ])))) @@ -6145,21 +5747,13 @@ chooseData d (\ds -> - (\tup -> - (\ds -> - (\ds -> - constr 1 - [ ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + case (unConstrData - d)) + d) + [ (\l + r -> + constr 1 + [ ]) ]) (\ds -> (\ds -> constr 1 @@ -6190,71 +5784,63 @@ chooseData d (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (constr 1 - [ ]) - , (case - (case - args - [ (\h - t -> - constr 0 - [ (constr 0 - [ h - , t ]) ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - ds - [ (\ds - ds -> - case - (`$dFromData` - ds) - [ (\arg -> - case - (case - ds - [ (\h - ds -> - constr 0 - [ h ]) - , (constr 1 - [ ]) ]) - [ (\ds -> - case - (`$dFromData` - ds) - [ (\arg -> - constr 0 - [ (constr 0 - [ arg - , arg ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) - , (constr 1 - [ ]) ]) ]) - , (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + case (unConstrData - d)) + d) + [ (\l + r -> + case + (equalsInteger + 0 + l) + [ (constr 1 + [ ]) + , (case + (case + r + [ (\h + t -> + constr 0 + [ (constr 0 + [ h + , t ]) ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + ds + [ (\ds + ds -> + case + (`$dFromData` + ds) + [ (\arg -> + case + (case + ds + [ (\h + ds -> + constr 0 + [ h ]) + , (constr 1 + [ ]) ]) + [ (\ds -> + case + (`$dFromData` + ds) + [ (\arg -> + constr 0 + [ (constr 0 + [ arg + , arg ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) + , (constr 1 + [ ]) ]) ]) + , (constr 1 + [ ]) ]) ]) ]) (\ds -> constr 1 []) (\ds -> @@ -6265,25 +5851,14 @@ constr 1 []) (constr 0 []))) (\d -> - force - chooseData + force chooseData d (\ds -> - (\tup -> - (\ds -> - (\ds -> - constr 1 - []) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d)) + case + (unConstrData d) + [ (\l r -> + constr 1 + []) ]) (\ds -> (\ds -> constr 1 []) diff --git a/plutus-benchmark/casing/bench/Bench.hs b/plutus-benchmark/casing/bench/Bench.hs index 646d1786e4a..0a3b05d182a 100644 --- a/plutus-benchmark/casing/bench/Bench.hs +++ b/plutus-benchmark/casing/bench/Bench.hs @@ -19,7 +19,13 @@ import Data.Functor benchmarks :: EvaluationContext -> [Benchmark] benchmarks ctx = [ bgroup "casing" - [mkBMs "bool" Casing.casingBool + [ mkBMs "pairFstSnd" Casing.pairFstSnd + , mkBMs "pairCasing" Casing.pairCasing + , mkBMs "chooseUnit" Casing.chooseUnit + , mkBMs "unitCasing" Casing.unitCasing + , mkBMs "headList" Casing.headList + , mkBMs "headListCasing" Casing.headListCasing + , mkBMs "bool" Casing.casingBool , mkBMs "bool one branch" Casing.casingBoolOneBranch , mkBMs "integer" Casing.casingInteger , mkBMs "list" Casing.casingList diff --git a/plutus-benchmark/casing/src/PlutusBenchmark/Casing.hs b/plutus-benchmark/casing/src/PlutusBenchmark/Casing.hs index 7ad727a1c43..53ec9b87db7 100644 --- a/plutus-benchmark/casing/src/PlutusBenchmark/Casing.hs +++ b/plutus-benchmark/casing/src/PlutusBenchmark/Casing.hs @@ -6,7 +6,9 @@ module PlutusBenchmark.Casing where import Control.Monad.Except import Data.Either import PlutusBenchmark.Common (Term) -import PlutusCore (DefaultUni (..), SomeTypeIn (..), Type (..), freshName, runQuote, someValueOf) +import PlutusCore (DefaultUni (..), SomeTypeIn (..), Type (..), freshName, runQuote) +import PlutusCore qualified as PLC +import PlutusCore.Builtin qualified as PLC import PlutusCore.MkPlc import UntypedPlutusCore qualified as UPLC @@ -16,35 +18,37 @@ debruijnTermUnsafe = fromRight (Prelude.error "debruijnTermUnsafe") . runExcept @UPLC.FreeVariableError . UPLC.deBruijnTerm nonMatchingBranch :: TermLike term tyname name UPLC.DefaultUni UPLC.DefaultFun => term () -nonMatchingBranch = constant () $ someValueOf DefaultUniInteger $ -1 +nonMatchingBranch = mkConstant @Integer () (-1) -- Note that we don't need to generate casings for the none maching branches because -- only matching branches get executed. -- | Generate a term that does a lot of casing on boolean casingBool :: Integer -> Term -casingBool 0 = constant () $ someValueOf DefaultUniInteger 42 +casingBool 0 = mkConstant @Integer () 42 casingBool i | i `mod` 2 == 0 = kase () (TyBuiltin () (SomeTypeIn DefaultUniInteger)) - (constant () $ someValueOf DefaultUniBool False) + (mkConstant @Bool () False) [casingBool (i-1), nonMatchingBranch] | otherwise = kase () (TyBuiltin () (SomeTypeIn DefaultUniInteger)) - (constant () $ someValueOf DefaultUniBool True) + (mkConstant @Bool () True) [nonMatchingBranch, casingBool (i-1)] +-- | Generate a term that does a lot of boolean casing with single branch. casingBoolOneBranch :: Integer -> Term -casingBoolOneBranch 0 = constant () $ someValueOf DefaultUniInteger 42 +casingBoolOneBranch 0 = mkConstant @Integer () 42 casingBoolOneBranch i = kase () (TyBuiltin () (SomeTypeIn DefaultUniInteger)) - (constant () $ someValueOf DefaultUniBool False) + (mkConstant @Bool () False) [casingBoolOneBranch (i-1)] +-- | Generate a term that does a lot of integer casing. casingInteger :: Integer -> Term -casingInteger 0 = constant () $ someValueOf DefaultUniInteger 42 +casingInteger 0 = mkConstant @Integer () 42 casingInteger i = let numBranches = 5 @@ -52,12 +56,13 @@ casingInteger i = currentI = i `mod` numBranches in kase () (TyBuiltin () (SomeTypeIn DefaultUniInteger)) - (constant () $ someValueOf DefaultUniInteger currentI) + (mkConstant @Integer () currentI) (replicate (fromIntegral currentI) nonMatchingBranch <> [casingInteger (i-1)] <> replicate (fromIntegral $ numBranches - 1 - currentI) nonMatchingBranch ) +-- | UPLC 'cons' parameterized in Haskell. listConsHandler :: TermLike term tyname UPLC.Name UPLC.DefaultUni UPLC.DefaultFun => (term () -> term () -> term ()) -> term () @@ -69,14 +74,11 @@ listConsHandler f = runQuote $ do lamAbs () xs (TyBuiltin () (SomeTypeIn $ DefaultUniApply DefaultUniProtoList DefaultUniInteger)) $ f (var () x) (var () xs) - +-- | Generate a term that does a lot of casing on list. casingList :: Integer -> Term casingList i = debruijnTermUnsafe $ go i arg where - arg = - constant () $ - someValueOf (DefaultUniApply DefaultUniProtoList DefaultUniInteger) $ replicate (fromIntegral i) 42 - + arg = mkConstant @[Integer] () $ replicate (fromIntegral i) 42 go 0 t = t go n t = kase () @@ -84,13 +86,13 @@ casingList i = debruijnTermUnsafe $ go i arg t [listConsHandler (\_x xs -> go (n-1) xs), nonMatchingBranch] - +-- | Generate a term that does a lot of casing on list with one branch. casingListOneBranch :: Integer -> Term casingListOneBranch i = debruijnTermUnsafe $ go i arg where arg = - constant () $ - someValueOf (DefaultUniApply DefaultUniProtoList DefaultUniInteger) $ replicate (fromIntegral i) 42 + mkConstant @[Integer] () $ + replicate (fromIntegral i) 42 go 0 t = t go n t = @@ -98,3 +100,106 @@ casingListOneBranch i = debruijnTermUnsafe $ go i arg (TyBuiltin () (SomeTypeIn $ DefaultUniApply DefaultUniProtoList DefaultUniInteger)) t [listConsHandler (\_x xs -> go (n-1) xs)] + +-- | Generate a term that does a lot of casing on pairs using 'FstPair' and 'SndPair'. It +-- will case first and then second term on each iteration. +pairFstSnd :: Integer -> Term +pairFstSnd i = + debruijnTermUnsafe $ + foldr (const comp) (mkConstant @Integer () 0) [1..i] + where + intTy = PLC.mkTyBuiltin @_ @Integer () + pairVal = mkConstant @(Integer, Integer) () (42, 42) + comp t = runQuote $ do + x <- freshName "x" + y <- freshName "y" + pure $ + apply () + (apply () + (lamAbs () x intTy $ + lamAbs () y intTy $ + t) + (apply () (tyInst () (tyInst () (builtin () PLC.FstPair) intTy) intTy) pairVal)) + (apply () (tyInst () (tyInst () (builtin () PLC.SndPair) intTy) intTy) pairVal) + +-- | Generate a term that does a lot of casing on pairs. It will case first and then +-- second term on each iteration. +pairCasing :: Integer -> Term +pairCasing i = + debruijnTermUnsafe $ + foldr (const comp) (mkConstant @Integer () 0) [1..i] + where + intTy = PLC.mkTyBuiltin @_ @Integer () + pairVal = mkConstant @(Integer, Integer) () (42, 42) + comp t = runQuote $ do + x <- freshName "x" + y <- freshName "y" + fstL <- freshName "fstL" + fstR <- freshName "fstR" + sndL <- freshName "sndL" + sndR <- freshName "sndR" + pure $ + apply () + (apply () + (lamAbs () x intTy $ + lamAbs () y intTy $ + t) + (kase () intTy pairVal [lamAbs () sndL intTy $ lamAbs () sndR intTy $ var () sndL])) + (kase () intTy pairVal [lamAbs () fstL intTy $ lamAbs () fstR intTy $ var () fstR]) + +-- | Generate a term that does a lot of casing on unit using 'ChooseUnit'. +chooseUnit :: Integer -> Term +chooseUnit i = + debruijnTermUnsafe $ + foldr (const comp) (mkConstant @Integer () 0) [1..i] + where + intTy = PLC.mkTyBuiltin @_ @Integer () + unitVal = mkConstant () () + comp t = + apply () + (apply () (tyInst () (builtin () PLC.ChooseUnit) intTy) unitVal) + t + +-- | Generate a term that does a lot of casing on unit. +unitCasing :: Integer -> Term +unitCasing i = + debruijnTermUnsafe $ + foldr (const comp) (mkConstant @Integer () 0) [1..i] + where + intTy = PLC.mkTyBuiltin @_ @Integer () + unitVal = mkConstant () () + comp t = + kase () intTy unitVal [t] + +-- | Generate a term that does a lot of casing on head of list using 'HeadList' +headList :: Integer -> Term +headList i = + debruijnTermUnsafe $ + foldr (const comp) (mkConstant @Integer () 0) [1..i] + where + intTy = PLC.mkTyBuiltin @_ @Integer () + listVal = mkConstant @[Integer] () [1, 2, 3] + comp t = runQuote $ do + x <- freshName "x" + pure $ + apply () + (lamAbs () x intTy t) + (apply () (tyInst () (builtin () PLC.HeadList) intTy) listVal) + +-- | Generate a term that does a lot of casing on head of list. +headListCasing :: Integer -> Term +headListCasing i = + debruijnTermUnsafe $ + foldr (const comp) (mkConstant @Integer () 0) [1..i] + where + intTy = PLC.mkTyBuiltin @_ @Integer () + intListTy = PLC.mkTyBuiltin @_ @[Integer] () + listVal = mkConstant @[Integer] () [1, 2, 3] + comp t = runQuote $ do + x <- freshName "x" + y <- freshName "y" + ys <- freshName "ys" + pure $ + apply () + (lamAbs () x intTy t) + (kase () intTy listVal [lamAbs () y intTy $ lamAbs () ys intListTy $ var () y]) diff --git a/plutus-benchmark/coop/test/9.6/authMpBurning.eval.golden b/plutus-benchmark/coop/test/9.6/authMpBurning.eval.golden index 4b87f6112c1..630b1fe145c 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: 263_521_586 -Memory: 1_021_910 -Term Size: 1_720 -Flat Size: 5_582 +CPU: 160_613_384 +Memory: 799_466 +Term Size: 1_473 +Flat Size: 5_393 (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 5856fcbc6ba..b79bebb1044 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: 568_485_855 -Memory: 2_315_312 -Term Size: 1_720 -Flat Size: 6_979 +CPU: 369_713_157 +Memory: 1_849_456 +Term Size: 1_473 +Flat Size: 6_790 (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 cdc3587f60d..7c8bd63001c 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_990_939_611 -Memory: 11_112_742 -Term Size: 3_433 -Flat Size: 8_250 +CPU: 1_842_342_144 +Memory: 10_767_218 +Term Size: 3_160 +Flat Size: 8_041 (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 1ae6b0ebf2c..5218608f1e9 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: 603_286_060 -Memory: 2_503_588 -Term Size: 3_433 -Flat Size: 8_773 +CPU: 400_086_379 +Memory: 2_025_456 +Term Size: 3_160 +Flat Size: 8_564 (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 11779d8000e..3d4f9a88179 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: 313_686_064 -Memory: 1_359_255 -Term Size: 3_883 -Flat Size: 7_645 +CPU: 221_694_924 +Memory: 1_160_575 +Term Size: 3_571 +Flat Size: 7_405 (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 9a412a91c82..2b053bf99c6 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: 747_548_650 -Memory: 3_472_715 -Term Size: 3_883 -Flat Size: 9_463 +CPU: 568_150_641 +Memory: 3_047_567 +Term Size: 3_571 +Flat Size: 9_223 (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 0e46abd5092..4533b5ef006 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: 181_130_390 -Memory: 716_465 -Term Size: 1_508 -Flat Size: 4_012 +CPU: 114_113_035 +Memory: 579_805 +Term Size: 1_274 +Flat Size: 3_833 (con unit ()) \ No newline at end of file diff --git a/plutus-benchmark/ed25519-costs/test/9.6/ed25519-costs.golden b/plutus-benchmark/ed25519-costs/test/9.6/ed25519-costs.golden index a66c3ed938d..2c797183198 100644 --- a/plutus-benchmark/ed25519-costs/test/9.6/ed25519-costs.golden +++ b/plutus-benchmark/ed25519-costs/test/9.6/ed25519-costs.golden @@ -1,20 +1,20 @@ n Script size CPU usage Memory usage ---------------------------------------------------------------------- - 0 414 (2.5%) 2399591 (0.0%) 11693 (0.1%) - 10 2141 (13.1%) 591133071 (5.9%) 273693 (2.0%) - 20 3868 (23.6%) 1179866551 (11.8%) 535693 (3.8%) - 30 5595 (34.1%) 1768600031 (17.7%) 797693 (5.7%) - 40 7322 (44.7%) 2357333511 (23.6%) 1059693 (7.6%) - 50 9048 (55.2%) 2946066991 (29.5%) 1321693 (9.4%) - 60 10775 (65.8%) 3534800471 (35.3%) 1583693 (11.3%) - 70 12502 (76.3%) 4123533951 (41.2%) 1845693 (13.2%) - 80 14228 (86.8%) 4712267431 (47.1%) 2107693 (15.1%) - 90 15955 (97.4%) 5301000911 (53.0%) 2369693 (16.9%) - 100 17682 (107.9%) 5889734391 (58.9%) 2631693 (18.8%) - 110 19409 (118.5%) 6478467871 (64.8%) 2893693 (20.7%) - 120 21135 (129.0%) 7067201351 (70.7%) 3155693 (22.5%) - 130 22862 (139.5%) 7655934831 (76.6%) 3417693 (24.4%) - 140 24589 (150.1%) 8244668311 (82.4%) 3679693 (26.3%) - 150 26316 (160.6%) 8833401791 (88.3%) 3941693 (28.2%) + 0 374 (2.3%) 1907704 (0.0%) 10329 (0.1%) + 10 2101 (12.8%) 585722314 (5.9%) 258689 (1.8%) + 20 3828 (23.4%) 1169536924 (11.7%) 507049 (3.6%) + 30 5555 (33.9%) 1753351534 (17.5%) 755409 (5.4%) + 40 7282 (44.4%) 2337166144 (23.4%) 1003769 (7.2%) + 50 9008 (55.0%) 2920980754 (29.2%) 1252129 (8.9%) + 60 10735 (65.5%) 3504795364 (35.0%) 1500489 (10.7%) + 70 12462 (76.1%) 4088609974 (40.9%) 1748849 (12.5%) + 80 14188 (86.6%) 4672424584 (46.7%) 1997209 (14.3%) + 90 15915 (97.1%) 5256239194 (52.6%) 2245569 (16.0%) + 100 17642 (107.7%) 5840053804 (58.4%) 2493929 (17.8%) + 110 19369 (118.2%) 6423868414 (64.2%) 2742289 (19.6%) + 120 21095 (128.8%) 7007683024 (70.1%) 2990649 (21.4%) + 130 22822 (139.3%) 7591497634 (75.9%) 3239009 (23.1%) + 140 24549 (149.8%) 8175312244 (81.8%) 3487369 (24.9%) + 150 26276 (160.4%) 8759126854 (87.6%) 3735729 (26.7%) Off-chain version succeeded on 100 inputs 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 762f7449b84..77a703753c2 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: 37_251_711 -Memory: 144_343 -Term Size: 2_512 -Flat Size: 2_913 +CPU: 30_837_131 +Memory: 131_619 +Term Size: 2_421 +Flat Size: 2_860 (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 5427e1b1a42..d92ab58cfb2 100644 --- a/plutus-benchmark/linear-vesting/test/9.6/main.pir.golden +++ b/plutus-benchmark/linear-vesting/test/9.6/main.pir.golden @@ -35,7 +35,10 @@ (all dead. bool) (equalsInteger `$bScriptCredential` - (fstPair {integer} {list data} tup)) + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> False) , (/\dead -> let @@ -45,18 +48,29 @@ (all dead. bool) (equalsInteger `$bScriptCredential` - (fstPair {integer} {list data} tup)) + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> False) , (/\dead -> equalsByteString (unBData (headList {data} - (sndPair {integer} {list data} tup))) + (case + (list data) + tup + [ (\(l : integer) (r : list data) -> + r) ]))) (unBData (headList {data} - (sndPair {integer} {list data} tup)))) ] + (case + (list data) + tup + [ (\(l : integer) (r : list data) -> + r) ])))) ] {all dead. dead}) ] {all dead. dead} !tup : pair integer (list data) = unConstrData ds @@ -65,7 +79,7 @@ (all dead. bool) (equalsInteger `$bPubKeyCredential` - (fstPair {integer} {list data} tup)) + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let @@ -75,18 +89,27 @@ (all dead. bool) (equalsInteger `$bPubKeyCredential` - (fstPair {integer} {list data} tup)) + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> equalsByteString (unBData (headList {data} - (sndPair {integer} {list data} tup))) + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)]))) (unBData (headList {data} - (sndPair {integer} {list data} tup)))) ] + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])))) ] {all dead. dead}) ] {all dead. dead} !`$mStakingPtr` : @@ -102,11 +125,15 @@ (all dead. r) (equalsInteger `$bScriptCredential` - (fstPair {integer} {list data} tup)) + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l in cont @@ -120,7 +147,12 @@ !txOutRefId : data -> bytestring = \(ds : data) -> unBData - (headList {data} (sndPair {integer} {list data} (unConstrData ds))) + (headList + {data} + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)])) !txOutRefIdx : data -> integer = \(ds : data) -> unIData @@ -128,7 +160,10 @@ {data} (tailList {data} - (sndPair {integer} {list data} (unConstrData ds)))) + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)]))) !`$mPubKeyCredential` : all r. data -> (bytestring -> r) -> (unit -> r) -> r = /\r -> \(scrut : data) (cont : bytestring -> r) (fail : unit -> r) -> @@ -139,17 +174,22 @@ (all dead. r) (equalsInteger `$bPubKeyCredential` - (fstPair {integer} {list data} tup)) + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> cont (unBData (headList {data} - (sndPair {integer} {list data} tup)))) ] + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])))) ] {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 @@ -157,18 +197,19 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) !`$mSpendingScript` : all r. data -> (data -> Maybe data -> r) -> (unit -> r) -> r = /\r -> @@ -178,11 +219,17 @@ in case (all dead. r) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (headList {data} l) @@ -208,11 +255,18 @@ [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> Maybe data) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> - Just {data} (sndPair {data} {data} hd)) ] + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] {all dead. dead}) , (Nothing {data}) ] in @@ -282,18 +336,26 @@ (all dead. r) (equalsInteger `$bScriptCredential` - (fstPair {integer} {list data} tup)) + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> cont (unBData (headList {data} - (sndPair {integer} {list data} tup)))) ] + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])))) ] {all dead. dead} !addressCredential : data -> data = \(ds : data) -> - headList {data} (sndPair {integer} {list data} (unConstrData ds)) + headList + {data} + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)]) !traceError : all a. string -> a = /\a -> \(str : string) -> let !x : Unit = trace {Unit} str Unit in error {a} @@ -301,38 +363,49 @@ = \(ds : (\a -> data) integer) -> let !l : list data - = sndPair - {integer} - {list data} + = case + (list data) (unConstrData (headList {data} - (sndPair {integer} {list data} (unConstrData ds)))) + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)]))) + [(\(l : integer) (r : list data) -> r)] !tup : pair integer (list data) = unConstrData (headList {data} l) in case (all dead. integer) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> traceError {integer} "Time range not Finite") , (/\dead -> let !posixTime : integer = unIData - (headList {data} (sndPair {integer} {list data} tup)) + (headList + {data} + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])) in case (all dead. integer) - (let - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) + (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)) [(/\dead -> addInteger 1 posixTime), (/\dead -> posixTime)] {all dead. dead}) ] {all dead. dead} @@ -347,7 +420,10 @@ (fail : unit -> r) -> let !l : list data - = sndPair {integer} {list data} (unConstrData scrut) + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l in cont @@ -387,7 +463,12 @@ = \(ds : data) -> headList {data} - (tailList {data} (sndPair {integer} {list data} (unConstrData ds))) + (tailList + {data} + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)])) !`$mTxInfo` : all r. data -> @@ -441,7 +522,10 @@ (fail : unit -> r) -> let !l : list data - = sndPair {integer} {list data} (unConstrData scrut) + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l !l : list data = tailList {data} l !l : list data = tailList {data} l @@ -534,7 +618,10 @@ (fail : unit -> r) -> let !l : list data - = sndPair {integer} {list data} (unConstrData scrut) + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l !l : list data = tailList {data} l in @@ -585,7 +672,10 @@ {data} (tailList {data} - (sndPair {integer} {list data} (unConstrData ds)))) + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)]))) !find : all a. (\a -> data -> a) a -> (a -> bool) -> (\a -> list data) a -> Maybe a @@ -698,25 +788,28 @@ {Unit -> Maybe VestingRedeemer} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (all dead. Maybe VestingRedeemer) - (equalsInteger 0 index) - [ (/\dead -> - case - (all dead. Maybe VestingRedeemer) - (equalsInteger 1 index) - [ (/\dead -> Nothing {VestingRedeemer}) - , (/\dead -> - Just {VestingRedeemer} FullUnlock) ] - {all dead. dead}) - , (/\dead -> Just {VestingRedeemer} PartialUnlock) ] - {all dead. dead}) + casePair + {integer} + {list data} + {Maybe VestingRedeemer} + (unConstrData d) + (\(l : integer) (r : list data) -> + case + (all dead. Maybe VestingRedeemer) + (equalsInteger 0 l) + [ (/\dead -> + case + (all dead. Maybe VestingRedeemer) + (equalsInteger 1 l) + [ (/\dead -> Nothing {VestingRedeemer}) + , (/\dead -> + Just + {VestingRedeemer} + FullUnlock) ] + {all dead. dead}) + , (/\dead -> + Just {VestingRedeemer} PartialUnlock) ] + {all dead. dead})) (\(ds : Unit) -> Nothing {VestingRedeemer}) (\(ds : Unit) -> Nothing {VestingRedeemer}) (\(ds : Unit) -> Nothing {VestingRedeemer}) @@ -764,68 +857,72 @@ !ds : Solo VestingDatum = MkSolo {VestingDatum} - (let - !tup : pair integer (list data) - = unConstrData ipv - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} l) - !index : integer - = fstPair - {integer} - {list data} - tup - !args : list data - = sndPair + (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} - tup - in - 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) + {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)) !vestingDatum : VestingDatum = Solo_match {VestingDatum} @@ -923,68 +1020,72 @@ !ds : Solo VestingDatum = MkSolo {VestingDatum} - (let - !tup : pair integer (list data) - = unConstrData ipv - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} l) - !index : integer - = fstPair + (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} - tup - !args : list data - = sndPair - {integer} - {list data} - tup - in - 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) + {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)) !vestingDatum : VestingDatum = Solo_match {VestingDatum} @@ -1115,10 +1216,12 @@ !l : data = headList {data} - (sndPair - {integer} - {list data} - (unConstrData eta)) + (case + (list data) + (unConstrData eta) + [ (\(l : integer) + (r : list data) -> + r) ]) in case (all dead. bool) @@ -1235,17 +1338,25 @@ (\(eta : data) -> let !l : list data - = sndPair - {integer} - {list data} + = case + (list data) (unConstrData (txOutAddress eta)) + [ (\(l : integer) + (r : + list + data) -> + r) ] !l : list data - = sndPair - {integer} - {list data} + = case + (list data) (unConstrData nt) + [ (\(l : integer) + (r : + list + data) -> + r) ] in case (all dead. bool) @@ -1348,11 +1459,15 @@ bool) (equalsInteger `$bPubKeyCredential` - (fstPair - {integer} - {list - data} - tup)) + (case + integer + tup + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) @@ -1371,11 +1486,15 @@ bool) (equalsInteger `$bPubKeyCredential` - (fstPair - {integer} - {list - data} - tup)) + (case + integer + tup + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) @@ -1383,18 +1502,28 @@ `$fEqCredential_$c==` (headList {data} - (sndPair - {integer} - {list - data} - tup)) + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ])) (headList {data} - (sndPair - {integer} - {list - data} - tup))) ] + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ]))) ] {all dead. dead}) ] {all dead. @@ -1662,11 +1791,15 @@ bool) (equalsInteger `$bOutputDatum` - (fstPair - {integer} - {list - data} - tup)) + (case + integer + tup + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> False) , (/\dead -> @@ -1684,29 +1817,43 @@ bool) (equalsInteger `$bOutputDatum` - (fstPair - {integer} - {list - data} - tup)) + (case + integer + tup + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> False) , (/\dead -> equalsData (headList {data} - (sndPair - {integer} - {list - data} - tup)) + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ])) (headList {data} - (sndPair - {integer} - {list - data} - tup))) ] + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ]))) ] {all dead. dead}) ] {all dead. @@ -1730,11 +1877,15 @@ bool) (equalsInteger `$bOutputDatumHash` - (fstPair - {integer} - {list - data} - tup)) + (case + integer + tup + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) @@ -1753,11 +1904,15 @@ bool) (equalsInteger `$bOutputDatumHash` - (fstPair - {integer} - {list - data} - tup)) + (case + integer + tup + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) @@ -1766,19 +1921,29 @@ (unBData (headList {data} - (sndPair - {integer} - {list - data} - tup))) + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ]))) (unBData (headList {data} - (sndPair - {integer} - {list - data} - tup)))) ] + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ])))) ] {all dead. dead}) ] {all dead. @@ -1789,12 +1954,16 @@ bool) (equalsInteger `$bNoOutputDatum` - (fstPair - {integer} - {list - data} + (case + integer (unConstrData - ds))) + ds) + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) @@ -1804,12 +1973,16 @@ bool) (equalsInteger `$bNoOutputDatum` - (fstPair - {integer} - {list - data} + (case + integer (unConstrData - ds))) + ds) + [ (\(l : + integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) 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 cd9cfe1853e..47d8a4625d5 100644 --- a/plutus-benchmark/linear-vesting/test/9.6/main.uplc.golden +++ b/plutus-benchmark/linear-vesting/test/9.6/main.uplc.golden @@ -55,35 +55,27 @@ chooseData d (\ds -> - (\tup -> - (\index -> - (\args -> - case - (equalsInteger - 0 - index) - [ (case - (equalsInteger - 1 - index) - [ (constr 1 - [ ]) - , (constr 0 - [ (constr 0 - [ ]) ]) ]) - , (constr 0 - [ (constr 1 - [ ]) ]) ]) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + case (unConstrData - d)) + d) + [ (\l + r -> + case + (equalsInteger + 0 + l) + [ (case + (equalsInteger + 1 + l) + [ (constr 1 + [ ]) + , (constr 0 + [ (constr 0 + [ ]) ]) ]) + , (constr 0 + [ (constr 1 + [ ]) ]) ]) ]) (\ds -> constr 1 [ ]) @@ -181,99 +173,83 @@ txInfo))) (scriptContextTxInfo ctx)) ]) - ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - constr 0 - [ (force - headList - ds) - , ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (unBData - (force - headList - ds)) - , (unBData - (force - headList - (force - tailList - ds))) ]) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - l))) - , (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 - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + (case (unConstrData - ipv))) ]) + 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 "Full unlock requested" @@ -345,11 +321,12 @@ ipv)) ]) (force headList - (force - (force - sndPair) + (case (unConstrData - eta)))) + eta) + [ (\l + r -> + r) ]))) nt) [ (\ownVestingInput -> constr 0 @@ -433,11 +410,12 @@ case (equalsInteger `$bNoOutputDatum` - (force - (force - fstPair) + (case (unConstrData - ds))) + ds) + [ (\l + r -> + l) ])) [ (delay (fail ())) @@ -445,11 +423,12 @@ (case (equalsInteger `$bNoOutputDatum` - (force - (force - fstPair) + (case (unConstrData - nt))) + nt) + [ (\l + r -> + l) ])) [ (fail ()) , True ])) ]) @@ -459,37 +438,41 @@ case (equalsInteger `$bOutputDatumHash` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , ((\tup -> case (equalsInteger `$bOutputDatumHash` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , (equalsByteString (unBData (force headList - (force - (force - sndPair) - tup))) + (case + tup + [ (\l + r -> + r) ]))) (unBData (force headList - (force - (force - sndPair) - tup)))) ]) + (case + tup + [ (\l + r -> + r) ])))) ]) (unConstrData nt)) ]) (unConstrData @@ -499,33 +482,37 @@ case (equalsInteger `$bOutputDatum` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ False , ((\tup -> case (equalsInteger `$bOutputDatum` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ False , (equalsData (force headList - (force - (force - sndPair) - tup)) + (case + tup + [ (\l + r -> + r) ])) (force headList - (force - (force - sndPair) - tup))) ]) + (case + tup + [ (\l + r -> + r) ]))) ]) (unConstrData nt)) ]) (unConstrData @@ -622,10 +609,11 @@ case (equalsInteger `$bPubKeyCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (delay (fail ())) @@ -634,25 +622,28 @@ case (equalsInteger `$bPubKeyCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , (`$fEqCredential_$c==` (force headList - (force - (force - sndPair) - tup)) + (case + tup + [ (\l + r -> + r) ])) (force headList - (force - (force - sndPair) - tup))) ]) + (case + tup + [ (\l + r -> + r) ]))) ]) (unConstrData a))) ]) (\ds -> @@ -697,17 +688,19 @@ [ (\ipv -> False) , True ]) ]) ]) - (force - (force - sndPair) + (case (unConstrData - nt))) - (force - (force - sndPair) + nt) + [ (\l + r -> + r) ])) + (case (unConstrData (txOutAddress - eta)))) + eta)) + [ (\l + r -> + r) ])) (`$mTxInfo` txInfo (\ds @@ -834,99 +827,83 @@ ds ds -> ds) ]) ])) - ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - (\l -> - (\l -> - (\l -> - (\l -> - (\l -> - constr 0 - [ (force - headList - ds) - , ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (unBData - (force - headList - ds)) - , (unBData - (force - headList - (force - tailList - ds))) ]) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - l))) - , (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 - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + (case (unConstrData - ipv))) ]) + 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" @@ -955,10 +932,11 @@ case (equalsInteger `$bPubKeyCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (delay (fail ())) @@ -967,27 +945,30 @@ case (equalsInteger `$bPubKeyCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , (equalsByteString (unBData (force headList - (force - (force - sndPair) - tup))) + (case + tup + [ (\l + r -> + r) ]))) (unBData (force headList - (force - (force - sndPair) - tup)))) ]) + (case + tup + [ (\l + r -> + r) ])))) ]) (unConstrData ds))) ]) (\ds -> @@ -995,35 +976,39 @@ case (equalsInteger `$bScriptCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ False , ((\tup -> case (equalsInteger `$bScriptCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ False , (equalsByteString (unBData (force headList - (force - (force - sndPair) - tup))) + (case + tup + [ (\l + r -> + r) ]))) (unBData (force headList - (force - (force - sndPair) - tup)))) ]) + (case + tup + [ (\l + r -> + r) ])))) ]) (unConstrData ds)) ]) (unConstrData @@ -1037,10 +1022,11 @@ case (equalsInteger `$bScriptCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , ((\l -> @@ -1063,10 +1049,11 @@ (force tailList l)) - (force - (force - sndPair) - tup)) ]) + (case + tup + [ (\l + r -> + r) ])) ]) (unConstrData scrut))) 0) @@ -1076,22 +1063,24 @@ unBData (force headList - (force - (force - sndPair) + (case (unConstrData - ds))))) + ds) + [ (\l + r -> + r) ])))) (\ds -> unIData (force headList (force tailList - (force - (force - sndPair) + (case (unConstrData - ds)))))) + ds) + [ (\l + r -> + r) ]))))) (\scrut cont fail -> @@ -1099,20 +1088,22 @@ case (equalsInteger `$bPubKeyCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , (cont (unBData (force headList - (force - (force - sndPair) - tup)))) ]) + (case + tup + [ (\l + r -> + r) ])))) ]) (unConstrData scrut))) 0) @@ -1123,10 +1114,11 @@ case (equalsInteger 1 - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , ((\l -> @@ -1141,10 +1133,11 @@ (force tailList l)))) - (force - (force - sndPair) - tup)) ]) + (case + tup + [ (\l + r -> + r) ])) ]) (unConstrData scrut))) (\d -> @@ -1189,17 +1182,19 @@ case (equalsData k - (force - (force - fstPair) - hd)) + (case + hd + [ (\l + r -> + l) ])) [ go , (\ds -> constr 0 - [ (force - (force - sndPair) - hd) ]) ]) + [ (case + hd + [ (\l + r -> + r) ]) ]) ]) , (constr 1 [ ]) ]))))) (\ds -> @@ -1220,69 +1215,65 @@ case (equalsInteger `$bScriptCredential` - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (fail ()) , (cont (unBData (force headList - (force - (force - sndPair) - tup)))) ]) + (case + tup + [ (\l + r -> + r) ])))) ]) (unConstrData scrut))) 1) (\ds -> force headList - (force - (force - sndPair) + (case (unConstrData - ds)))) + ds) + [ (\l + r -> + r) ]))) (\ds -> (\l -> (\tup -> case (equalsInteger 1 - (force - (force - fstPair) - tup)) + (case + tup + [ (\l + r -> + l) ])) [ (traceError "Time range not Finite") , ((\posixTime -> case - ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + (case (unConstrData (force headList (force tailList - l)))) + l))) + [ (\index + args -> + case + index + [ (\ds -> + False) + , (\ds -> + True) ] + args) ]) [ (addInteger 1 posixTime) @@ -1290,25 +1281,28 @@ (unIData (force headList - (force - (force - sndPair) - tup)))) ]) + (case + tup + [ (\l + r -> + r) ])))) ]) (unConstrData (force headList l))) - (force - (force - sndPair) + (case (unConstrData (force headList - (force - (force - sndPair) + (case (unConstrData - ds))))))) + ds) + [ (\l + r -> + r) ]))) + [ (\l + r -> + r) ]))) (\str -> (\x -> error) (force trace @@ -1340,9 +1334,10 @@ tailList l))) (force tailList l)) - (force (force sndPair) + (case (unConstrData - scrut)))) + scrut) + [(\l r -> r)]))) (\ds -> case ds @@ -1357,8 +1352,9 @@ (\ds -> force headList (force tailList - (force (force sndPair) - (unConstrData ds))))) + (case + (unConstrData ds) + [(\l r -> r)])))) (\ds -> `$mTxInfo` ds @@ -1406,14 +1402,16 @@ (force tailList l)))) (force tailList l)) (force tailList l)) - (force (force sndPair) - (unConstrData scrut)))) + (case + (unConstrData scrut) + [(\l r -> r)]))) (\ds -> unMapData (force headList (force tailList - (force (force sndPair) - (unConstrData ds)))))) + (case + (unConstrData ds) + [(\l r -> r)]))))) (\ds k -> `$mTxInfo` ds @@ -1549,22 +1547,19 @@ (force tailList l)) (force tailList l)) (force tailList l)) - (force (force sndPair) (unConstrData scrut)))) + (case (unConstrData scrut) [(\l r -> r)]))) (\`$dUnsafeFromData` d -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (`$dUnsafeFromData` - (force headList ds)) ]) - , (\ds -> constr 1 []) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData d))) + case + (unConstrData d) + [ (\index args -> + case + index + [ (\ds -> + constr 0 + [ (`$dUnsafeFromData` + (force headList ds)) ]) + , (\ds -> constr 1 []) ] + args) ])) (\`$dUnsafeFromData` pred' -> (\go eta -> go eta) (fix1 diff --git a/plutus-benchmark/lists/test/Sum/9.6/left-fold-data.eval.golden b/plutus-benchmark/lists/test/Sum/9.6/left-fold-data.eval.golden index 7f9bf7223f9..155300be209 100644 --- a/plutus-benchmark/lists/test/Sum/9.6/left-fold-data.eval.golden +++ b/plutus-benchmark/lists/test/Sum/9.6/left-fold-data.eval.golden @@ -1,6 +1,6 @@ -CPU: 215_205_083 -Memory: 916_629 -Term Size: 142 -Flat Size: 711 +CPU: 165_524_496 +Memory: 778_865 +Term Size: 129 +Flat Size: 701 (con integer 5050) \ No newline at end of file diff --git a/plutus-benchmark/lists/test/Sum/9.6/right-fold-data.eval.golden b/plutus-benchmark/lists/test/Sum/9.6/right-fold-data.eval.golden index ea8048f7547..46d689384ef 100644 --- a/plutus-benchmark/lists/test/Sum/9.6/right-fold-data.eval.golden +++ b/plutus-benchmark/lists/test/Sum/9.6/right-fold-data.eval.golden @@ -1,6 +1,6 @@ -CPU: 220_005_083 -Memory: 946_629 -Term Size: 145 -Flat Size: 714 +CPU: 170_324_496 +Memory: 808_865 +Term Size: 132 +Flat Size: 704 (con integer 5050) \ No newline at end of file diff --git a/plutus-benchmark/marlowe/test/budgets.golden.tsv b/plutus-benchmark/marlowe/test/budgets.golden.tsv index 612a1f64f17..965ffdf5dd4 100644 --- a/plutus-benchmark/marlowe/test/budgets.golden.tsv +++ b/plutus-benchmark/marlowe/test/budgets.golden.tsv @@ -1,200 +1,200 @@ -295761473 1426913 11394 -389858424 1595730 11394 -876929254 4339273 11394 -732189977 3312476 11394 -819575121 2257686 11394 -271895668 1317050 11394 -680779775 3169918 11394 -709634842 3434231 11394 -659430210 3032979 11394 -1060308502 4830236 11394 -1066902512 4628086 11394 -919857171 4407692 11394 -1030179082 4906465 11394 -1212713100 5640100 11394 -425701177 2070328 11394 -696032414 3317997 11394 -447596817 2173426 11394 -684058812 3291695 11394 -274117608 1321952 11394 -800599064 3674413 11394 -697261137 3072929 11394 -274172166 1321952 11394 -951598163 1203215 11394 -3866947314 1638898 11394 -308601075 1448040 11394 -271895668 1317050 11394 -474237675 2310955 11394 -1744403674 1576485 11394 -853524136 3166510 11394 -711405948 3445781 11394 -675925861 3016916 11394 -968117873 4684772 11394 -274117608 1321952 11394 -420045255 2049418 11394 -539944462 2614686 11394 -648521396 3031249 11394 -271895668 1317050 11394 -769599144 3574194 11394 -271895668 1317050 11394 -921121102 4452913 11394 -619593546 2999808 11394 -350606975 1496690 11394 -339643144 1612041 11394 -352330680 1674119 11394 -271895668 1317050 11394 -658982311 3189845 11394 -271895668 1317050 11394 -436823857 2121612 11394 -954831812 4432279 11394 -919469782 4361558 11394 -465681982 2225855 11394 -274117608 1321952 11394 -634091352 3020826 11394 -438709027 2130204 11394 -573236178 2763821 11394 -2149885956 1835126 11394 -1284094596 5376446 11394 -931440357 4471745 11394 -3866947314 1638898 11394 -438991353 2126514 11394 -712135764 3334102 11394 -427977675 2075230 11394 -712613304 3412332 11394 -696945586 3400117 11394 -618887902 2998428 11394 -482664101 2273421 11394 -415099740 1911685 11394 -1273371711 5238496 11394 -970391429 4590789 11394 -308601075 1448040 11394 -274117608 1321952 11394 -1068035619 4852876 11394 -352330680 1674119 11394 -482664101 2273421 11394 -553036332 2614067 11394 -310268437 1439481 11394 -499999076 2398223 11394 -1213625000 5639745 11394 -669958121 3226447 11394 -845712574 4106713 11394 -653309981 3191669 11394 -712136108 3412939 11394 -941849162 1152263 11394 -768236226 3660263 11394 -736243341 3490574 11394 -443176158 2147149 11394 -17808776889 1012383 11394 -914752412 4439282 11394 -271895668 1317050 11394 -422267195 2054320 11394 -665439662 3225541 11394 -319350631 1404876 11394 -345549935 1639478 11394 -274117608 1321952 11394 -867711948 2470935 11394 -271895668 1317050 11394 -582752224 2679104 11394 -709865155 2869095 11394 -3746337883 1104197 11394 -822130926 3845828 11394 -226736709 1083424 2510 -306713481 1518648 2510 -238717460 1145293 2510 -203077161 959660 2510 -222792679 1057468 2510 -211924548 1001507 2510 -210986849 996305 2510 -248724322 1191113 2510 -236483818 1133282 2510 -222165363 1054248 2510 -239941217 1148528 2510 -240425296 1156908 2510 -275896411 1346536 2510 -207498640 982179 2510 -219014198 1040545 2510 -202977636 948399 2510 -238735572 1154381 2510 -216401455 1026620 2510 -216641584 1040752 2510 -244142161 1178454 2510 -210576424 999607 2510 -228917560 1093457 2510 -226736709 1083424 2510 -237416822 1141675 2510 -210125949 989908 2510 -207503145 978988 2510 -211022958 997303 2510 -206560865 976977 2510 -226631565 1075372 2510 -218452721 1035055 2510 -227758680 1089348 2510 -210125949 989908 2510 -203036471 961853 2510 -219268285 1042344 2510 -207498564 982179 2510 -207498564 982179 2510 -243352050 1173749 2510 -214661519 1017492 2510 -240721229 1164406 2510 -226736709 1083424 2510 -246432587 1178186 2510 -210085259 992101 2510 -210085259 992101 2510 -215743891 1027220 2510 -267796090 1305427 2510 -251923367 1213008 2510 -219687921 1053176 2510 -210085259 992101 2510 -280192787 1379554 2510 -238735572 1154381 2510 -215743891 1027220 2510 -246089021 1189734 2510 -229049360 1098721 2510 -206560865 976977 2510 -202977636 948399 2510 -210085259 992101 2510 -211022958 997303 2510 -210085259 992101 2510 -211022958 997303 2510 -233857050 1131391 2510 -242003926 1171849 2510 -243198387 1180844 2510 -225524966 1083597 2510 -214928327 1019931 2510 -221941737 1055019 2510 -230718342 1100233 2510 -202139576 954458 2510 -210085259 992101 2510 -249332135 1218047 2510 -211022958 997303 2510 -210085259 992101 2510 -211022958 997303 2510 -242450460 1169545 2510 -211022958 997303 2510 -271263575 1312718 2510 -294693839 1447941 2510 -211022958 997303 2510 -235401672 1139297 2510 -237416822 1141675 2510 -211924548 1001507 2510 -222000572 1068473 2510 -222315306 1060905 2510 -251021935 1220574 2510 -202977636 948399 2510 -211924548 1001507 2510 -234135409 1112128 2510 -229371500 1092771 2510 -235401672 1139297 2510 -215449976 1025421 2510 -217625212 1029855 2510 -218526802 1034059 2510 -211022958 997303 2510 -235187645 1120963 2510 -237416822 1141675 2510 -210085259 992101 2510 -207498564 982179 2510 -225839700 1076029 2510 -211022958 997303 2510 -218452721 1035055 2510 -244887389 1177234 2510 +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 diff --git a/plutus-benchmark/marlowe/test/data.budgets.golden.tsv b/plutus-benchmark/marlowe/test/data.budgets.golden.tsv index 2dfd186308b..176522eb5bb 100644 --- a/plutus-benchmark/marlowe/test/data.budgets.golden.tsv +++ b/plutus-benchmark/marlowe/test/data.budgets.golden.tsv @@ -1,200 +1,200 @@ -314788351 1461103 12665 -441426497 1771794 12665 -1102076273 5034666 12665 -841421574 3671889 12665 -885769505 2457380 12665 -290298546 1347340 12665 -775881126 3467129 12665 -844076642 3806876 12665 -762572349 3366638 12665 -1117430713 5033372 12665 -1140205976 4916484 12665 -1097873751 4949005 12665 -1256699897 5607974 12665 -1399714119 6243947 12665 -472759388 2210564 12665 -793597765 3630608 12665 -499709997 2348412 12665 -798944902 3593900 12665 -292520486 1352242 12665 -927641146 4033397 12665 -784030179 3334760 12665 -292575044 1352242 12665 -1001694236 1370079 12665 -3928225500 1850520 12665 -359785148 1621704 12665 -290298546 1347340 12665 -561220652 2636007 12665 -1803931138 1778783 12665 -919515600 3409208 12665 -844090329 3809758 12665 -762726903 3278947 12665 -1201614744 5413143 12665 -292520486 1352242 12665 -466537185 2202118 12665 -629373898 2886241 12665 -742934747 3324160 12665 -290298546 1347340 12665 -859776186 3857325 12665 -290298546 1347340 12665 -1141054664 5107165 12665 -715584904 3277603 12665 -402175048 1672754 12665 -359198022 1649531 12665 -372461558 1715209 12665 -290298546 1347340 12665 -792378374 3586670 12665 -290298546 1347340 12665 -483786068 2261248 12665 -1087910744 4798180 12665 -1067104965 4899412 12665 -512836193 2366691 12665 -292520486 1352242 12665 -740170949 3360539 12665 -485671238 2269840 12665 -658629220 3017052 12665 -2211285420 2049124 12665 -1360598060 5684844 12665 -1152294608 5138851 12665 -3928225500 1850520 12665 -485953564 2266150 12665 -809030658 3640011 12665 -475035886 2215466 12665 -837630072 3766309 12665 -841202762 3829064 12665 -699408366 3212127 12665 -513906370 2360445 12665 -468139813 2096949 12665 -1336741386 5441356 12665 -1166620989 5195841 12665 -359785148 1621704 12665 -292520486 1352242 12665 -1125157830 5056012 12665 -372461558 1715209 12665 -513906370 2360445 12665 -654132014 2932424 12665 -316768800 1435071 12665 -583984118 2642654 12665 -1391678416 6213070 12665 -793020694 3571005 12665 -974588006 4587395 12665 -792475392 3616143 12665 -856097482 3844370 12665 -991561235 1316727 12665 -913206881 4091651 12665 -867594373 3856950 12665 -490234369 2287385 12665 -17858104962 1174447 12665 -1152951507 5172009 12665 -290298546 1347340 12665 -468759125 2207020 12665 -793323185 3580691 12665 -370534704 1578540 12665 -397502008 1817942 12665 -292520486 1352242 12665 -927236480 2648151 12665 -290298546 1347340 12665 -685030363 3007363 12665 -774384619 3102593 12665 -3796049956 1268661 12665 -966959712 4264416 12665 -150505921 669865 1706 -331680557 1432489 1706 -189587365 817075 1706 -121771085 540048 1706 -152488897 667387 1706 -120122622 551610 1706 -121060321 556812 1706 -191789183 845941 1706 -184466282 805045 1706 -145132115 653098 1706 -171607567 766465 1706 -203023052 888723 1706 -254159828 1062432 1706 -120122698 551610 1706 -147397032 636823 1706 -112703745 494557 1706 -201374779 900285 1706 -148653243 650520 1706 -165909512 721367 1706 -207156072 882532 1706 -130673445 599910 1706 -160136714 701041 1706 -150505921 669865 1706 -182817933 816607 1706 -121771085 540048 1706 -121771085 540048 1706 -120122622 551610 1706 -121060321 556812 1706 -147548246 658128 1706 -139617091 640490 1706 -167320502 750792 1706 -121771085 540048 1706 -121060321 556812 1706 -152488897 667387 1706 -120122622 551610 1706 -120122622 551610 1706 -183457713 793682 1706 -134581292 604798 1706 -195500252 841840 1706 -150505921 669865 1706 -195166024 833478 1706 -121060321 556812 1706 -121060321 556812 1706 -152488897 667387 1706 -249706052 1062789 1706 -228913135 1017620 1706 -150505921 669865 1706 -121060321 556812 1706 -279363246 1210261 1706 -201374779 900285 1706 -152488897 667387 1706 -197916383 846870 1706 -164261163 732929 1706 -121060321 556812 1706 -112703745 494557 1706 -121060321 556812 1706 -120122622 551610 1706 -121060321 556812 1706 -120122622 551610 1706 -189829276 820765 1706 -194008536 841982 1706 -207167514 916677 1706 -164261163 732929 1706 -139617091 640490 1706 -149982264 654880 1706 -166069588 715445 1706 -122708670 545250 1706 -121060321 556812 1706 -228587268 998286 1706 -120122622 551610 1706 -121060321 556812 1706 -120122622 551610 1706 -183457713 793682 1706 -120122622 551610 1706 -231984983 996800 1706 -321371118 1416676 1706 -120122622 551610 1706 -183457713 793682 1706 -182817933 816607 1706 -120122622 551610 1706 -164261163 732929 1706 -149585891 652741 1706 -224313294 970930 1706 -112703745 494557 1706 -120122622 551610 1706 -158099069 706428 1706 -174461357 754352 1706 -183457713 793682 1706 -147387132 636823 1706 -130673445 599910 1706 -130673445 599910 1706 -120122622 551610 1706 -176730631 807846 1706 -182817933 816607 1706 -121060321 556812 1706 -120122622 551610 1706 -149585891 652741 1706 -120122622 551610 1706 -139617091 640490 1706 -197100729 872929 1706 +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 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 694fe28984a..0f96e395028 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: 178_413_382 -Memory: 707_086 -Term Size: 1_190 -Flat Size: 1_644 +CPU: 111_474_671 +Memory: 550_394 +Term Size: 956 +Flat Size: 1_465 (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 ba8fed00101..c31683facc1 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: 50_962_790 -Memory: 201_646 -Term Size: 1_190 -Flat Size: 1_258 +CPU: 32_459_423 +Memory: 156_122 +Term Size: 956 +Flat Size: 1_079 (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 0e417e28941..17994936a7e 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,28 +39,31 @@ (\(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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Tuple2 a b) - index - [ (\(ds : list data) -> - Tuple2 - {a} - {b} - (`$dUnsafeFromData` (headList {data} ds)) - (`$dUnsafeFromData` - (headList {data} (tailList {data} ds)))) ] - args + 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) @@ -93,43 +96,45 @@ let !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args + 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) !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 : @@ -160,40 +165,43 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : + data -> DCert = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -213,18 +221,19 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -247,9 +256,16 @@ (Tuple2 {k} {v} - (`$dUnsafeFromData` (fstPair {data} {data} tup)) (`$dUnsafeFromData` - (sndPair {data} {data} tup))) + (case + data + tup + [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]))) (go tups)) , (Nil {Tuple2 k v}) ] in @@ -264,48 +280,56 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - TxOut - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -323,77 +347,84 @@ let !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args + 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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 + !go : + list data -> List TxInInfo = \(xs : list data) -> case (List TxInInfo) xs - [ (\(x : data) (xs : list data) -> + [ (\(x : data) + (xs : list data) -> Cons {TxInInfo} - (let - !tup : pair integer (list data) = unConstrData x - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) + (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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args + 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 @@ -402,19 +433,20 @@ all a. (\a -> data -> a) a -> data -> Extended a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 Unit | Unit_match where Unit : Unit data ScriptPurpose | ScriptPurpose_match where @@ -450,160 +482,196 @@ in \(d : data) -> ScriptContext_match - (let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval - {integer} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup + (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 - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} ds)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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) + 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 + {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)) {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 e55dbc5cd26..13074505545 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 @@ -1190 \ No newline at end of file +956 \ 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 8bc19b949db..a61e86f09c4 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: 171_132_959 -Memory: 675_344 -Term Size: 1_133 -Flat Size: 1_569 +CPU: 104_194_248 +Memory: 518_652 +Term Size: 899 +Flat Size: 1_390 (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 a74559b54c6..b18eaa3c7ae 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: 48_885_695 -Memory: 192_336 -Term Size: 1_133 -Flat Size: 1_183 +CPU: 30_382_328 +Memory: 146_812 +Term Size: 899 +Flat Size: 1_004 (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 b15806c1293..577a21707cc 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,4 +1,6 @@ (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` : @@ -7,22 +9,23 @@ \(`$dUnsafeFromData` : (\a -> data -> a) a) (`$dUnsafeFromData` : (\a -> data -> a) b) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Tuple2 a b) - index - [ (\(ds : list data) -> - Tuple2 - {a} - {b} - (`$dUnsafeFromData` (headList {data} ds)) - (`$dUnsafeFromData` - (headList {data} (tailList {data} ds)))) ] - args + 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 @@ -63,46 +66,48 @@ ScriptCredential : bytestring -> Credential !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args + 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 !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 : @@ -133,40 +138,43 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : + data -> DCert = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -189,18 +197,19 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -223,9 +232,16 @@ (Tuple2 {k} {v} - (`$dUnsafeFromData` (fstPair {data} {data} tup)) (`$dUnsafeFromData` - (sndPair {data} {data} tup))) + (case + data + tup + [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]))) (go tups)) , (Nil {Tuple2 k v}) ] in @@ -250,48 +266,56 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - TxOut - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -309,77 +333,84 @@ let !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args + 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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 + !go : + list data -> List TxInInfo = \(xs : list data) -> case (List TxInInfo) xs - [ (\(x : data) (xs : list data) -> + [ (\(x : data) + (xs : list data) -> Cons {TxInInfo} - (let - !tup : pair integer (list data) = unConstrData x - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args) + (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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args + 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 @@ -388,19 +419,20 @@ all a. (\a -> data -> a) a -> data -> Extended a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 Unit | Unit_match where Unit : Unit data ScriptPurpose | ScriptPurpose_match where @@ -438,164 +470,200 @@ let !ds : ScriptContext - = let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + = 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 - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval - {integer} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList - {data} - (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} ds)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 + {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) 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 a624bd7e255..2a0f68ff7a9 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 @@ -1133 \ No newline at end of file +899 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-20.eval.golden b/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-20.eval.golden index bf9af12c8d8..9046acdb9ee 100644 --- a/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 8_111_579 -Memory: 33_498 +CPU: 7_827_595 +Memory: 33_434 Term Size: 71 -Flat Size: 641 +Flat Size: 642 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-4.eval.golden b/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-4.eval.golden index 33ad034bd76..0c4f80b5461 100644 --- a/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V1/Data/9.6/checkScriptContext1-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 2_908_251 -Memory: 11_066 +CPU: 2_624_267 +Memory: 11_002 Term Size: 71 -Flat Size: 254 +Flat Size: 255 (constr 0) \ 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 d5f99851144..0a2d76cc3af 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 @@ -46,7 +46,10 @@ (fail : unit -> r) -> let !l : list data - = sndPair {integer} {list data} (unConstrData scrut) + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l !l : list data = tailList {data} l !l : list data = tailList {data} l @@ -67,19 +70,29 @@ (unListData (headList {data} l)) (unListData (headList {data} l)) (let - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup + !d : data = headList {data} (tailList {data} l) in - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args)) + (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))) (headList {data} - (sndPair {integer} {list data} (unConstrData d))) + (case + (list data) + (unConstrData d) + [(\(l : integer) (r : list data) -> r)])) (\(ds : (\a -> list data) data) (ds : (\a -> list data) data) (ds : 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 a9647f47770..07b7313d3ac 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: 201_104_704 -Memory: 790_778 -Term Size: 1_247 -Flat Size: 1_754 +CPU: 124_328_253 +Memory: 606_806 +Term Size: 1_013 +Flat Size: 1_575 (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 cabe4abbcd9..6dcdcbf4bdd 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: 57_377_504 -Memory: 228_378 -Term Size: 1_247 -Flat Size: 1_320 +CPU: 36_906_589 +Memory: 177_398 +Term Size: 1_013 +Flat Size: 1_141 (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 8ce4d405405..6692f9fac5e 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 @@ -54,45 +54,49 @@ , (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] !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args + 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) !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -101,40 +105,43 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : + data -> DCert = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -154,18 +161,19 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -188,9 +196,16 @@ (Tuple2 {k} {v} - (`$dUnsafeFromData` (fstPair {data} {data} tup)) (`$dUnsafeFromData` - (sndPair {data} {data} tup))) + (case + data + tup + [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]))) (go tups)) , (Nil {Tuple2 k v}) ] in @@ -205,63 +220,76 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -279,53 +307,56 @@ let !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args + 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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 !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args + 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 @@ -358,16 +389,17 @@ = \(d : data) -> d !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args + 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 @@ -376,19 +408,20 @@ all a. (\a -> data -> a) a -> data -> Extended a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -397,28 +430,30 @@ !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> ScriptPurpose = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data Unit | Unit_match where Unit : Unit data (LowerBound :: * -> *) a | LowerBound_match where @@ -451,155 +486,186 @@ in \(d : data) -> ScriptContext_match - (let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval - {integer} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup + (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 - 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) + 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 + {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)) {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 1280674f38f..9670e7bd0b0 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 @@ -1247 \ No newline at end of file +1013 \ 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 49c0357cebb..f61443058cd 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: 193_792_281 -Memory: 758_836 -Term Size: 1_188 -Flat Size: 1_678 +CPU: 117_015_830 +Memory: 574_864 +Term Size: 954 +Flat Size: 1_499 (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 7fcf454ddf6..7ba57b160df 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: 55_268_409 -Memory: 218_868 -Term Size: 1_188 -Flat Size: 1_244 +CPU: 34_797_494 +Memory: 167_888 +Term Size: 954 +Flat Size: 1_065 (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 e1789402dcd..ed9bafd65e3 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 @@ -14,51 +14,55 @@ , (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 !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args + 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 !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -67,40 +71,43 @@ DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : + data -> DCert = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -123,18 +130,19 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : @@ -159,9 +167,16 @@ (Tuple2 {k} {v} - (`$dUnsafeFromData` (fstPair {data} {data} tup)) (`$dUnsafeFromData` - (sndPair {data} {data} tup))) + (case + data + tup + [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]))) (go tups)) , (Nil {Tuple2 k v}) ] in @@ -191,63 +206,76 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -265,53 +293,56 @@ let !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args + 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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 !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args + 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 @@ -344,16 +375,17 @@ = \(d : data) -> d !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args + 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 @@ -362,19 +394,20 @@ all a. (\a -> data -> a) a -> data -> Extended a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -383,28 +416,30 @@ !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> ScriptPurpose = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data Unit | Unit_match where Unit : Unit data (LowerBound :: * -> *) a | LowerBound_match where @@ -439,158 +474,190 @@ let !ds : ScriptContext - = let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + = 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 - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval - {integer} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList - {data} - (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 + 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 + {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) 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 b0ba9cece2b..71ed48c5f39 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 @@ -1188 \ No newline at end of file +954 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.eval.golden b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.eval.golden index 0b742c20de8..eaafb08ec1c 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.eval.golden @@ -1,6 +1,6 @@ -CPU: 5_482_022 -Memory: 9_278 +CPU: 4_914_248 +Memory: 9_150 Term Size: 128 -Flat Size: 1_180 +Flat Size: 1_182 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.pir.golden b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.pir.golden index e9a6534ca0f..25d4d70cf82 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.pir.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.pir.golden @@ -20,19 +20,26 @@ in {data} (tailList {data} - (sndPair - {integer} - {list data} + (case + (list data) (unConstrData (headList {data} - (sndPair - {integer} - {list data} - (unConstrData ctx)))))))))))) - !wdrlAtZero : data = fstPair {data} {data} (headList {pair data data} ds) + (case + (list data) + (unConstrData ctx) + [ (\(l : integer) (r : list data) -> + r) ]))) + [ (\(l : integer) (r : list data) -> + r) ])))))))) + !wdrlAtZero : data + = case data (headList {pair data data} ds) [(\(l : data) (r : data) -> l)] !rest : list (pair data data) = tailList {pair data data} ds - !wdrlAtOne : data = fstPair {data} {data} (headList {pair data data} rest) + !wdrlAtOne : data + = case + data + (headList {pair data data} rest) + [(\(l : data) (r : data) -> l)] in case (all dead. Unit) @@ -64,7 +71,9 @@ in in go) (\(x : pair data data) -> - equalsData obsScriptCred (fstPair {data} {data} x)) + equalsData + obsScriptCred + (case data x [(\(l : data) (r : data) -> l)])) rest) [ (/\dead -> let diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.uplc.golden b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.uplc.golden index 8c80b4dbba7..5dfb8d0d5d4 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.uplc.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrick.uplc.golden @@ -18,7 +18,7 @@ case (equalsData obsScriptCred - (force (force fstPair) x)) + (case x [(\l r -> l)])) [(s s xs), True]) , False ]) rest) @@ -27,9 +27,9 @@ , (constr 0 []) ]) , (constr 0 []) ]) , (constr 0 []) ]) - (force (force fstPair) (force headList rest))) + (case (force headList rest) [(\l r -> l)])) (force tailList ds)) - (force (force fstPair) (force headList ds))) + (case (force headList ds) [(\l r -> l)])) (unMapData (force headList (force tailList @@ -38,8 +38,10 @@ (force tailList (force tailList (force tailList - (force (force sndPair) + (case (unConstrData (force headList - (force (force sndPair) - (unConstrData ctx))))))))))))))) \ No newline at end of file + (case + (unConstrData ctx) + [(\l r -> r)]))) + [(\l r -> r)]))))))))))) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.eval.golden b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.eval.golden index ad9b2335589..2be478f8e9f 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.eval.golden @@ -1,6 +1,6 @@ -CPU: 5_626_022 -Memory: 10_178 +CPU: 5_058_248 +Memory: 10_050 Term Size: 132 -Flat Size: 1_182 +Flat Size: 1_184 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.pir.golden b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.pir.golden index c7a538abbcf..d4cb9813219 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.pir.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.pir.golden @@ -20,7 +20,9 @@ in (\(x : pair data data) (xs : list (pair data data)) (ds : Unit) -> case (all dead. Unit) - (equalsData r_stake_cred (fstPair {data} {data} x)) + (equalsData + r_stake_cred + (case data x [(\(l : data) (r : data) -> l)])) [(/\dead -> lookForCred xs), (/\dead -> Unit)] {all dead. dead}) l @@ -44,20 +46,30 @@ in {data} (tailList {data} - (sndPair - {integer} - {list data} + (case + (list data) (unConstrData (headList {data} - (sndPair - {integer} - {list data} - (unConstrData r_ctx)))))))))))) + (case + (list data) + (unConstrData r_ctx) + [ (\(l : integer) + (r : list data) -> + r) ]))) + [ (\(l : integer) (r : list data) -> + r) ])))))))) !wdrlAtZero : data - = fstPair {data} {data} (headList {pair data data} wdrl) + = case + data + (headList {pair data data} wdrl) + [(\(l : data) (r : data) -> l)] !rest : list (pair data data) = tailList {pair data data} wdrl - !wdrlAtOne : data = fstPair {data} {data} (headList {pair data data} rest) + !wdrlAtOne : data + = case + data + (headList {pair data data} rest) + [(\(l : data) (r : data) -> l)] in case (all dead. Unit) diff --git a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.uplc.golden b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.uplc.golden index 78ea6ae94df..53845d85b1a 100644 --- a/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.uplc.golden +++ b/plutus-benchmark/script-contexts/test/V2/9.6/dataFwdStakeTrickManual.uplc.golden @@ -12,9 +12,9 @@ (equalsData r_stake_cred wdrlAtOne) [(lookForCred rest), (constr 0 [])]) , (constr 0 []) ]) - (force (force fstPair) (force headList rest))) + (case (force headList rest) [(\l r -> l)])) (force tailList wdrl)) - (force (force fstPair) (force headList wdrl))) + (case (force headList wdrl) [(\l r -> l)])) (unMapData (force headList (force tailList @@ -23,18 +23,20 @@ (force tailList (force tailList (force tailList - (force (force sndPair) + (case (unConstrData (force headList - (force (force sndPair) - (unConstrData r_ctx)))))))))))))) + (case + (unConstrData r_ctx) + [(\l r -> r)]))) + [(\l r -> r)])))))))))) ((\s -> s s) (\s l -> case l [ (\x xs ds -> case - (equalsData r_stake_cred (force (force fstPair) x)) + (equalsData r_stake_cred (case x [(\l r -> l)])) [(s s xs), (constr 0 [])]) , (\ds -> (\x -> error) (force trace "not found" (constr 0 []))) ] 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 ed2c3c0b540..3e8412e0fb9 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: 250_275_304 -Memory: 969_390 -Term Size: 1_383 -Flat Size: 2_324 +CPU: 145_894_198 +Memory: 724_058 +Term Size: 1_149 +Flat Size: 2_145 (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 d0d0fc950b2..3c08a1fe2d3 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 @@ -14,51 +14,55 @@ letrec , (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 !`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` : data -> Credential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args + 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 !`$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` : data -> StakingCredential = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data DCert | DCert_match where DCertDelegDeRegKey : StakingCredential -> DCert DCertDelegDelegate : StakingCredential -> bytestring -> DCert @@ -67,40 +71,43 @@ let DCertMir : DCert DCertPoolRegister : bytestring -> bytestring -> DCert DCertPoolRetire : bytestring -> integer -> DCert - !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : data -> DCert + !`$fUnsafeFromDataDCert_$cunsafeFromBuiltinData` : + data -> DCert = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -123,18 +130,19 @@ let all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : @@ -158,8 +166,16 @@ let (Tuple2 {k} {v} - (`$dUnsafeFromData` (fstPair {data} {data} tup)) - (`$dUnsafeFromData` (sndPair {data} {data} tup))) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]))) (go tups)) , (Nil {Tuple2 k v}) ] in @@ -189,63 +205,76 @@ let !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -263,53 +292,56 @@ in let !`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` : data -> bytestring = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args + 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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 !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args + 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 @@ -385,16 +417,17 @@ let = \(d : data) -> d !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args + 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 @@ -403,19 +436,20 @@ let all a. (\a -> data -> a) a -> data -> Extended a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -424,28 +458,30 @@ let !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> ScriptPurpose = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data (LowerBound :: * -> *) a | LowerBound_match where LowerBound : Extended a -> bool -> LowerBound a data (UpperBound :: * -> *) a | UpperBound_match where @@ -479,155 +515,185 @@ in \(obsScriptCred : data) (ctx : data) -> ScriptContext_match - (let - !tup : pair integer (list data) = unConstrData ctx - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - ScriptContext - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval - {integer} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup + (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 - 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) + 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 + {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)) {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 989c218adf0..624586a2efe 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 @@ -16,353 +16,294 @@ obsScriptCred ctx -> case - ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - (\`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` -> - constr 0 - [ ((\tup -> - (\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)) - ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - (\`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` -> - (\`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` -> - constr 0 - [ ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - unIData - (force - headList - ds)) - , (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - ds))) - , ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - unIData - (force - headList - ds)) - , (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - (force - tailList - ds)))) ]) - (\d -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d))) - (\`$dUnsafeFromData` - d -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 1 - [ ]) - , (\ds -> - constr 0 - [ (`$dUnsafeFromData` - (force - headList - ds)) ]) - , (\ds -> - constr 2 - [ ]) ] - args) - (force - (force - sndPair) - tup)) + (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 - (force - fstPair) - tup)) + 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 - d))) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - l))) - (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) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - ds))) - , (`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) - (\d -> - (\tup -> - (\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 + (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 - headList - ds)) ]) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - d))) ] - args) - (force (force sndPair) - tup)) - (force (force fstPair) tup)) - (unConstrData ctx)) + 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 @@ -589,54 +530,45 @@ , (s s xs) ]) , (constr 0 []) ]))) (\d -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (force headList - ds)) - , (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (force headList - (force tailList - ds))) ]) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData 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 -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` - (force headList ds)) - , (unIData - (force headList - (force tailList - ds))) ]) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData d))) + case + (unConstrData d) + [ (\index + args -> + case + index + [ (\ds -> + constr 0 + [ (`$fUnsafeFromDataTxId_$cunsafeFromBuiltinData` + (force headList ds)) + , (unIData + (force headList + (force tailList + ds))) ]) ] + args) ])) (\d -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - unBData (force headList ds)) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData d))) + case + (unConstrData d) + [ (\index args -> + case + index + [(\ds -> unBData (force headList ds))] + args) ])) ((\s -> s s) (\s @@ -651,119 +583,93 @@ , (s s xs) ]) , (constr 0 []) ]))) (\eta -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - (\l -> - (\l -> - (\`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` -> - (\cse -> - constr 0 - [ ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (force - headList - ds)) - , (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - `$fUnsafeFromDataStakingCredential_$cunsafeFromBuiltinData` - (force - headList - (force - tailList - ds))) ]) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force headList - ds))) - , (cse - (cse unIData) - (force headList - l)) - , ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ ]) - , (\ds -> - constr 2 - [ (unBData - (force - headList - ds)) ]) - , (\ds -> - constr 1 - [ (force - headList - ds) ]) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force headList - l))) - , (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - unBData - (force headList - (force tailList - l))) ]) - (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` - unBData)) - (\`$dUnsafeFromData` - d -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ (`$dUnsafeFromData` - (force - headList - ds)) ]) - , (\ds -> - constr 1 - []) ] - args) - (force - (force sndPair) - tup)) - (force - (force fstPair) - tup)) - (unConstrData d))) - (force tailList l)) - (force tailList ds)) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData eta))) + case + (unConstrData eta) + [ (\index + args -> + case + index + [ (\ds -> + (\l -> + (\l -> + (\`$fUnsafeFromDataMaybe_$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))) ]) + (`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` + unBData)) + (\`$dUnsafeFromData` + d -> + 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) @@ -774,10 +680,9 @@ constr 1 [ (constr 0 [ (`$dUnsafeFromData` - (force (force fstPair) tup)) + (case tup [(\l r -> l)])) , (`$dUnsafeFromData` - (force (force sndPair) - tup)) ]) + (case tup [(\l r -> r)])) ]) , (s s tups) ]) , (constr 0 []) ])))) ((\s -> @@ -794,78 +699,68 @@ , (s s xs) ]) , (constr 0 []) ]))) (\d -> - (\tup -> - (\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) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData 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 -> - (\tup -> - (\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) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData 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 -> - (\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> constr 0 [(unBData (force headList ds))]) - , (\ds -> constr 1 [(unBData (force headList ds))]) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData d))) + case + (unConstrData d) + [ (\index args -> + case + index + [ (\ds -> constr 0 [(unBData (force headList ds))]) + , (\ds -> constr 1 [(unBData (force headList ds))]) ] + args) ])) ((\s -> s s) (\s xs -> case diff --git a/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-20.eval.golden b/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-20.eval.golden index 2d103b8c923..d259fa07639 100644 --- a/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 8_241_242 -Memory: 33_830 +CPU: 7_957_258 +Memory: 33_766 Term Size: 74 -Flat Size: 705 +Flat Size: 706 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-4.eval.golden b/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-4.eval.golden index 8106d21a5af..7c543985b09 100644 --- a/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V2/Data/9.6/checkScriptContext1-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 3_037_914 -Memory: 11_398 +CPU: 2_753_930 +Memory: 11_334 Term Size: 74 -Flat Size: 271 +Flat Size: 272 (constr 0) \ 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 7d78804280d..d3c8ec2c928 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 @@ -47,7 +47,10 @@ (fail : unit -> r) -> let !l : list data - = sndPair {integer} {list data} (unConstrData scrut) + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l !l : list data = tailList {data} l !l : list data = tailList {data} l @@ -72,19 +75,29 @@ (unMapData (headList {data} l)) (unMapData (headList {data} l)) (let - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup + !d : data = headList {data} (tailList {data} l) in - case - (list data -> bytestring) - index - [(\(ds : list data) -> unBData (headList {data} ds))] - args)) + (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))) (headList {data} - (sndPair {integer} {list data} (unConstrData d))) + (case + (list data) + (unConstrData d) + [(\(l : integer) (r : list data) -> r)])) (\(ds : (\a -> list data) data) (ds : (\a -> list data) data) (ds : (\a -> list data) data) 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 fab5eb808a3..5258b49783d 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: 203_370_434 -Memory: 798_058 -Term Size: 2_191 -Flat Size: 2_644 +CPU: 126_102_096 +Memory: 612_722 +Term Size: 1_827 +Flat Size: 2_365 (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 53b3f9791ec..0003fd3711c 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: 60_411_234 -Memory: 240_458 -Term Size: 2_191 -Flat Size: 2_210 +CPU: 39_448_432 +Memory: 188_114 +Term Size: 1_827 +Flat Size: 1_931 (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 cf572a2b457..ff6fbf569e6 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,21 +44,24 @@ (\(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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args + 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 @@ -79,35 +82,37 @@ !`$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` : data -> GovernanceActionId = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> GovernanceActionId) - index - [ (\(ds : list data) -> - GovernanceActionId - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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) !`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` : all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : all k v. (\a -> data -> a) k -> @@ -130,9 +135,16 @@ (Tuple2 {k} {v} - (`$dUnsafeFromData` (fstPair {data} {data} tup)) (`$dUnsafeFromData` - (sndPair {data} {data} tup))) + (case + data + tup + [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]))) (go tups)) , (Nil {Tuple2 k v}) ] in @@ -210,165 +222,185 @@ !`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` : data -> ProposalProcedure = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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} - (let - !tup : pair integer (list data) = unConstrData x - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (list data -> Maybe bytestring) - index - [ (\(ds : list data) -> - `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} ds)) ] - args)) - , (\(ds : list data) -> InfoAction) ] - args)) ] - args + 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 @@ -401,46 +433,49 @@ DRepAlwaysNoConfidence : DRep !`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` : data -> DRep = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> DRep) - index - [ (\(ds : list data) -> - DRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> DRepAlwaysAbstain) - , (\(ds : list data) -> DRepAlwaysNoConfidence) ] - args + 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) data Delegatee | Delegatee_match where DelegStake : bytestring -> Delegatee DelegStakeVote : bytestring -> DRep -> Delegatee DelegVote : DRep -> Delegatee !`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` : data -> Delegatee = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data TxCert | TxCert_match where TxCertAuthHotCommittee : Credential -> Credential -> TxCert TxCertDelegStaking : Credential -> Delegatee -> TxCert @@ -455,79 +490,80 @@ TxCertUpdateDRep : Credential -> TxCert !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxCert = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -546,94 +582,118 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - (\(d : data) -> - let - !tup : pair integer (list data) - = unConstrData d - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -653,38 +713,40 @@ TxOutRef : bytestring -> integer -> TxOutRef !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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) data TxInInfo | TxInInfo_match where TxInInfo : TxOutRef -> TxOut -> TxInInfo !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args + 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 @@ -717,16 +779,17 @@ = \(d : data) -> d !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args + 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 @@ -735,44 +798,46 @@ all a. (\a -> data -> a) a -> data -> Extended a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data ScriptInfo | ScriptInfo_match where CertifyingScript : integer -> TxCert -> ScriptInfo MintingScript : bytestring -> ScriptInfo @@ -825,273 +890,318 @@ in \(d : data) -> ScriptContext_match - (let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ScriptContext - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval - {integer} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 + {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 - !tup : pair integer (list data) - = unConstrData d - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup + !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 - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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) + 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 + {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 + {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)) {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 5cca27434ea..479391dbfea 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 @@ -2191 \ No newline at end of file +1827 \ 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 43b8f65d634..01e964ee0e7 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: 195_978_011 -Memory: 765_616 -Term Size: 2_127 -Flat Size: 2_566 +CPU: 118_709_673 +Memory: 580_280 +Term Size: 1_763 +Flat Size: 2_287 (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 18e878d05d5..f4f910f61a2 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: 58_222_139 -Memory: 230_448 -Term Size: 2_127 -Flat Size: 2_132 +CPU: 37_259_337 +Memory: 178_104 +Term Size: 1_763 +Flat Size: 1_853 (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 37bd44c4d2b..61be06512f7 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,22 +1,25 @@ (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 = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Credential) - index - [ (\(ds : list data) -> - PubKeyCredential (unBData (headList {data} ds))) - , (\(ds : list data) -> - ScriptCredential (unBData (headList {data} ds))) ] - args + 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 data (List :: * -> *) a | List_match where @@ -42,19 +45,20 @@ !`$fUnsafeFromDataGovernanceAction_$cunsafeFromBuiltinData` : data -> GovernanceActionId = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> GovernanceActionId) - index - [ (\(ds : list data) -> - GovernanceActionId - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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) data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a @@ -62,18 +66,19 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b !`$fUnsafeFromDataMap_$cunsafeFromBuiltinData` : @@ -98,9 +103,16 @@ (Tuple2 {k} {v} - (`$dUnsafeFromData` (fstPair {data} {data} tup)) (`$dUnsafeFromData` - (sndPair {data} {data} tup))) + (case + data + tup + [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case + data + tup + [(\(l : data) (r : data) -> r)]))) (go tups)) , (Nil {Tuple2 k v}) ] in @@ -178,165 +190,185 @@ !`$fUnsafeFromDataProposalProcedure_$cunsafeFromBuiltinData` : data -> ProposalProcedure = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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} - (let - !tup : pair integer (list data) = unConstrData x - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData - (headList {data} (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (list data -> Maybe bytestring) - index - [ (\(ds : list data) -> - `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {bytestring} - unBData - (headList {data} ds)) ] - args)) - , (\(ds : list data) -> InfoAction) ] - args)) ] - args + 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 @@ -369,46 +401,49 @@ DRepAlwaysNoConfidence : DRep !`$fUnsafeFromDataDRep_$cunsafeFromBuiltinData` : data -> DRep = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> DRep) - index - [ (\(ds : list data) -> - DRep - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds))) - , (\(ds : list data) -> DRepAlwaysAbstain) - , (\(ds : list data) -> DRepAlwaysNoConfidence) ] - args + 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) data Delegatee | Delegatee_match where DelegStake : bytestring -> Delegatee DelegStakeVote : bytestring -> DRep -> Delegatee DelegVote : DRep -> Delegatee !`$fUnsafeFromDataDelegatee_$cunsafeFromBuiltinData` : data -> Delegatee = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data TxCert | TxCert_match where TxCertAuthHotCommittee : Credential -> Credential -> TxCert TxCertDelegStaking : Credential -> Delegatee -> TxCert @@ -423,79 +458,80 @@ TxCertUpdateDRep : Credential -> TxCert !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxCert = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -532,94 +568,118 @@ !`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` : data -> TxOut = \(eta : data) -> - let - !tup : pair integer (list data) = unConstrData eta - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOut) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - !l : list data = tailList {data} l - in - TxOut - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Address) - index - [ (\(ds : list data) -> - Address - (`$fUnsafeFromDataCredential_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` - {StakingCredential} - (\(d : data) -> - let - !tup : pair integer (list data) - = unConstrData d - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 @@ -639,38 +699,40 @@ TxOutRef : bytestring -> integer -> TxOutRef !`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` : data -> TxOutRef = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxOutRef) - index - [ (\(ds : list data) -> - TxOutRef - (unBData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args + 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) data TxInInfo | TxInInfo_match where TxInInfo : TxOutRef -> TxOut -> TxInInfo !`$fUnsafeFromDataScriptContext_$cunsafeFromBuiltinData` : data -> TxInInfo = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> TxInInfo) - index - [ (\(ds : list data) -> - TxInInfo - (`$fUnsafeFromDataTxOutRef_$cunsafeFromBuiltinData` - (headList {data} ds)) - (`$fUnsafeFromDataTxOut_$cunsafeFromBuiltinData` - (headList {data} (tailList {data} ds)))) ] - args + 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 @@ -703,16 +765,17 @@ = \(d : data) -> d !`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` : data -> bool = \(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args + 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 @@ -721,44 +784,46 @@ all a. (\a -> data -> a) a -> data -> Extended a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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) data ScriptInfo | ScriptInfo_match where CertifyingScript : integer -> TxCert -> ScriptInfo MintingScript : bytestring -> ScriptInfo @@ -813,279 +878,341 @@ let !ds : ScriptContext - = let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> ScriptContext) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - ScriptContext - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + = 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 - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} l) - !index : integer = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (list data -> Interval integer) - index - [ (\(ds : list data) -> - Interval - {integer} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - case - (list data -> LowerBound integer) - index - [ (\(ds : list data) -> - LowerBound + 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} - (`$fUnsafeFromDataExtended_$cunsafeFromBuiltinData` - {integer} - unIData - (headList {data} ds)) - (`$fUnsafeFromDataBool_$cunsafeFromBuiltinData` - (headList - {data} - (tailList {data} ds)))) ] - args) - (let - !tup : pair integer (list data) - = unConstrData - (headList - {data} - (tailList {data} ds)) - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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) -> - let - !tup : pair integer (list data) - = unConstrData d - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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) -> - let - !tup : pair integer (list data) - = unConstrData d - !index : integer - = fstPair {integer} {list data} tup - !args : list data - = sndPair {integer} {list data} tup - in - 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 - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + 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 + {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 + {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) 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 bc29fcae9c2..885a27e49a0 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 @@ -2127 \ No newline at end of file +1763 \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-20.eval.golden b/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-20.eval.golden index 964afa7bb65..bf5580bba73 100644 --- a/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-20.eval.golden +++ b/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-20.eval.golden @@ -1,6 +1,6 @@ -CPU: 8_241_242 -Memory: 33_830 +CPU: 7_957_258 +Memory: 33_766 Term Size: 74 -Flat Size: 711 +Flat Size: 712 (constr 0) \ No newline at end of file diff --git a/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-4.eval.golden b/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-4.eval.golden index e57bf28b955..633c3d813ed 100644 --- a/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-4.eval.golden +++ b/plutus-benchmark/script-contexts/test/V3/Data/9.6/checkScriptContext1-4.eval.golden @@ -1,6 +1,6 @@ -CPU: 3_037_914 -Memory: 11_398 +CPU: 2_753_930 +Memory: 11_334 Term Size: 74 -Flat Size: 277 +Flat Size: 278 (constr 0) \ 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 bd16890d18a..eb9f57ebeff 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,18 +14,21 @@ all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + (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) data Unit | Unit_match where Unit : Unit data (Solo :: * -> *) a | Solo_match where @@ -41,7 +44,11 @@ (cont : data -> data -> data -> r) (fail : unit -> r) -> let - !l : list data = sndPair {integer} {list data} (unConstrData scrut) + !l : list data + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l in cont @@ -95,10 +102,10 @@ (fail : unit -> r) -> let !l : list data - = sndPair - {integer} - {list data} + = case + (list data) (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l !l : list data = tailList {data} l !l : list data = tailList {data} l 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 6ab68a1614b..3d20fb7bdc9 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: 23_349_930 -Memory: 80_962 -Term Size: 1_769 -Flat Size: 1_815 +CPU: 19_611_399 +Memory: 79_830 +Term Size: 1_773 +Flat Size: 1_844 (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 faada7b4217..46f55808fe9 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 @@ -9,7 +9,9 @@ let in case (all dead. bool) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> False) , (/\dead -> let @@ -17,25 +19,40 @@ let in case (all dead. bool) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> False) , (/\dead -> equalsByteString (unBData (headList {data} - (sndPair {integer} {list data} tup))) + (case + (list data) + tup + [ (\(l : integer) (r : list data) -> + r) ]))) (unBData (headList {data} - (sndPair {integer} {list data} tup)))) ] + (case + (list data) + tup + [ (\(l : integer) (r : list data) -> + r) ])))) ] {all dead. dead}) ] {all dead. dead} !tup : pair integer (list data) = unConstrData ds in case (all dead. bool) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let @@ -43,18 +60,26 @@ let in case (all dead. bool) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> equalsByteString (unBData (headList {data} - (sndPair {integer} {list data} tup))) + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)]))) (unBData (headList {data} - (sndPair {integer} {list data} tup)))) ] + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])))) ] {all dead. dead}) ] {all dead. dead} !`$fEqDRep0_$c==` : data -> data -> bool @@ -66,12 +91,18 @@ let (all dead. bool) (equalsInteger 2 - (fstPair {integer} {list data} (unConstrData ds))) + (case + integer + (unConstrData ds) + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> False) , (/\dead -> equalsInteger 2 - (fstPair {integer} {list data} (unConstrData ds))) ] + (case + integer + (unConstrData ds) + [(\(l : integer) (r : list data) -> l)])) ] {all dead. dead} !fail : unit -> bool = \(ds : unit) -> @@ -79,14 +110,20 @@ let (all dead. bool) (equalsInteger 1 - (fstPair {integer} {list data} (unConstrData ds))) + (case + integer + (unConstrData ds) + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> case (all dead. bool) (equalsInteger 1 - (fstPair {integer} {list data} (unConstrData ds))) + (case + integer + (unConstrData ds) + [(\(l : integer) (r : list data) -> l)])) [(/\dead -> fail ()), (/\dead -> True)] {all dead. dead}) ] {all dead. dead} @@ -94,7 +131,9 @@ let in case (all dead. bool) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let @@ -102,12 +141,24 @@ let in case (all dead. bool) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> `$fEqCredential_$c==` - (headList {data} (sndPair {integer} {list data} tup)) - (headList {data} (sndPair {integer} {list data} tup))) ] + (headList + {data} + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])) + (headList + {data} + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)]))) ] {all dead. dead}) ] {all dead. dead} !`$mDelegStakeVote` : @@ -119,11 +170,17 @@ let in case (all dead. r) - (equalsInteger 2 (fstPair {integer} {list data} tup)) + (equalsInteger + 2 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (unBData (headList {data} l)) @@ -157,7 +214,9 @@ let in case (all dead. bool) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let @@ -165,23 +224,37 @@ let in case (all dead. bool) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> `$fEqDRep0_$c==` (headList {data} - (sndPair {integer} {list data} tup)) + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])) (headList {data} - (sndPair {integer} {list data} tup))) ] + (case + (list data) + tup + [ (\(l : integer) (r : list data) -> + r) ]))) ] {all dead. dead}) ] {all dead. dead} !tup : pair integer (list data) = unConstrData ds in case (all dead. bool) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let @@ -189,18 +262,26 @@ let in case (all dead. bool) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> equalsByteString (unBData (headList {data} - (sndPair {integer} {list data} tup))) + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)]))) (unBData (headList {data} - (sndPair {integer} {list data} tup)))) ] + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])))) ] {all dead. dead}) ] {all dead. dead} !`$mTxCertRegDRep` : all r. data -> (data -> integer -> r) -> (unit -> r) -> r @@ -211,11 +292,17 @@ let in case (all dead. r) - (equalsInteger 4 (fstPair {integer} {list data} tup)) + (equalsInteger + 4 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (headList {data} l) @@ -232,11 +319,17 @@ let in case (all dead. r) - (equalsInteger 3 (fstPair {integer} {list data} tup)) + (equalsInteger + 3 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l in cont @@ -251,18 +344,21 @@ let all a. (\a -> data -> a) a -> data -> Maybe a = /\a -> \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + (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) !`$mTxCertRegStaking` : all r. data -> (data -> Maybe integer -> r) -> (unit -> r) -> r = /\r -> @@ -274,11 +370,17 @@ let in case (all dead. r) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (headList {data} l) @@ -296,11 +398,17 @@ let in case (all dead. r) - (equalsInteger 6 (fstPair {integer} {list data} tup)) + (equalsInteger + 6 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (headList {data} l) @@ -317,11 +425,17 @@ let in case (all dead. r) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in cont (headList {data} l) @@ -382,7 +496,7 @@ let (all dead. list (pair data data) -> bool) (equalsData (`$dToData` ds) - (fstPair {data} {data} hd)) + (case data hd [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> True) ] {all dead. dead}) @@ -409,7 +523,12 @@ let [ (\(hd : pair data data) -> Maybe_match {b} - (f (`$dUnsafeFromData` (sndPair {data} {data} hd))) + (f + (`$dUnsafeFromData` + (case + data + hd + [(\(l : data) (r : data) -> r)]))) {all dead. list (pair data data) -> list (pair data data)} (\(v' : b) -> @@ -418,7 +537,10 @@ let mkCons {pair data data} (mkPairData - (fstPair {data} {data} hd) + (case + data + hd + [(\(l : data) (r : data) -> l)]) (`$dToData` v')) (go eta)) (/\dead -> go) @@ -433,7 +555,12 @@ let !txOutRefId : data -> bytestring = \(ds : data) -> unBData - (headList {data} (sndPair {integer} {list data} (unConstrData ds))) + (headList + {data} + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)])) !txOutRefIdx : data -> integer = \(ds : data) -> unIData @@ -441,14 +568,24 @@ let {data} (tailList {data} - (sndPair {integer} {list data} (unConstrData ds)))) + (case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)]))) in \(ds : data) -> let - !l : list data = sndPair {integer} {list data} (unConstrData ds) + !l : list data + = case + (list data) + (unConstrData ds) + [(\(l : integer) (r : list data) -> r)] !scriptInfo : data = headList {data} (tailList {data} (tailList {data} l)) !l : list data - = sndPair {integer} {list data} (unConstrData (headList {data} l)) + = case + (list data) + (unConstrData (headList {data} l)) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} (tailList {data} (tailList {data} (tailList {data} l))) !l : list data = tailList {data} l @@ -461,21 +598,30 @@ in in case (all dead. bool) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger + 0 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) = unConstrData scriptInfo in case (all dead. bool) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) = unConstrData scriptInfo in case (all dead. bool) - (equalsInteger 2 (fstPair {integer} {list data} tup)) + (equalsInteger + 2 + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) @@ -483,7 +629,12 @@ in in case (all dead. bool) - (equalsInteger 3 (fstPair {integer} {list data} tup)) + (equalsInteger + 3 + (case + integer + tup + [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) @@ -493,7 +644,11 @@ in (all dead. bool) (equalsInteger 4 - (fstPair {integer} {list data} tup)) + (case + integer + tup + [ (\(l : integer) (r : list data) -> + l) ])) [ (/\dead -> let !tup : pair integer (list data) @@ -503,7 +658,12 @@ in (all dead. bool) (equalsInteger 5 - (fstPair {integer} {list data} tup)) + (case + integer + tup + [ (\(l : integer) + (r : list data) -> + l) ])) [ (/\dead -> let !defaultBody : bool @@ -516,10 +676,12 @@ in , (/\dead -> let !l : list data - = sndPair - {integer} - {list data} + = case + (list data) tup + [ (\(l : integer) + (r : list data) -> + r) ] in True) ] {all dead. dead}) @@ -532,7 +694,12 @@ in (\(x : data) -> x) (headList {data} - (sndPair {integer} {list data} tup)) + (case + (list data) + tup + [ (\(l : integer) + (r : list data) -> + r) ])) (unMapData (headList {data} @@ -553,7 +720,10 @@ in , (/\dead -> let !l : list data - = sndPair {integer} {list data} tup + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in (let a = (\a -> list data) data @@ -583,10 +753,12 @@ in (all dead. bool) (equalsInteger 10 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : list data) -> + l) ])) [ (/\dead -> False) , (/\dead -> let @@ -600,27 +772,41 @@ in (all dead. bool) (equalsInteger 10 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : + list + data) -> + l) ])) [ (/\dead -> False) , (/\dead -> `$fEqCredential_$c==` (headList {data} - (sndPair - {integer} - {list - data} - tup)) + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ])) (headList {data} - (sndPair - {integer} - {list - data} - tup))) ] + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ]))) ] {all dead. dead}) ] {all dead. dead} !fail : @@ -635,18 +821,24 @@ in (all dead. bool) (equalsInteger 9 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : list data) -> + l) ])) [ (/\dead -> fail ()) , (/\dead -> let !l : list data - = sndPair - {integer} - {list data} + = case + (list data) tup + [ (\(l : integer) + (r : + list + data) -> + r) ] !tup : pair integer @@ -657,19 +849,29 @@ in (all dead. bool) (equalsInteger 9 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data - = sndPair - {integer} - {list - data} + !l : + list data + = case + (list + data) tup + [ (\(l : + integer) + (r : + list + data) -> + r) ] in case (all dead. bool) @@ -737,10 +939,12 @@ in (all dead. bool) (equalsInteger 5 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : list data) -> + l) ])) [ (/\dead -> fail ()) , (/\dead -> let @@ -754,27 +958,41 @@ in (all dead. bool) (equalsInteger 5 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) , (/\dead -> `$fEqCredential_$c==` (headList {data} - (sndPair - {integer} - {list - data} - tup)) + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ])) (headList {data} - (sndPair - {integer} - {list - data} - tup))) ] + (case + (list + data) + tup + [ (\(l : + integer) + (r : + list + data) -> + r) ]))) ] {all dead. dead}) ] {all dead. dead} !fail : @@ -856,18 +1074,24 @@ in (all dead. bool) (equalsInteger 2 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : list data) -> + l) ])) [ (/\dead -> fail ()) , (/\dead -> let !l : list data - = sndPair - {integer} - {list data} + = case + (list data) tup + [ (\(l : integer) + (r : + list + data) -> + r) ] !tup : pair integer @@ -878,19 +1102,29 @@ in (all dead. bool) (equalsInteger 2 - (fstPair - {integer} - {list data} - tup)) + (case + integer + tup + [ (\(l : integer) + (r : + list + data) -> + l) ])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data - = sndPair - {integer} - {list - data} + !l : + list data + = case + (list + data) tup + [ (\(l : + integer) + (r : + list + data) -> + r) ] in case (all dead. bool) @@ -1024,12 +1258,21 @@ in {data} {integer} (\(x : data) -> x) - (headList {data} (sndPair {integer} {list data} tup)) + (headList + {data} + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])) (unMapData (headList {data} l))) ] {all dead. dead}) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in Maybe_match {data} @@ -1055,10 +1298,11 @@ in !v : data = headList {data} - (sndPair - {integer} - {list data} - (unConstrData x)) + (case + (list data) + (unConstrData x) + [ (\(l : integer) (r : list data) -> + r) ]) !l : data = headList {data} l in case @@ -1100,7 +1344,12 @@ in {(\k a -> list (pair data data)) bytestring integer} bData (unBData - (headList {data} (sndPair {integer} {list data} tup)))) + (headList + {data} + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])))) (\(ds : (\k a -> list (pair data data)) bytestring 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 8fcfd5fc508..34e45b3489c 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 @@ -1767 \ No newline at end of file +1771 \ No newline at end of file diff --git a/plutus-conformance/agda/Spec.hs b/plutus-conformance/agda/Spec.hs index 3b47ebbb3c5..797864dc3e9 100644 --- a/plutus-conformance/agda/Spec.hs +++ b/plutus-conformance/agda/Spec.hs @@ -158,6 +158,14 @@ failingEvaluationTests = , "test-cases/uplc/evaluation/term/constant-case/list/list-05" , "test-cases/uplc/evaluation/term/constant-case/list/list-06" , "test-cases/uplc/evaluation/term/constant-case/list/list-07" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-01" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-02" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-03" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-04" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-05" + , "test-cases/uplc/evaluation/term/constant-case/unit/unit-01" + , "test-cases/uplc/evaluation/term/constant-case/unit/unit-02" + , "test-cases/uplc/evaluation/term/constant-case/unit/unit-03" ] {-| A list of budget tests which are currently expected to fail. Once a fix for @@ -224,6 +232,14 @@ failingBudgetTests = , "test-cases/uplc/evaluation/term/constant-case/list/list-05" , "test-cases/uplc/evaluation/term/constant-case/list/list-06" , "test-cases/uplc/evaluation/term/constant-case/list/list-07" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-01" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-02" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-03" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-04" + , "test-cases/uplc/evaluation/term/constant-case/pair/pair-05" + , "test-cases/uplc/evaluation/term/constant-case/unit/unit-01" + , "test-cases/uplc/evaluation/term/constant-case/unit/unit-02" + , "test-cases/uplc/evaluation/term/constant-case/unit/unit-03" ] -- Run the tests: see Note [Evaluation with and without costing] above. diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc new file mode 100644 index 00000000000..f6077321e95 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc @@ -0,0 +1,3 @@ +(program 1.1.0 + (case (con (pair integer bool) (42, False)) (lam l (lam r l))) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc.budget.expected new file mode 100644 index 00000000000..c4132f656d0 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc.budget.expected @@ -0,0 +1,2 @@ +({cpu: 80100 +| mem: 600}) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc.expected new file mode 100644 index 00000000000..a54d00b217f --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-01/pair-01.uplc.expected @@ -0,0 +1 @@ +(program 1.1.0 (con integer 42)) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc new file mode 100644 index 00000000000..111a1eec074 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc @@ -0,0 +1,3 @@ +(program 1.1.0 + (case (con (pair integer bool) (42, False)) (lam l (lam r r))) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc.budget.expected new file mode 100644 index 00000000000..c4132f656d0 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc.budget.expected @@ -0,0 +1,2 @@ +({cpu: 80100 +| mem: 600}) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc.expected new file mode 100644 index 00000000000..e40b7cc89d6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-02/pair-02.uplc.expected @@ -0,0 +1 @@ +(program 1.1.0 (con bool False)) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc new file mode 100644 index 00000000000..838b0dc1953 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc @@ -0,0 +1,4 @@ +-- Casing on pair expects exactly one branch +(program 1.1.0 + (case (con (pair integer bool) (42, False))) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc.budget.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc.budget.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-03/pair-03.uplc.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc new file mode 100644 index 00000000000..47802b765a2 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc @@ -0,0 +1,4 @@ +-- Casing on pair expects exactly one branch +(program 1.1.0 + (case (con (pair integer bool) (42, False)) (lam l (lam r r)) (lam l (lam r r))) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc.budget.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc.budget.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-04/pair-04.uplc.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc new file mode 100644 index 00000000000..80e5ecd1861 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc @@ -0,0 +1,4 @@ +-- Casing on pair expects branch to take two arguments +(program 1.1.0 + (case (con (pair integer bool) (42, False)) (lam l l)) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc.budget.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc.budget.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/pair/pair-05/pair-05.uplc.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc new file mode 100644 index 00000000000..b885bdcb184 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc @@ -0,0 +1,3 @@ +(program 1.1.0 + (case (con unit ()) (con integer 42)) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc.budget.expected new file mode 100644 index 00000000000..f736fb48118 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc.budget.expected @@ -0,0 +1,2 @@ +({cpu: 48100 +| mem: 400}) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc.expected new file mode 100644 index 00000000000..a54d00b217f --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-01/unit-01.uplc.expected @@ -0,0 +1 @@ +(program 1.1.0 (con integer 42)) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc new file mode 100644 index 00000000000..f6bde45adc9 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc @@ -0,0 +1,4 @@ +-- casing constant only expects one branch +(program 1.1.0 + (case (con unit ())) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc.budget.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc.budget.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-02/unit-02.uplc.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc new file mode 100644 index 00000000000..f1fe7a84b7b --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc @@ -0,0 +1,4 @@ +-- casing constant only expects one branch +(program 1.1.0 + (case (con unit ()) (con integer 42) (con integer 43)) +) \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc.budget.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc.budget.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc.budget.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc.expected b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc.expected new file mode 100644 index 00000000000..ccc477ffed6 --- /dev/null +++ b/plutus-conformance/test-cases/uplc/evaluation/term/constant-case/unit/unit-03/unit-03.uplc.expected @@ -0,0 +1 @@ +evaluation failure \ No newline at end of file diff --git a/plutus-core/changelog.d/20250717_005901_seungheon_6602_unitpair.md b/plutus-core/changelog.d/20250717_005901_seungheon_6602_unitpair.md new file mode 100644 index 00000000000..5e3d2c6fcef --- /dev/null +++ b/plutus-core/changelog.d/20250717_005901_seungheon_6602_unitpair.md @@ -0,0 +1,2 @@ +### Added +- support for constant casing builtin unit and pairs. `Case`ing on the unit expects a single branch or arbitrary value which will get picked everytime. `Case`ing on pairs expects a single branch that takes two arguments for each values of the pair. diff --git a/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs b/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs index d5df5c77a1a..19d384b3bf8 100644 --- a/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs +++ b/plutus-core/plutus-core/src/PlutusCore/Default/Universe.hs @@ -532,22 +532,33 @@ outOfBoundsErr x branches = fold instance AnnotateCaseBuiltin DefaultUni where annotateCaseBuiltin ty branches = case ty of + TyBuiltin _ (SomeTypeIn DefaultUniUnit) -> + case branches of + [x] -> Right $ [(x, [])] + _ -> Left "Casing on unit only allows exactly one branch" TyBuiltin _ (SomeTypeIn DefaultUniBool) -> case branches of [f] -> Right $ [(f, [])] [f, t] -> Right $ [(f, []), (t, [])] - _ -> Left $ "Casing on bool requires exactly one branch or two branches" + _ -> Left "Casing on bool requires exactly one branch or two branches" TyBuiltin _ (SomeTypeIn DefaultUniInteger) -> Right $ map (, []) branches listTy@(TyApp _ (TyBuiltin _ (SomeTypeIn DefaultUniProtoList)) argTy) -> case branches of [cons] -> Right [(cons, [argTy, listTy])] [cons, nil] -> Right [(cons, [argTy, listTy]), (nil, [])] - _ -> Left $ "Casing on list requires exactly one branch or two branches" + _ -> 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])] + _ -> Left "Casing on pair requires exactly one branch" _ -> Left $ display (() <$ ty) <> " isn't supported in 'case'" instance CaseBuiltin DefaultUni where caseBuiltin someVal@(Some (ValueOf uni x)) branches = case uni of + DefaultUniUnit + | 1 == len -> Right $ HeadOnly $ branches Vector.! 0 + | otherwise -> Left $ outOfBoundsErr someVal branches DefaultUniBool -> case x of -- We allow there to be only one branch as long as the scrutinee is 'False'. -- This is strictly to save size by not having the 'True' branch if it was gonna be @@ -568,6 +579,11 @@ instance CaseBuiltin DefaultUni where [] -> Right $ HeadOnly $ branches Vector.! 1 (y : ys) -> Right $ headSpine (branches Vector.! 0) [someValueOf ty y, someValueOf uni ys] | otherwise -> Left $ outOfBoundsErr someVal branches + DefaultUniPair tyL tyR + | len == 1 -> + case x of + (l, r) -> Right $ headSpine (branches Vector.! 0) [someValueOf tyL l, someValueOf tyR r] + | otherwise -> Left $ outOfBoundsErr someVal branches _ -> Left $ display uni <> " isn't supported in 'case'" where !len = Vector.length branches diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.eval.golden index 9d78bd27aaa..fa4d73ed598 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.eval.golden @@ -1,6 +1,6 @@ -CPU: 13_284_190 -Memory: 28_690 +CPU: 11_438_876 +Memory: 28_274 Term Size: 84 -Flat Size: 290 +Flat Size: 291 (con integer 3636) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.pir.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.pir.golden index df4d7c8f783..39479190d3a 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.pir.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/currencySymbolValueOf.pir.golden @@ -5,7 +5,9 @@ letrec integer xs [ (\(hd : pair data data) (eta : list (pair data data)) -> - addInteger (unIData (sndPair {data} {data} hd)) (go eta)) + addInteger + (unIData (case data hd [(\(l : data) (r : data) -> r)])) + (go eta)) , 0 ] in let @@ -32,11 +34,15 @@ in [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> Maybe data) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> - Just {data} (sndPair {data} {data} hd)) ] + Just + {data} + (case data hd [(\(l : data) (r : data) -> r)])) ] {all dead. dead}) , (Nothing {data}) ] in 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 83fc6564255..1d7da64e3c8 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: 397_258_060 -Memory: 1_037_005 -Term Size: 672 -Flat Size: 944 +CPU: 339_163_895 +Memory: 998_845 +Term Size: 659 +Flat Size: 939 (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 5019bea7d29..964a67c9519 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: 419_120_088 -Memory: 1_107_139 -Term Size: 672 -Flat Size: 995 +CPU: 356_777_594 +Memory: 1_065_515 +Term Size: 659 +Flat Size: 990 (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 237f591dd2a..8e3436da5bd 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: 437_002_138 -Memory: 1_160_257 -Term Size: 672 -Flat Size: 995 +CPU: 370_496_887 +Memory: 1_111_429 +Term Size: 659 +Flat Size: 990 (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 59d79700b78..7d883985627 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: 386_165_274 -Memory: 982_824 -Term Size: 672 -Flat Size: 951 +CPU: 332_716_553 +Memory: 955_736 +Term Size: 659 +Flat Size: 946 (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 20e483c97b5..3f19cd63ae6 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: 411_423_571 -Memory: 1_071_776 -Term Size: 672 -Flat Size: 951 +CPU: 351_276_383 +Memory: 1_031_900 +Term Size: 659 +Flat Size: 946 (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 ba212c77ed3..ee74ddedcc5 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 @@ -7,7 +7,9 @@ letrec [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> bool) - (equalsInteger 0 (unIData (sndPair {data} {data} hd))) + (equalsInteger + 0 + (unIData (case data hd [(\(l : data) (r : data) -> r)]))) [ (/\dead -> \(ds : list (pair data data)) -> False) , (/\dead -> go) ] {all dead. dead}) @@ -54,26 +56,29 @@ let \(`$dUnsafeFromData` : (\a -> data -> a) a) (`$dUnsafeFromData` : (\a -> data -> a) b) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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 + (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) in letrec !go : list (pair data data) -> bool @@ -91,7 +96,7 @@ letrec {integer} unIData unIData - (sndPair {data} {data} hd) + (case data hd [(\(l : data) (r : data) -> r)]) in These_match {integer} @@ -118,7 +123,7 @@ letrec [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> bool) - (go (unMapData (sndPair {data} {data} hd))) + (go (unMapData (case data hd [(\(l : data) (r : data) -> r)]))) [ (/\dead -> \(ds : list (pair data data)) -> False) , (/\dead -> go) ] {all dead. dead}) @@ -149,11 +154,14 @@ let mkCons {pair data data} (mkPairData - (fstPair {data} {data} hd) + (case data hd [(\(l : data) (r : data) -> l)]) (`$dToData` (f (`$dUnsafeFromData` - (sndPair {data} {data} hd))))) + (case + data + hd + [(\(l : data) (r : data) -> r)]))))) (go eta)) , [] ] in @@ -168,8 +176,8 @@ letrec xs [ (\(hd : pair data data) (tl : list (pair data data)) -> let - !v : data = sndPair {data} {data} hd - !k : data = fstPair {data} {data} hd + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] !eta : list (pair data data) = safeAppend tl xs !nilCase : list (pair data data) = mkCons {pair data data} (mkPairData k v) [] @@ -185,7 +193,12 @@ letrec (all dead. list (pair data data) -> list (pair data data)) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) [ (/\dead -> \(eta : list (pair data data)) -> mkCons {pair data data} hd (go eta)) @@ -212,11 +225,18 @@ let [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> Maybe data) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> - Just {data} (sndPair {data} {data} hd)) ] + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] {all dead. dead}) , (Nothing {data}) ] in @@ -244,8 +264,10 @@ let xs [ (\(hd : pair data data) (tl : list (pair data data)) -> let - !v : data = sndPair {data} {data} hd - !k : data = fstPair {data} {data} hd + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] in Maybe_match {data} @@ -292,8 +314,10 @@ let xs [ (\(hd : pair data data) (tl : list (pair data data)) -> let - !v : data = sndPair {data} {data} hd - !k : data = fstPair {data} {data} hd + !v : data + = case data hd [(\(l : data) (r : data) -> r)] + !k : data + = case data hd [(\(l : data) (r : data) -> l)] in Maybe_match {data} @@ -364,7 +388,7 @@ let [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> bool) - (is (sndPair {data} {data} hd)) + (is (case data hd [(\(l : data) (r : data) -> r)])) [ (/\dead -> \(ds : list (pair data data)) -> False) , (/\dead -> go) ] {all dead. dead}) @@ -379,7 +403,7 @@ let [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> bool) - (is (sndPair {data} {data} hd)) + (is (case data hd [(\(l : data) (r : data) -> r)])) [ (/\dead -> \(ds : list (pair data data)) -> False) , (/\dead -> go) ] {all dead. dead}) @@ -396,7 +420,8 @@ let l [ (\(x : pair data data) -> let - ~v : data = sndPair {data} {data} x + ~v : data + = case data x [(\(l : data) (r : data) -> r)] in \(xs : list (pair data data)) (ds : Unit) -> @@ -407,7 +432,11 @@ let (xs : list (pair data data)) (ds : Unit) -> let - !d : data = fstPair {data} {data} x + !d : data + = case + data + x + [(\(l : data) (r : data) -> l)] in letrec !goRight : @@ -424,7 +453,12 @@ let (ds : Unit) -> let !v : data - = sndPair {data} {data} x + = case + data + x + [ (\(l : data) + (r : data) -> + r) ] in case (all dead. bool) @@ -433,10 +467,13 @@ let case (all dead. bool) (equalsData - (fstPair - {data} - {data} - x) + (case + data + x + [ (\(l : data) + (r : + data) -> + l) ]) d) [ (/\dead -> goRight @@ -474,7 +511,12 @@ let in case (all dead. bool) - (equalsData d (fstPair {data} {data} x)) + (equalsData + d + (case + data + x + [(\(l : data) (r : data) -> l)])) [ (/\dead -> case (all dead. bool) @@ -485,10 +527,12 @@ let (all dead. list (pair data data)) (is - (sndPair - {data} - {data} - x)) + (case + data + x + [ (\(l : data) + (r : data) -> + r) ])) [ (/\dead -> mkCons {pair data data} @@ -502,7 +546,13 @@ let , (/\dead -> case (all dead. bool) - (eqV v (sndPair {data} {data} x)) + (eqV + v + (case + data + x + [ (\(l : data) (r : data) -> + r) ])) [ (/\dead -> False) , (/\dead -> goBoth xs xs) ] {all dead. dead}) ] 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 8ab17fd9635..f8e3a05a720 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: 459_725_945 -Memory: 1_220_680 -Term Size: 1_065 +CPU: 390_276_300 +Memory: 1_179_960 +Term Size: 1_052 Flat Size: 1_306 (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 dc2ea0eb61e..26b42d97cac 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: 419_488_088 -Memory: 1_109_439 -Term Size: 1_065 +CPU: 357_145_594 +Memory: 1_067_815 +Term Size: 1_052 Flat Size: 1_357 (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 e044c2ec0b9..ee849a733a0 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: 500_475_707 -Memory: 1_347_961 -Term Size: 1_065 +CPU: 422_330_992 +Memory: 1_296_509 +Term Size: 1_052 Flat Size: 1_357 (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 ea740471732..7fbe388ea97 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: 386_533_274 -Memory: 985_124 -Term Size: 1_065 +CPU: 333_084_553 +Memory: 958_036 +Term Size: 1_052 Flat Size: 1_313 (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 613ceffacce..35504f63d1f 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: 441_138_157 -Memory: 1_163_384 -Term Size: 1_065 +CPU: 375_739_011 +Memory: 1_122_324 +Term Size: 1_052 Flat Size: 1_313 (con bool True) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueBurned.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueBurned.eval.golden index 13e1bcfe823..4e6f7703ee4 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueBurned.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueBurned.eval.golden @@ -1,7 +1,7 @@ -CPU: 26_700_791 -Memory: 113_530 +CPU: 21_732_429 +Memory: 112_410 Term Size: 113 -Flat Size: 275 +Flat Size: 276 (con (list (pair data data)) diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueMinted.eval.golden b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueMinted.eval.golden index c8eef98cc5b..4675c113526 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueMinted.eval.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Budget/9.6/mintValueMinted.eval.golden @@ -1,7 +1,7 @@ -CPU: 21_784_369 -Memory: 94_800 +CPU: 17_383_587 +Memory: 93_808 Term Size: 103 -Flat Size: 264 +Flat Size: 265 (con (list (pair data data)) 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 88e174571ae..f045fe73028 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 @@ -17,30 +17,43 @@ in {data} (tailList {data} - (sndPair {integer} {list data} (unConstrData d))))) + (case + (list data) + (unConstrData d) + [(\(l : integer) (r : list data) -> r)])))) in case (all dead. bool) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + ((let + b = list data + in + \(x : pair integer b) -> + case integer x [(\(l : integer) (r : b) -> l)]) + tup)) [ (/\dead -> False) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case (list data) tup [(\(l : integer) (r : list data) -> r)] in Maybe_match {data} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe data) - index - [ (\(ds : list data) -> Just {data} (headList {data} ds)) - , (\(ds : list data) -> Nothing {data}) ] - args) + ((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)) {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 0a397738b6b..a7c65ea5261 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 @@ -4,26 +4,22 @@ case ((\tup -> case - (equalsInteger 1 (force (force fstPair) tup)) + (equalsInteger 1 (case tup [(\l r -> l)])) [ False , (case - ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> constr 0 [(force headList ds)]) - , (\ds -> constr 1 []) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) + (case (unConstrData (force headList - (force tailList (force (force sndPair) tup))))) + (force tailList (case tup [(\l r -> r)])))) + [ (\index args -> + case + index + [ (\ds -> constr 0 [(force headList ds)]) + , (\ds -> constr 1 []) ] + args) ]) [(\ds -> True), False]) ]) (unConstrData (force headList (force tailList - (force tailList - (force (force sndPair) (unConstrData d))))))) + (force tailList (case (unConstrData d) [(\l r -> r)])))))) [((\x -> error) (force trace "PT5" (constr 0 []))), ()])) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Long.stat.golden b/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Long.stat.golden index 48b1bdfb056..b5cceb1b81f 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Long.stat.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Long.stat.golden @@ -1,15 +1,15 @@ -({cpu: 6868450150 | mem: 6803207}) -({cpu: 5306732 | mem: 21858}) -({cpu: 4906493317 | mem: 4750315}) -({cpu: 5306732 | mem: 21858}) -({cpu: 4906493317 | mem: 4750315}) -({cpu: 5306732 | mem: 21858}) -({cpu: 2944536484 | mem: 2697423}) -({cpu: 5306732 | mem: 21858}) -({cpu: 4906493317 | mem: 4750315}) -({cpu: 5306732 | mem: 21858}) -({cpu: 2944536484 | mem: 2697423}) -({cpu: 5306732 | mem: 21858}) -({cpu: 2944536484 | mem: 2697423}) -({cpu: 5306732 | mem: 21858}) -({cpu: 982579651 | mem: 644531}) \ No newline at end of file +({cpu: 6409688758 | mem: 6699783}) +({cpu: 4596966 | mem: 21698}) +({cpu: 4586268781 | mem: 4678123}) +({cpu: 4596966 | mem: 21698}) +({cpu: 4586268781 | mem: 4678123}) +({cpu: 4596966 | mem: 21698}) +({cpu: 2762848804 | mem: 2656463}) +({cpu: 4596966 | mem: 21698}) +({cpu: 4586268781 | mem: 4678123}) +({cpu: 4596966 | mem: 21698}) +({cpu: 2762848804 | mem: 2656463}) +({cpu: 4596966 | mem: 21698}) +({cpu: 2762848804 | mem: 2656463}) +({cpu: 4596966 | mem: 21698}) +({cpu: 939428827 | mem: 634803}) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Short.stat.golden b/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Short.stat.golden index c5092d8fb4a..6fd1e54044c 100644 --- a/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Short.stat.golden +++ b/plutus-ledger-api/test-plugin/Spec/Data/Value/9.6/Short.stat.golden @@ -1,21 +1,21 @@ ({cpu: 1376100 | mem: 8700}) -({cpu: 2070715 | mem: 12064}) -({cpu: 5011663 | mem: 21293}) -({cpu: 5738732 | mem: 24558}) -({cpu: 7875801 | mem: 28787}) -({cpu: 8881485 | mem: 32816}) -({cpu: 14566455 | mem: 48874}) -({cpu: 13691070 | mem: 50274}) -({cpu: 18202018 | mem: 61467}) -({cpu: 10886771 | mem: 35981}) -({cpu: 27947763 | mem: 89048}) -({cpu: 8361823 | mem: 29352}) -({cpu: 40557646 | mem: 124123}) -({cpu: 44300959 | mem: 137541}) -({cpu: 58514056 | mem: 166692}) -({cpu: 62257369 | mem: 180110}) -({cpu: 79525557 | mem: 216755}) -({cpu: 80531241 | mem: 220784}) -({cpu: 103592149 | mem: 274312}) -({cpu: 34765374 | mem: 111156}) -({cpu: 982579651 | mem: 644531}) \ No newline at end of file +({cpu: 1928723 | mem: 12032}) +({cpu: 4443889 | mem: 21165}) +({cpu: 5028966 | mem: 24398}) +({cpu: 6740253 | mem: 28531}) +({cpu: 7461953 | mem: 32496}) +({cpu: 12295359 | mem: 48362}) +({cpu: 11561772 | mem: 49794}) +({cpu: 15363148 | mem: 60827}) +({cpu: 9183449 | mem: 35597}) +({cpu: 23405571 | mem: 88024}) +({cpu: 7084283 | mem: 29064}) +({cpu: 33744358 | mem: 122587}) +({cpu: 36635622 | mem: 135813}) +({cpu: 48861898 | mem: 164516}) +({cpu: 51753162 | mem: 177742}) +({cpu: 66466755 | mem: 213811}) +({cpu: 67188455 | mem: 217776}) +({cpu: 86558929 | mem: 270472}) +({cpu: 29087149 | mem: 109876}) +({cpu: 939428827 | mem: 634803}) \ No newline at end of file diff --git a/plutus-ledger-api/test-plugin/Spec/ScriptSize.hs b/plutus-ledger-api/test-plugin/Spec/ScriptSize.hs index a9c007ee72f..c75e22259c5 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.> 2000 + assertBool "Size V3 script" $ sizeV3 Haskell.> 1700 , 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 364359e9fea..55627d4b224 100644 --- a/plutus-tx-plugin/src/PlutusTx/Compiler/Builtins.hs +++ b/plutus-tx-plugin/src/PlutusTx/Compiler/Builtins.hs @@ -221,6 +221,7 @@ builtinNames = , ''Builtins.BuiltinPair , 'Builtins.fst , 'Builtins.snd + , 'Builtins.casePair , 'Builtins.mkPairData , ''Builtins.BuiltinList , 'Builtins.null @@ -376,6 +377,71 @@ defineBuiltinTerms = do defineBuiltinTerm annMayInline 'Builtins.bls12_381_G2_compressed_zero $ PIR.mkConstant annMayInline BLS12_381.G2.compressed_zero + defineBuiltinTerm annMayInline 'Builtins.casePair $ case datatypeStyle of + style | style == PIR.ScottEncoding || style == PIR.SumsOfProducts -> + -- > /\a b r -> + -- > \(p : pair a b) (f : a -> b -> r) -> + -- > f (fstPair {a} {b} p) (sndPair {a} {b} p) + fmap (const annMayInline) . runQuote $ do + a <- freshTyName "a" + b <- freshTyName "b" + r <- freshTyName "r" + p <- freshName "p" + f <- freshName "f" + let + pairTy = + PLC.TyApp () + (PLC.TyApp () + (PLC.mkTyBuiltin @_ @(,) ()) + (PLC.TyVar () a)) + (PLC.TyVar () b) + contTy = + PLC.TyFun () (PLC.TyVar () a) $ + PLC.TyFun () (PLC.TyVar () b) (PLC.TyVar () r) + + instFstOrSnd x = + PIR.tyInst () (PIR.tyInst () (PIR.builtin () x) (PLC.TyVar () a)) (PLC.TyVar () b) + + pure $ + PIR.tyAbs () a (PLC.Type ()) $ + PIR.tyAbs () b (PLC.Type ()) $ + PIR.tyAbs () r (PLC.Type ()) $ + PIR.lamAbs () p pairTy $ + PIR.lamAbs () f contTy $ + PIR.apply () + (PIR.apply () + (PIR.var () f) + (PIR.apply () (instFstOrSnd PLC.FstPair) (PIR.var () p))) + (PIR.apply () (instFstOrSnd PLC.SndPair) (PIR.var () p)) + _BuiltinCasing -> + -- > /\a b r -> + -- > \(p : pair a b) (f : a -> b -> r) -> + -- > (case r p f) + fmap (const annMayInline) . runQuote $ do + a <- freshTyName "a" + b <- freshTyName "b" + r <- freshTyName "r" + p <- freshName "p" + f <- freshName "f" + let + pairTy = + PLC.TyApp () + (PLC.TyApp () + (PLC.mkTyBuiltin @_ @(,) ()) + (PLC.TyVar () a)) + (PLC.TyVar () b) + contTy = + PLC.TyFun () (PLC.TyVar () a) $ + PLC.TyFun () (PLC.TyVar () b) (PLC.TyVar () r) + + pure $ + PIR.tyAbs () a (PLC.Type ()) $ + PIR.tyAbs () b (PLC.Type ()) $ + PIR.tyAbs () r (PLC.Type ()) $ + PIR.lamAbs () p pairTy $ + PIR.lamAbs () f contTy $ + PIR.kase () (PLC.TyVar () r) (PIR.Var () p) [PIR.Var () f] + defineBuiltinTerm annMayInline 'Builtins.caseList' $ case datatypeStyle of style | style == PIR.ScottEncoding || style == PIR.SumsOfProducts -> -- > /\a r -> @@ -473,7 +539,22 @@ defineBuiltinTerms = do (PLC.TyVar () a) (PIR.Var () b) [PIR.Var () y, PIR.Var () x] - PLC.ChooseUnit -> defineBuiltinInl 'Builtins.chooseUnit + PLC.ChooseUnit -> case datatypeStyle of + PIR.ScottEncoding -> defineBuiltinInl 'Builtins.chooseUnit + PIR.SumsOfProducts -> defineBuiltinInl 'Builtins.chooseUnit + PIR.BuiltinCasing -> defineBuiltinTerm annMayInline 'Builtins.chooseUnit $ + fmap (const annMayInline) . runQuote $ do + r <- freshTyName "r" + unit <- freshName "unit" + x <- freshName "x" + return $ + PIR.tyAbs () r (PLC.Type ()) $ + PIR.lamAbs () unit (PLC.mkTyBuiltin @_ @() ()) $ + PIR.lamAbs () x (PLC.TyVar () r) $ + PIR.kase () + (PLC.TyVar () r) + (PIR.Var () unit) + [ PIR.var () x ] -- Bytestrings PLC.AppendByteString -> defineBuiltinInl 'Builtins.appendByteString PLC.ConsByteString -> defineBuiltinInl 'Builtins.consByteString @@ -512,8 +593,64 @@ defineBuiltinTerms = do -- Tracing PLC.Trace -> defineBuiltinInl 'Builtins.trace -- Pairs - PLC.FstPair -> defineBuiltinInl 'Builtins.fst - PLC.SndPair -> defineBuiltinInl 'Builtins.snd + PLC.FstPair -> case datatypeStyle of + PIR.ScottEncoding -> defineBuiltinInl 'Builtins.fst + PIR.SumsOfProducts -> defineBuiltinInl 'Builtins.fst + PIR.BuiltinCasing -> defineBuiltinTerm annMayInline 'Builtins.fst $ + fmap (const annMayInline) . runQuote $ do + a <- freshTyName "a" + b <- freshTyName "b" + x <- freshName "x" + l <- freshName "l" + r <- freshName "r" + let + pairTy = + PLC.TyApp () + (PLC.TyApp () + (PLC.mkTyBuiltin @_ @(,) ()) + (PLC.TyVar () a) + ) + (PLC.TyVar () b) + return $ + PIR.tyAbs () a (PLC.Type ()) $ + PIR.tyAbs () b (PLC.Type ()) $ + PIR.lamAbs () x pairTy $ + PIR.kase () + (PLC.TyVar () a) + (PIR.Var () x) + [ PIR.lamAbs () l (PLC.TyVar () a) $ + PIR.lamAbs () r (PLC.TyVar () b) $ + PIR.var () l + ] + PLC.SndPair -> case datatypeStyle of + PIR.ScottEncoding -> defineBuiltinInl 'Builtins.snd + PIR.SumsOfProducts -> defineBuiltinInl 'Builtins.snd + PIR.BuiltinCasing -> defineBuiltinTerm annMayInline 'Builtins.snd $ + fmap (const annMayInline) . runQuote $ do + a <- freshTyName "a" + b <- freshTyName "b" + x <- freshName "x" + l <- freshName "l" + r <- freshName "r" + let + pairTy = + PLC.TyApp () + (PLC.TyApp () + (PLC.mkTyBuiltin @_ @(,) ()) + (PLC.TyVar () a) + ) + (PLC.TyVar () b) + return $ + PIR.tyAbs () a (PLC.Type ()) $ + PIR.tyAbs () b (PLC.Type ()) $ + PIR.lamAbs () x pairTy $ + PIR.kase () + (PLC.TyVar () b) + (PIR.Var () x) + [ PIR.lamAbs () l (PLC.TyVar () a) $ + PIR.lamAbs () r (PLC.TyVar () b) $ + PIR.var () r + ] PLC.MkPairData -> defineBuiltinInl 'Builtins.mkPairData -- List PLC.NullList -> defineBuiltinInl 'Builtins.null diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.eval.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.eval.golden index a56a9bc82f7..09b1b0ff519 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.eval.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.eval.golden @@ -1,6 +1,6 @@ -CPU: 6_889_454 -Memory: 24_823 -Term Size: 213 -Flat Size: 220 +CPU: 6_401_583 +Memory: 25_195 +Term Size: 218 +Flat Size: 226 (con data (Constr 0 [I 20, I 40, I 60, I 80])) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.pir.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.pir.golden index c786833c912..18039203d97 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.pir.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.pir.golden @@ -18,7 +18,11 @@ let (cont : integer -> integer -> integer -> integer -> r) (fail : unit -> r) -> let - !l : list data = sndPair {integer} {list data} (unConstrData scrut) + !l : list data + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l !l : list data = tailList {data} l in @@ -34,25 +38,33 @@ in in case (all dead. data) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger 0 (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) = unConstrData d in case (all dead. data) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) = unConstrData d in case (all dead. data) - (equalsInteger 2 (fstPair {integer} {list data} tup)) + (equalsInteger + 2 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !args : list data = sndPair {integer} {list data} tup + !args : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] !y : data = headList {data} (tailList {data} args) !ds : data = headList {data} args in @@ -88,7 +100,16 @@ in (\(void : unit) -> fail ())) (\(void : unit) -> fail ())) ] {all dead. dead}) - , (/\dead -> headList {data} (sndPair {integer} {list data} tup)) ] + , (/\dead -> + headList + {data} + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])) ] {all dead. dead}) - , (/\dead -> headList {data} (sndPair {integer} {list data} tup)) ] + , (/\dead -> + headList + {data} + (case (list data) tup [(\(l : integer) (r : list data) -> r)])) ] {all dead. dead} \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.uplc.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.uplc.golden index ebf69d36329..2104f3f5fd4 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.uplc.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum-manual.uplc.golden @@ -2,57 +2,53 @@ 1.1.0 (\d -> (\cse -> - (\cse -> - case - (equalsInteger 0 cse) - [ (case - (equalsInteger 1 cse) - [ (case - (equalsInteger 2 cse) - [ ((\cse -> case cse [cse]) error) - , ((\args -> - (\y -> - (\`$mInts` -> - `$mInts` - (force headList args) - (\x y z w -> - `$mInts` - y - (\x y z w -> - constrData - 0 + case + (equalsInteger 0 (case cse [(\l r -> l)])) + [ (case + (equalsInteger 1 (case cse [(\l r -> l)])) + [ (case + (equalsInteger 2 (case cse [(\l r -> l)])) + [ ((\cse -> case cse [cse]) error) + , ((\args -> + (\y -> + (\`$mInts` -> + `$mInts` + (force headList args) + (\x y z w -> + `$mInts` + y + (\x y z w -> + constrData + 0 + (force mkCons + (iData (addInteger x x)) (force mkCons - (iData (addInteger x x)) + (iData (addInteger y y)) (force mkCons - (iData (addInteger y y)) + (iData (addInteger z z)) (force mkCons (iData - (addInteger z z)) - (force mkCons - (iData - (addInteger w w)) - []))))) - (\void -> - (\cse -> case cse [cse]) error))) - (\scrut cont fail -> + (addInteger w w)) + []))))) + (\void -> + (\cse -> case cse [cse]) error))) + (\scrut cont fail -> + (\l -> (\l -> (\l -> - (\l -> - cont - (unIData (force headList l)) - (unIData (force headList l)) - (unIData (force headList l)) - (unIData - (force headList - (force tailList l)))) - (force tailList l)) + cont + (unIData (force headList l)) + (unIData (force headList l)) + (unIData (force headList l)) + (unIData + (force headList + (force tailList l)))) (force tailList l)) - (force (force sndPair) - (unConstrData scrut))) - (\void -> (\cse -> case cse [cse]) error)) - (force headList (force tailList args))) - (force (force sndPair) cse)) ]) - , (force headList (force (force sndPair) cse)) ]) - , (force headList (force (force sndPair) cse)) ]) - (force (force fstPair) cse)) + (force tailList l)) + (case (unConstrData scrut) [(\l r -> r)])) + (\void -> (\cse -> case cse [cse]) error)) + (force headList (force tailList args))) + (case cse [(\l r -> r)])) ]) + , (force headList (case cse [(\l r -> r)])) ]) + , (force headList (case cse [(\l r -> r)])) ]) (unConstrData d))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.eval.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.eval.golden index d4d8a11ea40..f43c977ea5d 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.eval.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.eval.golden @@ -1,6 +1,6 @@ -CPU: 6_841_454 -Memory: 24_523 -Term Size: 210 -Flat Size: 217 +CPU: 6_353_583 +Memory: 24_895 +Term Size: 215 +Flat Size: 223 (con data (Constr 0 [I 20, I 40, I 60, I 80])) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.pir.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.pir.golden index 28d7821cb78..7c37049d679 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.pir.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.pir.golden @@ -18,7 +18,11 @@ let (cont : integer -> integer -> integer -> integer -> r) (fail : unit -> r) -> let - !l : list data = sndPair {integer} {list data} (unConstrData scrut) + !l : list data + = case + (list data) + (unConstrData scrut) + [(\(l : integer) (r : list data) -> r)] !l : list data = tailList {data} l !l : list data = tailList {data} l in @@ -34,25 +38,33 @@ in in case (all dead. data) - (equalsInteger 0 (fstPair {integer} {list data} tup)) + (equalsInteger 0 (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) = unConstrData d in case (all dead. data) - (equalsInteger 1 (fstPair {integer} {list data} tup)) + (equalsInteger + 1 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> let !tup : pair integer (list data) = unConstrData d in case (all dead. data) - (equalsInteger 2 (fstPair {integer} {list data} tup)) + (equalsInteger + 2 + (case integer tup [(\(l : integer) (r : list data) -> l)])) [ (/\dead -> fail ()) , (/\dead -> let - !l : list data = sndPair {integer} {list data} tup + !l : list data + = case + (list data) + tup + [(\(l : integer) (r : list data) -> r)] in `$mInts` {data} @@ -86,7 +98,16 @@ in (\(void : unit) -> fail ())) (\(void : unit) -> fail ())) ] {all dead. dead}) - , (/\dead -> headList {data} (sndPair {integer} {list data} tup)) ] + , (/\dead -> + headList + {data} + (case + (list data) + tup + [(\(l : integer) (r : list data) -> r)])) ] {all dead. dead}) - , (/\dead -> headList {data} (sndPair {integer} {list data} tup)) ] + , (/\dead -> + headList + {data} + (case (list data) tup [(\(l : integer) (r : list data) -> r)])) ] {all dead. dead} \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.uplc.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.uplc.golden index 6fd2dd0365d..08f2cd69e7f 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.uplc.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/destructSum.uplc.golden @@ -2,54 +2,49 @@ 1.1.0 (\d -> (\cse -> - (\cse -> - case - (equalsInteger 0 cse) - [ (case - (equalsInteger 1 cse) - [ (case - (equalsInteger 2 cse) - [ ((\cse -> case cse [cse]) error) - , ((\l -> - (\`$mInts` -> - `$mInts` - (force headList l) - (\x y z w -> - `$mInts` - (force headList (force tailList l)) - (\x y z w -> - constrData - 0 + case + (equalsInteger 0 (case cse [(\l r -> l)])) + [ (case + (equalsInteger 1 (case cse [(\l r -> l)])) + [ (case + (equalsInteger 2 (case cse [(\l r -> l)])) + [ ((\cse -> case cse [cse]) error) + , ((\l -> + (\`$mInts` -> + `$mInts` + (force headList l) + (\x y z w -> + `$mInts` + (force headList (force tailList l)) + (\x y z w -> + constrData + 0 + (force mkCons + (iData (addInteger x x)) (force mkCons - (iData (addInteger x x)) + (iData (addInteger y y)) (force mkCons - (iData (addInteger y y)) + (iData (addInteger z z)) (force mkCons - (iData (addInteger z z)) - (force mkCons - (iData - (addInteger w w)) - []))))) - (\void -> - (\cse -> case cse [cse]) error))) - (\scrut cont fail -> + (iData (addInteger w w)) + []))))) + (\void -> (\cse -> case cse [cse]) error))) + (\scrut cont fail -> + (\l -> (\l -> (\l -> - (\l -> - cont - (unIData (force headList l)) - (unIData (force headList l)) - (unIData (force headList l)) - (unIData - (force headList - (force tailList l)))) - (force tailList l)) + cont + (unIData (force headList l)) + (unIData (force headList l)) + (unIData (force headList l)) + (unIData + (force headList + (force tailList l)))) (force tailList l)) - (force (force sndPair) - (unConstrData scrut))) - (\void -> (\cse -> case cse [cse]) error)) - (force (force sndPair) cse)) ]) - , (force headList (force (force sndPair) cse)) ]) - , (force headList (force (force sndPair) cse)) ]) - (force (force fstPair) cse)) + (force tailList l)) + (case (unConstrData scrut) [(\l r -> r)])) + (\void -> (\cse -> case cse [cse]) error)) + (case cse [(\l r -> r)])) ]) + , (force headList (case cse [(\l r -> r)])) ]) + , (force headList (case cse [(\l r -> r)])) ]) (unConstrData d))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.eval.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.eval.golden index e3228e07d88..57f35273918 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.eval.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.eval.golden @@ -1,6 +1,6 @@ -CPU: 510_574 -Memory: 1_728 +CPU: 368_582 +Memory: 1_696 Term Size: 15 -Flat Size: 31 +Flat Size: 32 (con integer 10) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.pir.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.pir.golden index b6f8c30767c..58ffae4f808 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.pir.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.pir.golden @@ -3,4 +3,11 @@ let Unit : Unit in \(d : data) -> - unIData (headList {data} (sndPair {integer} {list data} (unConstrData d))) \ No newline at end of file + unIData + (headList + {data} + ((let + b = list data + in + \(x : pair integer b) -> case b x [(\(l : integer) (r : b) -> r)]) + (unConstrData d))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.uplc.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.uplc.golden index 95ce2ef4dd4..2c9e6d4b3a4 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.uplc.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField-manual.uplc.golden @@ -1,3 +1,3 @@ (program 1.1.0 - (\d -> unIData (force headList (force (force sndPair) (unConstrData d))))) \ No newline at end of file + (\d -> unIData (force headList (case (unConstrData d) [(\l r -> r)])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.eval.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.eval.golden index e3228e07d88..57f35273918 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.eval.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.eval.golden @@ -1,6 +1,6 @@ -CPU: 510_574 -Memory: 1_728 +CPU: 368_582 +Memory: 1_696 Term Size: 15 -Flat Size: 31 +Flat Size: 32 (con integer 10) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.pir.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.pir.golden index b6f8c30767c..58ffae4f808 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.pir.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.pir.golden @@ -3,4 +3,11 @@ let Unit : Unit in \(d : data) -> - unIData (headList {data} (sndPair {integer} {list data} (unConstrData d))) \ No newline at end of file + unIData + (headList + {data} + ((let + b = list data + in + \(x : pair integer b) -> case b x [(\(l : integer) (r : b) -> r)]) + (unConstrData d))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.uplc.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.uplc.golden index 95ce2ef4dd4..2c9e6d4b3a4 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.uplc.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/onlyUseFirstField.uplc.golden @@ -1,3 +1,3 @@ (program 1.1.0 - (\d -> unIData (force headList (force (force sndPair) (unConstrData d))))) \ No newline at end of file + (\d -> unIData (force headList (case (unConstrData d) [(\l r -> r)])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.eval.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.eval.golden index ff2736a951d..c6c1f202b17 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.eval.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.eval.golden @@ -1,5 +1,5 @@ -CPU: 3_887_113 -Memory: 12_140 +CPU: 3_745_121 +Memory: 12_108 Term Size: 126 Flat Size: 135 diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.pir.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.pir.golden index 50d68fd6c8e..cfd6facc7eb 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.pir.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.pir.golden @@ -8,7 +8,12 @@ let in \(d : data) -> let - !l : list data = sndPair {integer} {list data} (unConstrData d) + !l : list data + = (let + b = list data + in + \(x : pair integer b) -> case b x [(\(l : integer) (r : b) -> r)]) + (unConstrData d) !l : list data = tailList {data} l !l : list data = tailList {data} l !x : integer = unIData (headList {data} l) diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.uplc.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.uplc.golden index 77093e47135..a9148fa393b 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.uplc.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/patternMatching.uplc.golden @@ -27,4 +27,4 @@ (unIData (force headList l))) (force tailList l)) (force tailList l)) - (force (force sndPair) (unConstrData d)))) \ No newline at end of file + (case (unConstrData d) [(\l r -> r)]))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.eval.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.eval.golden index f97fa272da2..3d8de942dd6 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.eval.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.eval.golden @@ -1,5 +1,5 @@ -CPU: 9_680_548 -Memory: 34_088 +CPU: 9_112_580 +Memory: 33_960 Term Size: 175 Flat Size: 168 diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.pir.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.pir.golden index 9aa4b2de078..3a3a3fc0117 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.pir.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.pir.golden @@ -12,7 +12,13 @@ let (cont : integer -> integer -> integer -> integer -> r) (fail : unit -> r) -> let - !l : list data = sndPair {integer} {list data} (unConstrData scrut) + !l : list data + = (let + b = list data + in + \(x : pair integer b) -> + case b x [(\(l : integer) (r : b) -> r)]) + (unConstrData scrut) !l : list data = tailList {data} l !l : list data = tailList {data} l in diff --git a/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.uplc.golden b/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.uplc.golden index bdc3b5e062d..156e1063036 100644 --- a/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.uplc.golden +++ b/plutus-tx-plugin/test/AsData/Budget/9.6/recordFields.uplc.golden @@ -34,4 +34,4 @@ (unIData (force headList (force tailList l)))) (force tailList l)) (force tailList l)) - (force (force sndPair) (unConstrData d))))) \ No newline at end of file + (case (unConstrData d) [(\l r -> r)])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/Budget/9.6/map1.eval.golden b/plutus-tx-plugin/test/Budget/9.6/map1.eval.golden index 372f1fd582c..7b013b51d86 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map1.eval.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map1.eval.golden @@ -1,7 +1,7 @@ -CPU: 169_395_592 -Memory: 324_042 +CPU: 155_773_381 +Memory: 320_970 Term Size: 329 -Flat Size: 336 +Flat Size: 337 (constr 0 diff --git a/plutus-tx-plugin/test/Budget/9.6/map1.pir.golden b/plutus-tx-plugin/test/Budget/9.6/map1.pir.golden index 46450bc0fcb..d37f9f17ee5 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map1.pir.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map1.pir.golden @@ -49,11 +49,18 @@ let [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> Maybe data) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> - Just {data} (sndPair {data} {data} hd)) ] + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] {all dead. dead}) , (Nothing {data}) ] in @@ -105,7 +112,12 @@ in (all dead. list (pair data data) -> list (pair data data)) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) [ (/\dead -> \(eta : list (pair data data)) -> mkCons {pair data data} hd (go eta)) @@ -131,7 +143,9 @@ in case (all dead. list (pair data data) -> list (pair data data)) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) [ (/\dead -> \(eta : list (pair data data)) -> mkCons {pair data data} hd (go eta)) diff --git a/plutus-tx-plugin/test/Budget/9.6/map1.uplc.golden b/plutus-tx-plugin/test/Budget/9.6/map1.uplc.golden index aa58780a645..dfb5fb42b32 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map1.uplc.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map1.uplc.golden @@ -19,11 +19,11 @@ xs [ (\hd -> case - (equalsData k (force (force fstPair) hd)) + (equalsData k (case hd [(\l r -> l)])) [ (\x -> s s x) , (\ds -> constr 0 - [(force (force sndPair) hd)]) ]) + [(case hd [(\l r -> r)])]) ]) , (constr 1 []) ]) ds) (`$dToData` ds)) @@ -35,7 +35,7 @@ xs [ (\hd -> case - (equalsData k (force (force fstPair) hd)) + (equalsData k (case hd [(\l r -> l)])) [(\eta -> force mkCons hd (s s eta)), (\x -> x)]) , [] ])) (iData (addInteger 5 n)) @@ -60,8 +60,9 @@ case (equalsData k - (force (force fstPair) - hd)) + (case + hd + [(\l r -> l)])) [ (\eta -> force mkCons hd diff --git a/plutus-tx-plugin/test/Budget/9.6/map2.eval.golden b/plutus-tx-plugin/test/Budget/9.6/map2.eval.golden index cc13c3d246e..9b1534b5b3b 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map2.eval.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map2.eval.golden @@ -1,7 +1,7 @@ -CPU: 76_658_230 -Memory: 199_974 +CPU: 67_859_382 +Memory: 197_990 Term Size: 425 -Flat Size: 452 +Flat Size: 455 (constr 1 diff --git a/plutus-tx-plugin/test/Budget/9.6/map2.pir.golden b/plutus-tx-plugin/test/Budget/9.6/map2.pir.golden index 5c6b21e229f..87bd30fe226 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map2.pir.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map2.pir.golden @@ -19,8 +19,8 @@ letrec (Tuple2 {integer} {integer} - (unIData (fstPair {data} {data} hd)) - (unIData (sndPair {data} {data} hd))) + (unIData (case data hd [(\(l : data) (r : data) -> l)])) + (unIData (case data hd [(\(l : data) (r : data) -> r)]))) (go tl)) , (Nil {Tuple2 integer integer}) ] in @@ -127,8 +127,8 @@ in xs [ (\(hd : pair data data) (tl : list (pair data data)) -> let - !v' : data = sndPair {data} {data} hd - !k' : data = fstPair {data} {data} hd + !v' : data = case data hd [(\(l : data) (r : data) -> r)] + !k' : data = case data hd [(\(l : data) (r : data) -> l)] in letrec !go : list (pair data data) -> Maybe data @@ -140,13 +140,22 @@ in case (all dead. list (pair data data) -> Maybe data) - (equalsData k' (fstPair {data} {data} hd)) + (equalsData + k' + (case + data + hd + [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> Just {data} - (sndPair {data} {data} hd)) ] + (case + data + hd + [ (\(l : data) (r : data) -> + r) ])) ] {all dead. dead}) , (Nothing {data}) ] in @@ -206,7 +215,7 @@ in case (all dead. list (pair data data)) (let - !k : data = fstPair {data} {data} hd + !k : data = case data hd [(\(l : data) (r : data) -> l)] in letrec !go : list (pair data data) -> bool @@ -217,7 +226,12 @@ in [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> bool) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> diff --git a/plutus-tx-plugin/test/Budget/9.6/map2.uplc.golden b/plutus-tx-plugin/test/Budget/9.6/map2.uplc.golden index 3e09b63a03d..8e8bff33c56 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map2.uplc.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map2.uplc.golden @@ -32,17 +32,18 @@ case (equalsData k - (force - (force - fstPair) - hd)) + (case + hd + [ (\l + r -> + l) ])) [ (\x -> s s x) , (\ds -> True) ]) , False ]) nt) - (force (force fstPair) hd)) + (case hd [(\l r -> l)])) [(force mkCons hd tl'), tl']) (s s tl)) , [] ]) @@ -63,32 +64,38 @@ [(addInteger 5 n), 5]) , (constr 0 []) ]) ]) ]) ]) ]))) - ((\s -> s s) - (\s xs -> + ((\s -> + s s) + (\s + xs -> case xs - [ (\hd tl -> + [ (\hd + tl -> (\v' -> (\k' -> case - ((\s -> s s) - (\s xs -> + ((\s -> + s s) + (\s + xs -> case xs [ (\hd -> case (equalsData k' - (force - (force fstPair) - hd)) + (case + hd + [(\l r -> l)])) [ (\x -> s s x) , (\ds -> constr 0 - [ (force - (force - sndPair) - hd) ]) ]) + [ (case + hd + [ (\l + r -> + r) ]) ]) ]) , (constr 1 []) ]) nt) [ (\r -> @@ -103,8 +110,8 @@ , (force mkCons (mkPairData k' v') (s s tl)) ]) - (force (force fstPair) hd)) - (force (force sndPair) hd)) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) , [] ]))) (unsafeFromSOPList (\i -> iData i) @@ -153,7 +160,7 @@ [ (\hd tl -> constr 1 [ (constr 0 - [ (unIData (force (force fstPair) hd)) - , (unIData (force (force sndPair) hd)) ]) + [ (unIData (case hd [(\l r -> l)])) + , (unIData (case hd [(\l r -> r)])) ]) , (s s tl) ]) , (constr 0 []) ])))) \ No newline at end of file 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 7f9834fbc39..58218cf7af4 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: 129_231_286 -Memory: 347_904 -Term Size: 684 -Flat Size: 702 +CPU: 112_163_732 +Memory: 335_284 +Term Size: 671 +Flat Size: 697 (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 3036c9d161d..b3f0b5dcea3 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map3.pir.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map3.pir.golden @@ -7,8 +7,8 @@ letrec xs [ (\(hd : pair data data) (tl : list (pair data data)) -> let - !v : data = sndPair {data} {data} hd - !k : data = fstPair {data} {data} hd + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] !eta : list (pair data data) = safeAppend tl xs !nilCase : list (pair data data) = mkCons {pair data data} (mkPairData k v) [] @@ -24,7 +24,12 @@ letrec (all dead. list (pair data data) -> list (pair data data)) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case + data + hd + [(\(l : data) (r : data) -> l)])) [ (/\dead -> \(eta : list (pair data data)) -> mkCons {pair data data} hd (go eta)) @@ -77,11 +82,18 @@ let [ (\(hd : pair data data) -> case (all dead. list (pair data data) -> Maybe data) - (equalsData k (fstPair {data} {data} hd)) + (equalsData + k + (case data hd [(\(l : data) (r : data) -> l)])) [ (/\dead -> go) , (/\dead -> \(ds : list (pair data data)) -> - Just {data} (sndPair {data} {data} hd)) ] + Just + {data} + (case + data + hd + [(\(l : data) (r : data) -> r)])) ] {all dead. dead}) , (Nothing {data}) ] in @@ -184,8 +196,8 @@ in xs [ (\(hd : pair data data) (tl : list (pair data data)) -> let - !v : data = sndPair {data} {data} hd - !k : data = fstPair {data} {data} hd + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] in Maybe_match {data} @@ -257,8 +269,8 @@ in xs [ (\(hd : pair data data) (tl : list (pair data data)) -> let - !v : data = sndPair {data} {data} hd - !k : data = fstPair {data} {data} hd + !v : data = case data hd [(\(l : data) (r : data) -> r)] + !k : data = case data hd [(\(l : data) (r : data) -> l)] in Maybe_match {data} @@ -355,31 +367,36 @@ in (Tuple2 {integer} {a} - (`$dUnsafeFromData` (fstPair {data} {data} hd)) - (`$dUnsafeFromData` (sndPair {data} {data} hd))) + (`$dUnsafeFromData` + (case data hd [(\(l : data) (r : data) -> l)])) + (`$dUnsafeFromData` + (case data hd [(\(l : data) (r : data) -> r)]))) (go tl)) , (Nil {Tuple2 integer a}) ] in \(d : (\k a -> list (pair data data)) integer a) -> go d) unIData (\(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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) + (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)) 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 4143606079d..6955aa864fb 100644 --- a/plutus-tx-plugin/test/Budget/9.6/map3.uplc.golden +++ b/plutus-tx-plugin/test/Budget/9.6/map3.uplc.golden @@ -52,53 +52,47 @@ constr 1 [ (constr 0 [ (unIData - (force - (force - fstPair) - hd)) - , ((\tup -> - (\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) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) + (case + hd + [ (\l + r -> + l) ])) + , (case (unConstrData - (force - (force - sndPair) - hd))) ]) + (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) ]) ]) , (s s tl) ]) , (constr 0 []) ]) nt)) @@ -140,9 +134,8 @@ [ (unIData v) ]))) (s s tl)) ]) - (force (force fstPair) - hd)) - (force (force sndPair) hd)) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) , [] ]))) (unsafeFromSOPList (\i -> iData i) @@ -202,8 +195,8 @@ [ (unIData v) ]))) (s s tl)) ]) - (force (force fstPair) hd)) - (force (force sndPair) hd)) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) , [] ]))) (unsafeFromSOPList (\i -> iData i) @@ -264,9 +257,9 @@ xs [ (\hd -> case - (equalsData k (force (force fstPair) hd)) + (equalsData k (case hd [(\l r -> l)])) [ (\x -> s s x) - , (\ds -> constr 0 [(force (force sndPair) hd)]) ]) + , (\ds -> constr 0 [(case hd [(\l r -> r)])]) ]) , (constr 1 []) ])))) ((\s -> s s) (\s xs xs -> @@ -285,7 +278,7 @@ case (equalsData k - (force (force fstPair) hd)) + (case hd [(\l r -> l)])) [ (\eta -> force mkCons hd (s s eta)) , (force mkCons @@ -294,6 +287,6 @@ eta) (force mkCons (mkPairData k v) [])) (s s tl xs)) - (force (force fstPair) hd)) - (force (force sndPair) hd)) + (case hd [(\l r -> l)])) + (case hd [(\l r -> r)])) , xs ])))) \ No newline at end of file diff --git a/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.eval.golden b/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.eval.golden index ca41b3394ed..453f2c455d9 100644 --- a/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.eval.golden +++ b/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.eval.golden @@ -1,6 +1,6 @@ -CPU: 1_008_802 -Memory: 3_661 +CPU: 724_915 +Memory: 3_597 Term Size: 66 -Flat Size: 77 +Flat Size: 78 (con integer 1) \ No newline at end of file diff --git a/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.pir.golden b/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.pir.golden index 12c8dbaa452..30a345f7985 100644 --- a/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.pir.golden +++ b/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.pir.golden @@ -15,8 +15,8 @@ Tuple2 {integer} {b} - (fstPair {integer} {b} tup) - (sndPair {integer} {b} tup)) + (case integer tup [(\(l : integer) (r : b) -> l)]) + (case b tup [(\(l : integer) (r : b) -> r)])) (unConstrData ds)) {integer} (\(ds : integer) (ds : list data) -> @@ -34,8 +34,8 @@ Tuple2 {integer} {b} - (fstPair {integer} {b} tup) - (sndPair {integer} {b} tup)) + (case integer tup [(\(l : integer) (r : b) -> l)]) + (case b tup [(\(l : integer) (r : b) -> r)])) (unConstrData ds)) {integer} (\(ds : integer) (ds : list data) -> diff --git a/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.uplc.golden b/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.uplc.golden index f4baf480058..b7b32a6c674 100644 --- a/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.uplc.golden +++ b/plutus-tx-plugin/test/Budget/9.6/matchAsDataE.uplc.golden @@ -3,8 +3,7 @@ ((\ds -> case ((\tup -> - constr 0 - [(force (force fstPair) tup), (force (force sndPair) tup)]) + constr 0 [(case tup [(\l r -> l)]), (case tup [(\l r -> r)])]) (unConstrData ds)) [ (\ds ds -> case @@ -12,8 +11,7 @@ [ (case ((\tup -> constr 0 - [ (force (force fstPair) tup) - , (force (force sndPair) tup) ]) + [(case tup [(\l r -> l)]), (case tup [(\l r -> r)])]) (unConstrData ds)) [ (\ds ds -> case 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 f39ec707011..96921707284 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: 5_641_857 -Memory: 20_224 -Term Size: 205 -Flat Size: 202 +CPU: 3_182_422 +Memory: 13_404 +Term Size: 140 +Flat Size: 153 (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 5f105f25bee..e19a4131d87 100644 --- a/plutus-tx-plugin/test/Budget/9.6/toFromData.pir.golden +++ b/plutus-tx-plugin/test/Budget/9.6/toFromData.pir.golden @@ -7,6 +7,8 @@ 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) @@ -77,75 +79,86 @@ in \(`$dUnsafeFromData` : (\a -> data -> a) integer) (`$dUnsafeFromData` : (\a -> data -> a) b) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - 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) + 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)) unIData ((let a = Tuple3 bool integer bool in \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + 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)) (\(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Tuple3 bool integer bool) - index - [ (\(ds : list data) -> - let - !l : list data = tailList {data} ds - in - Tuple3 - {bool} - {integer} - {bool} - (let - !tup : pair integer (list data) - = unConstrData (headList {data} ds) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args) - (unIData (headList {data} l)) - (let - !tup : pair integer (list data) - = unConstrData (headList {data} (tailList {data} l)) - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> bool) - index - [(\(ds : list data) -> False), (\(ds : list data) -> True)] - args)) ] - args)) + 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))) 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 35b21433cff..6365cded13b 100644 --- a/plutus-tx-plugin/test/Budget/9.6/toFromData.uplc.golden +++ b/plutus-tx-plugin/test/Budget/9.6/toFromData.uplc.golden @@ -1,94 +1,6 @@ (program 1.1.0 - ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> constr 0 [(unIData (force headList ds))]) - , (\ds -> - constr 1 - [ ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - constr 0 - [ ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - (\l -> - constr 0 - [ ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - ds))) - , (unIData - (force - headList - l)) - , ((\tup -> - (\index -> - (\args -> - case - index - [ (\ds -> - False) - , (\ds -> - True) ] - args) - (force - (force - sndPair) - tup)) - (force - (force - fstPair) - tup)) - (unConstrData - (force - headList - (force - tailList - l)))) ]) - (force tailList - ds)) ] - args) - (force (force sndPair) - tup)) - (force (force fstPair) tup)) - (unConstrData - (force headList ds))) ]) - , (\ds -> constr 1 []) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) - (unConstrData (force headList ds))) ]) ] - args) - (force (force sndPair) tup)) - (force (force fstPair) tup)) + (case (unConstrData (constrData 1 @@ -104,4 +16,67 @@ (iData 1) (force mkCons (Constr 0 []) [])))) [])) - []))))) \ No newline at end of file + []))) + [ (\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 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 baea9450b08..375f9f8de46 100644 --- a/plutus-tx-plugin/test/IsData/9.6/MyMonoData.th.golden +++ b/plutus-tx-plugin/test/IsData/9.6/MyMonoData.th.golden @@ -19,16 +19,13 @@ 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 = let {!tup_13 = PlutusTx.Builtins.Internal.unsafeDataAsConstr d_12; - !index_14 = PlutusTx.Builtins.Internal.fst tup_13; - !args_15 = PlutusTx.Builtins.Internal.snd tup_13} - in PlutusTx.Builtins.Internal.caseInteger index_14 [\case - {(PlutusTx.AsData.Internal.wrapUnsafeUncons -> ((PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_16), - (PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_17)))) -> Plugin.Data.Spec.Mono1 arg_16 arg_17; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}, - \case - {(PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_18)) -> Plugin.Data.Spec.Mono2 arg_18; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}, - \case - {(PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_19)) -> Plugin.Data.Spec.Mono3 arg_19; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}] args_15} \ No newline at end of file + 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 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 218159b6d02..9f4cb9c1b95 100644 --- a/plutus-tx-plugin/test/IsData/9.6/MyMonoRecord.th.golden +++ b/plutus-tx-plugin/test/IsData/9.6/MyMonoRecord.th.golden @@ -13,10 +13,7 @@ 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 = let {!tup_9 = PlutusTx.Builtins.Internal.unsafeDataAsConstr d_8; - !index_10 = PlutusTx.Builtins.Internal.fst tup_9; - !args_11 = PlutusTx.Builtins.Internal.snd tup_9} - in PlutusTx.Builtins.Internal.caseInteger index_10 [\case - {(PlutusTx.AsData.Internal.wrapUnsafeUncons -> ((PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_12), - (PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_13)))) -> Plugin.Data.Spec.MyMonoRecord arg_12 arg_13; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}] args_11} \ No newline at end of file + 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 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 7e4c7f4afd5..fbee3a576d8 100644 --- a/plutus-tx-plugin/test/IsData/9.6/MyPolyData.th.golden +++ b/plutus-tx-plugin/test/IsData/9.6/MyPolyData.th.golden @@ -22,13 +22,10 @@ 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 = let {!tup_13 = PlutusTx.Builtins.Internal.unsafeDataAsConstr d_12; - !index_14 = PlutusTx.Builtins.Internal.fst tup_13; - !args_15 = PlutusTx.Builtins.Internal.snd tup_13} - in PlutusTx.Builtins.Internal.caseInteger index_14 [\case - {(PlutusTx.AsData.Internal.wrapUnsafeUncons -> ((PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_16), - (PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_17)))) -> Plugin.Data.Spec.Poly1 arg_16 arg_17; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}, - \case - {(PlutusTx.Builtins.Internal.head -> (PlutusTx.IsData.Class.unsafeFromBuiltinData -> arg_18)) -> Plugin.Data.Spec.Poly2 arg_18; - _ -> PlutusTx.Trace.traceError PlutusTx.ErrorCodes.reconstructCaseError}] args_15} \ No newline at end of file + 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 diff --git a/plutus-tx-plugin/test/IsData/9.6/dataToData.pir.golden b/plutus-tx-plugin/test/IsData/9.6/dataToData.pir.golden index b394ec3a304..e798df37800 100644 --- a/plutus-tx-plugin/test/IsData/9.6/dataToData.pir.golden +++ b/plutus-tx-plugin/test/IsData/9.6/dataToData.pir.golden @@ -48,7 +48,8 @@ let ~`$fEqInteger` : (\a -> a -> a -> bool) integer = equalsInteger !unsafeDataAsI : data -> integer = unIData ~`$fUnsafeFromDataInteger` : (\a -> data -> a) integer = unsafeDataAsI - !snd : all a b. pair a b -> b = sndPair + !snd : all a b. pair a b -> b + = /\a b -> \(x : pair a b) -> case b x [(\(l : a) (r : b) -> r)] ~unsafeFromBuiltinData : all a. (\a -> data -> a) a -> data -> a = /\a -> \(v : (\a -> data -> a) a) -> v !unsafeDataAsConstr : data -> pair integer (list data) = unConstrData diff --git a/plutus-tx-plugin/test/IsData/9.6/deconstructData.pir.golden b/plutus-tx-plugin/test/IsData/9.6/deconstructData.pir.golden index 6ba59948372..732f10b1d0e 100644 --- a/plutus-tx-plugin/test/IsData/9.6/deconstructData.pir.golden +++ b/plutus-tx-plugin/test/IsData/9.6/deconstructData.pir.golden @@ -5,13 +5,13 @@ let Tuple2 : a -> b -> Tuple2 a b !caseList' : all a r. r -> (a -> list a -> r) -> list a -> r = /\a r -> \(z : r) (f : a -> list a -> r) (xs : list a) -> case r xs [f, z] + !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] !chooseData : all a. data -> a -> a -> a -> a -> a -> a = chooseData !equalsInteger : integer -> integer -> bool = equalsInteger data (Maybe :: * -> *) a | Maybe_match where Just : a -> Maybe a Nothing : Maybe a - !fst : all a b. pair a b -> a = fstPair - !snd : all a b. pair a b -> b = sndPair !unsafeDataAsConstr : data -> pair integer (list data) = unConstrData ~`$fFromDataTuple2_$cfromBuiltinData` : all a b. @@ -30,88 +30,99 @@ let {Unit -> Maybe (Tuple2 a b)} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unsafeDataAsConstr d - !index : integer = fst {integer} {list data} tup - !args : list data = snd {integer} {list data} tup - in - case - (all dead. Maybe (Tuple2 a b)) - (equalsInteger 0 index) - [ (/\dead -> Nothing {Tuple2 a b}) - , (/\dead -> - Maybe_match - {Tuple2 data (list data)} - (caseList' - {data} - {Maybe (Tuple2 data (list data))} - (Nothing {Tuple2 data (list data)}) - (\(h : data) -> - let - !h : data = h - in - \(t : list data) -> - let - !t : list data = t - in - Just - {Tuple2 data (list data)} - (Tuple2 {data} {list data} h t)) - args) - {all dead. Maybe (Tuple2 a b)} - (\(ds : Tuple2 data (list data)) -> - /\dead -> - Tuple2_match - {data} - {list data} - ds - {Maybe (Tuple2 a b)} - (\(ds : data) (ds : list data) -> - Maybe_match - {a} - (`$dFromData` ds) - {all dead. Maybe (Tuple2 a b)} - (\(arg : a) -> - /\dead -> + casePair + {integer} + {list data} + {Maybe (Tuple2 a b)} + (unsafeDataAsConstr d) + (\(l : integer) -> + let + !l : integer = l + in + \(r : list data) -> + let + !r : list data = r + in + case + (all dead. Maybe (Tuple2 a b)) + (equalsInteger 0 l) + [ (/\dead -> Nothing {Tuple2 a b}) + , (/\dead -> + Maybe_match + {Tuple2 data (list data)} + (caseList' + {data} + {Maybe (Tuple2 data (list data))} + (Nothing {Tuple2 data (list data)}) + (\(h : data) -> + let + !h : data = h + in + \(t : list data) -> + let + !t : list data = t + in + Just + {Tuple2 data (list data)} + (Tuple2 {data} {list data} h t)) + r) + {all dead. Maybe (Tuple2 a b)} + (\(ds : Tuple2 data (list data)) -> + /\dead -> + Tuple2_match + {data} + {list data} + ds + {Maybe (Tuple2 a b)} + (\(ds : data) (ds : list data) -> Maybe_match - {data} - (caseList' - {data} - {Maybe data} - (Nothing {data}) - (\(h : data) -> - let - !h : data = h - in - \(ds : list data) -> - Just {data} h) - ds) + {a} + (`$dFromData` ds) {all dead. Maybe (Tuple2 a b)} - (\(ds : data) -> + (\(arg : a) -> /\dead -> Maybe_match - {b} - (`$dFromData` ds) + {data} + (caseList' + {data} + {Maybe data} + (Nothing {data}) + (\(h : data) -> + let + !h : data = h + in + \(ds : list data) -> + Just {data} h) + ds) {all dead. Maybe (Tuple2 a b)} - (\(arg : b) -> + (\(ds : data) -> /\dead -> - Just - {Tuple2 a b} - (Tuple2 - {a} - {b} - arg - arg)) + Maybe_match + {b} + (`$dFromData` ds) + {all dead. + Maybe (Tuple2 a b)} + (\(arg : b) -> + /\dead -> + Just + {Tuple2 a b} + (Tuple2 + {a} + {b} + arg + arg)) + (/\dead -> + Nothing + {Tuple2 a b}) + {all dead. dead}) (/\dead -> Nothing {Tuple2 a b}) {all dead. dead}) (/\dead -> Nothing {Tuple2 a b}) - {all dead. dead}) - (/\dead -> Nothing {Tuple2 a b}) - {all dead. dead})) - (/\dead -> Nothing {Tuple2 a b}) - {all dead. dead}) ] - {all dead. dead}) + {all dead. dead})) + (/\dead -> Nothing {Tuple2 a b}) + {all dead. dead}) ] + {all dead. dead})) (\(ds : Unit) -> Nothing {Tuple2 a b}) (\(ds : Unit) -> Nothing {Tuple2 a b}) (\(ds : Unit) -> Nothing {Tuple2 a b}) @@ -136,12 +147,12 @@ let {Unit -> Maybe integer} d (\(ds : Unit) -> - let - !tup : pair integer (list data) = unsafeDataAsConstr d - !ds : integer = fst {integer} {list data} tup - !ds : list data = snd {integer} {list data} tup - in - Nothing {integer}) + casePair + {integer} + {list data} + {Maybe integer} + (unsafeDataAsConstr d) + (\(l : integer) (r : list data) -> Nothing {integer})) (\(ds : Unit) -> let !ds : list (pair data data) = unsafeDataAsMap d diff --git a/plutus-tx-plugin/test/IsData/9.6/fieldAccessor.pir.golden b/plutus-tx-plugin/test/IsData/9.6/fieldAccessor.pir.golden index 6715118f1c4..0abace01247 100644 --- a/plutus-tx-plugin/test/IsData/9.6/fieldAccessor.pir.golden +++ b/plutus-tx-plugin/test/IsData/9.6/fieldAccessor.pir.golden @@ -6,7 +6,8 @@ let = `$fToDataInteger_$ctoBuiltinData` !unsafeDataAsI : data -> integer = unIData ~`$fUnsafeFromDataInteger` : (\a -> data -> a) integer = unsafeDataAsI - !snd : all a b. pair a b -> b = sndPair + !snd : all a b. pair a b -> b + = /\a b -> \(x : pair a b) -> case b x [(\(l : a) (r : b) -> r)] ~unsafeFromBuiltinData : all a. (\a -> data -> a) a -> data -> a = /\a -> \(v : (\a -> data -> a) a) -> v !unsafeDataAsConstr : data -> pair integer (list data) = unConstrData diff --git a/plutus-tx-plugin/test/IsData/9.6/matchAsData.pir.golden b/plutus-tx-plugin/test/IsData/9.6/matchAsData.pir.golden index ec92229b054..78022073226 100644 --- a/plutus-tx-plugin/test/IsData/9.6/matchAsData.pir.golden +++ b/plutus-tx-plugin/test/IsData/9.6/matchAsData.pir.golden @@ -49,8 +49,10 @@ let !head : all a. list a -> a = headList data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b - !fst : all a b. pair a b -> a = fstPair - !snd : all a b. pair a b -> b = sndPair + !fst : all a b. pair a b -> a + = /\a b -> \(x : pair a b) -> case a x [(\(l : a) (r : b) -> l)] + !snd : all a b. pair a b -> b + = /\a b -> \(x : pair a b) -> case b x [(\(l : a) (r : b) -> r)] ~pairToPair : all a b. pair a b -> Tuple2 a b = /\a b -> \(tup : pair a b) -> 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 87c48b3355a..13719758631 100644 --- a/plutus-tx-plugin/test/IsData/9.6/unsafeDeconstructData.pir.golden +++ b/plutus-tx-plugin/test/IsData/9.6/unsafeDeconstructData.pir.golden @@ -1,9 +1,9 @@ let data (Tuple2 :: * -> * -> *) a b | Tuple2_match where Tuple2 : a -> b -> Tuple2 a b - !fst : all a b. pair a b -> a = fstPair + !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 - !snd : all a b. pair a b -> b = sndPair !unsafeDataAsConstr : data -> pair integer (list data) = unConstrData !tail : all a. list a -> list a = tailList ~wrapTail : all a. list a -> list a = tail @@ -15,23 +15,34 @@ let (d : data) -> let !d : data = d - !tup : pair integer (list data) = unsafeDataAsConstr d - !index : integer = fst {integer} {list data} tup - !args : list data = snd {integer} {list data} tup in - case - (list data -> Tuple2 a b) - index - [ (\(ds : list data) -> + casePair + {integer} + {list data} + {Tuple2 a b} + (unsafeDataAsConstr d) + (\(index : integer) -> + let + !index : integer = index + in + \(args : list data) -> let - !ds : list data = ds + !args : list data = args in - Tuple2 - {a} - {b} - (`$dUnsafeFromData` (head {data} ds)) - (`$dUnsafeFromData` (head {data} (wrapTail {data} ds)))) ] - args + 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) ~`$fUnsafeFromDataTuple2` : all a b. (\a -> data -> a) a -> @@ -55,20 +66,30 @@ let \(`$dUnsafeFromData` : (\a -> data -> a) a) (d : data) -> let !d : data = d - !tup : pair integer (list data) = unsafeDataAsConstr d - !index : integer = fst {integer} {list data} tup - !args : list data = snd {integer} {list data} tup in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> + casePair + {integer} + {list data} + {Maybe a} + (unsafeDataAsConstr d) + (\(index : integer) -> + let + !index : integer = index + in + \(args : list data) -> let - !ds : list data = ds + !args : list data = args in - Just {a} (`$dUnsafeFromData` (head {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args + 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) ~`$fUnsafeFromDataMaybe` : all a. (\a -> data -> a) a -> (\a -> data -> a) (Maybe a) = `$fUnsafeFromDataMaybe_$cunsafeFromBuiltinData` diff --git a/plutus-tx-plugin/test/Optimization/9.6/matchAsData.pir.golden b/plutus-tx-plugin/test/Optimization/9.6/matchAsData.pir.golden index 9c4bd0ac699..328c756e23f 100644 --- a/plutus-tx-plugin/test/Optimization/9.6/matchAsData.pir.golden +++ b/plutus-tx-plugin/test/Optimization/9.6/matchAsData.pir.golden @@ -15,8 +15,8 @@ in Tuple2 {integer} {b} - (fstPair {integer} {b} tup) - (sndPair {integer} {b} tup)) + (case integer tup [(\(l : integer) (r : b) -> l)]) + (case b tup [(\(l : integer) (r : b) -> r)])) (unConstrData ds)) {integer} (\(ds : integer) (ds : list data) -> @@ -34,8 +34,8 @@ in Tuple2 {integer} {b} - (fstPair {integer} {b} tup) - (sndPair {integer} {b} tup)) + (case integer tup [(\(l : integer) (r : b) -> l)]) + (case b tup [(\(l : integer) (r : b) -> r)])) (unConstrData ds)) {integer} (\(ds : integer) (ds : list data) -> 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 1e4fb6e929d..21cec137074 100644 --- a/plutus-tx-plugin/test/Optimization/9.6/unsafeDeconstructData.pir.golden +++ b/plutus-tx-plugin/test/Optimization/9.6/unsafeDeconstructData.pir.golden @@ -4,38 +4,42 @@ 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) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Maybe a) - index - [ (\(ds : list data) -> - Just {a} (`$dUnsafeFromData` (headList {data} ds))) - , (\(ds : list data) -> Nothing {a}) ] - args) + 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)) (\(d : data) -> - let - !tup : pair integer (list data) = unConstrData d - !index : integer = fstPair {integer} {list data} tup - !args : list data = sndPair {integer} {list data} tup - in - case - (list data -> Tuple2 integer integer) - index - [ (\(ds : list data) -> - Tuple2 - {integer} - {integer} - (unIData (headList {data} ds)) - (unIData (headList {data} (tailList {data} ds)))) ] - args) + 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)) ds \ No newline at end of file diff --git a/plutus-tx-plugin/test/Plugin/Primitives/9.6/deconstructorData2.pir.golden b/plutus-tx-plugin/test/Plugin/Primitives/9.6/deconstructorData2.pir.golden index 9b710b5e9e8..1eba7d4845f 100644 --- a/plutus-tx-plugin/test/Plugin/Primitives/9.6/deconstructorData2.pir.golden +++ b/plutus-tx-plugin/test/Plugin/Primitives/9.6/deconstructorData2.pir.golden @@ -52,7 +52,8 @@ let (all a b. (a -> b) -> f a -> f b) = /\(f :: * -> *) -> \(v : (\(f :: * -> *) -> all a b. (a -> b) -> f a -> f b) f) -> v - !fst : all a b. pair a b -> a = fstPair + !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] !caseList' : all a r. r -> (a -> list a -> r) -> list a -> r = /\a r -> \(z : r) (f : a -> list a -> r) (xs : list a) -> case r xs [f, z] in @@ -73,7 +74,6 @@ letrec Cons {data} x (matchData_go xs)) in let - !snd : all a b. pair a b -> b = sndPair !unsafeDataAsConstr : data -> pair integer (list data) = unConstrData ~unsafeDataAsConstr : data -> Tuple2 integer (List data) = \(d : data) -> @@ -81,15 +81,20 @@ let !d : data = d !p : pair integer (list data) = unsafeDataAsConstr d in - Tuple2 + casePair {integer} - {List data} - (fst {integer} {list data} p) - (let - !f : list data -> List data = matchData_go - !a : list data = snd {integer} {list data} p - in - f a) + {list data} + {Tuple2 integer (List data)} + p + (\(l : integer) -> + let + !l : integer = l + in + \(r : list data) -> + let + !r : list data = r + in + Tuple2 {integer} {List data} l (matchData_go r)) !unsafeDataAsI : data -> integer = unIData ~unsafeDataAsI : data -> integer = \(d : data) -> let !d : data = d in unsafeDataAsI d diff --git a/plutus-tx-plugin/test/Plugin/Strict/9.6/strictPair.pir.golden b/plutus-tx-plugin/test/Plugin/Strict/9.6/strictPair.pir.golden index 4e017c622e9..a7fc96c3b03 100644 --- a/plutus-tx-plugin/test/Plugin/Strict/9.6/strictPair.pir.golden +++ b/plutus-tx-plugin/test/Plugin/Strict/9.6/strictPair.pir.golden @@ -1 +1,2 @@ -\(p : pair integer integer) -> fstPair {integer} {integer} p \ No newline at end of file +\(p : pair integer integer) -> + case integer p [(\(l : integer) (r : integer) -> l)] \ No newline at end of file diff --git a/plutus-tx-plugin/test/size/Golden/Rational/Serialization/fromBuiltinData.size.golden b/plutus-tx-plugin/test/size/Golden/Rational/Serialization/fromBuiltinData.size.golden index b1ef57c1f7c..34578cc4c5e 100644 --- a/plutus-tx-plugin/test/size/Golden/Rational/Serialization/fromBuiltinData.size.golden +++ b/plutus-tx-plugin/test/size/Golden/Rational/Serialization/fromBuiltinData.size.golden @@ -1 +1 @@ -265 \ No newline at end of file +239 \ 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 70e1a64c23f..b9c6c007cc1 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 @@ -144 \ No newline at end of file +131 \ No newline at end of file diff --git a/plutus-tx/src/PlutusTx/Builtins.hs b/plutus-tx/src/PlutusTx/Builtins.hs index 7795fd2fdc0..de75e201157 100644 --- a/plutus-tx/src/PlutusTx/Builtins.hs +++ b/plutus-tx/src/PlutusTx/Builtins.hs @@ -77,6 +77,7 @@ module PlutusTx.Builtins ( -- * Pairs pairToPair, + BI.casePair, -- * Lists mkNil, @@ -568,7 +569,7 @@ matchData' matchData' d ~constrCase ~mapCase ~listCase ~iCase ~bCase = chooseData d - (\_ -> let tup = BI.unsafeDataAsConstr d in constrCase (BI.fst tup) (BI.snd tup)) + (\_ -> BI.casePair (BI.unsafeDataAsConstr d) (\l r -> constrCase l r)) (\_ -> mapCase (BI.unsafeDataAsMap d)) (\_ -> listCase (BI.unsafeDataAsList d)) (\_ -> iCase (unsafeDataAsI d)) diff --git a/plutus-tx/src/PlutusTx/Builtins/HasOpaque.hs b/plutus-tx/src/PlutusTx/Builtins/HasOpaque.hs index 9359d7b2716..2494b4834f0 100644 --- a/plutus-tx/src/PlutusTx/Builtins/HasOpaque.hs +++ b/plutus-tx/src/PlutusTx/Builtins/HasOpaque.hs @@ -15,13 +15,13 @@ module PlutusTx.Builtins.HasOpaque where import Control.DeepSeq (NFData (..)) import PlutusCore.Pretty (Pretty (..)) -import PlutusTx.Base (id, ($)) +import PlutusTx.Base (id) import PlutusTx.Bool (Bool (..)) import PlutusTx.Builtins.Internal (BuiltinBLS12_381_G1_Element, BuiltinBLS12_381_G2_Element, BuiltinBLS12_381_MlResult, BuiltinByteString (..), BuiltinData, BuiltinInteger, BuiltinList (..), BuiltinPair, - BuiltinString (..), BuiltinUnit, caseList', chooseUnit, fst, - mkCons, mkPairData, snd, unitval) + BuiltinString (..), BuiltinUnit, caseList', casePair, chooseUnit, + mkCons, mkPairData, unitval) import Codec.Serialise (Serialise) import Data.ByteArray qualified as BA @@ -298,7 +298,7 @@ instance (HasFromOpaque arep a, HasFromOpaque brep b) => HasFromOpaque (BuiltinPair arep brep) (a, b) where - fromOpaque p = (fromOpaque $ fst p, fromOpaque $ snd p) + fromOpaque p = casePair p (\l r -> (fromOpaque l, fromOpaque r)) {-# INLINEABLE fromOpaque #-} instance HasToOpaque BuiltinData BuiltinData diff --git a/plutus-tx/src/PlutusTx/Builtins/Internal.hs b/plutus-tx/src/PlutusTx/Builtins/Internal.hs index 89fbb95b3e3..1ac94f30b53 100644 --- a/plutus-tx/src/PlutusTx/Builtins/Internal.hs +++ b/plutus-tx/src/PlutusTx/Builtins/Internal.hs @@ -1062,3 +1062,9 @@ expModInteger b e m = caseInteger :: Integer -> [a] -> a caseInteger i b = b !! fromIntegral i {-# OPAQUE caseInteger #-} + +-- | Case matching on a builtin pair. Continuation is needed here to make +-- it more efficient on builtin-casing implementation. +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 #-} diff --git a/plutus-tx/src/PlutusTx/IsData/TH.hs b/plutus-tx/src/PlutusTx/IsData/TH.hs index b833bf1d1b7..0b544ceea1a 100644 --- a/plutus-tx/src/PlutusTx/IsData/TH.hs +++ b/plutus-tx/src/PlutusTx/IsData/TH.hs @@ -271,12 +271,9 @@ unsafeFromDataClause indexedCons = do (\(conInfo, _) -> TH.lamCaseE [unsafeReconstructListCase conInfo, finalCase]) <$> indexedConsSorted body = - [| - -- See Note [Bang patterns in TH quotes] - let $(TH.bangP $ TH.varP tupName) = BI.unsafeDataAsConstr $(TH.varE dName) - $(TH.bangP $ TH.varP indexName) = BI.fst $(TH.varE tupName) - $(TH.bangP $ TH.varP argsName) = BI.snd $(TH.varE tupName) - in (caseInteger $(TH.varE indexName) $kases) $(TH.varE argsName) + [| BI.casePair (BI.unsafeDataAsConstr $(TH.varE dName)) $ + \($(TH.varP indexName)) ($(TH.varP argsName)) -> + (caseInteger $(TH.varE indexName) $kases) $(TH.varE argsName) |] TH.clause [TH.varP dName] (TH.normalB body) []