Skip to content

Commit

Permalink
Add expModInteger to specification (#6512)
Browse files Browse the repository at this point in the history
* Add expModInteger to specification. Closes #6339

* Reconcile with master

* Update reference to last table of builtin tags

* Remove trailing spaces

* batch -> Batch

* Be a bit more precise about the definition of expMod

* Tidying up

---------

Co-authored-by: Nikolaos Bezirgiannis <[email protected]>
Co-authored-by: kwxm <[email protected]>
  • Loading branch information
3 people authored Oct 30, 2024
1 parent 697348c commit 983eba5
Show file tree
Hide file tree
Showing 19 changed files with 193 additions and 133 deletions.
6 changes: 3 additions & 3 deletions doc/plutus-core-spec/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ BIB=${DOC}.bib

FIGS=./figures

SRC = *.tex cardano/*.tex ${BIB} # ${FIGS}/*.tex
SRC = *.tex cardano/*.tex ${BIB} # ${FIGS}/*.tex


LATEX = pdflatex -halt-on-error -shell-escape # To get pstricks to work with PDF
BIBTEX = bibtex
MAKEINDEX = makeindex

.PHONEY: all pdf figs again clean
.PHONEY: all pdf figs again clean

#----------------------------------------------------------------

Expand All @@ -36,7 +36,7 @@ figs:
cd ${FIGS} && ${MAKE}

#----------------------------------------------------------------
again:
again:
touch ${DOC}.tex && ${MAKE}

clean:
Expand Down
12 changes: 6 additions & 6 deletions doc/plutus-core-spec/builtins.tex
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ \subsubsection{Type variables}
$$
\kindstar{v} \text{\quad if $v \in \Var_*$}.
$$

\kwxm{I'm using syntax to represent kinds here. I haven't introduced actual
kinds because (a) we don't have a proper type system in Plutus Core (yet), and
(b) the \texttt{TypeScheme} type in the implementation only has one kind of
Expand Down Expand Up @@ -209,7 +209,7 @@ \subsubsection{Type assignments}
\begin{itemize}
\item $T = P$ and $S =\varnothing$.
\item $P \in \Var_\#$ and $S = \{(v_\#, T)\}$.
\item
\item
\begin{itemize}
\item $T = \op(T_1, \ldots, T_n)$ with each $T_i \in \Uni$.
\item $P = \op(P_1, \ldots, P_n)$ with each $P_i \in \Unihash$.
Expand All @@ -224,7 +224,7 @@ \subsubsection{Type assignments}

\kwxm{\sf I tried using inference rules for this but the final case
got kind of out of hand.}

\subsection{Built-in functions}
\label{sec:builtin-functions}

Expand Down Expand Up @@ -365,7 +365,7 @@ \subsubsection{Signatures and denotations of built-in functions}

\medskip
\noindent Also, given an arity $= [\iota_1, \ldots, \iota_n]$, the \textit{reduced
arity} is
arity} is
$$
\alphabar = [\iota_j : \iota_j \notin \QVar].
$$%
Expand Down Expand Up @@ -522,7 +522,7 @@ \subsubsection{Parametricity for *-polymorphic arguments}
%% \end{array}\]
%% \end{minipage}


\subsection{Evaluation of built-in functions}
\label{sec:builtin-evaluation}

Expand All @@ -548,7 +548,7 @@ \subsubsection{Compatibility of inputs and signature entries}
returning a constant of a third type. However, I think it'll be very hard to
describe what's actually going on so I'm just assuming that builtins always
check this stuff.}


\medskip
\noindent In detail, given a reduced arity $\alphabar = [\tau_1, \ldots,
Expand Down
34 changes: 18 additions & 16 deletions doc/plutus-core-spec/cardano/builtins1.tex
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ \subsubsection{Built-in types and type operators}
\texttt{data} & See below & See below\\
\hline
\end{tabular}
\caption{Atomic types, batch 1}
\caption{Atomic types, Batch 1}
\label{table:built-in-types-1}
\end{table}

Expand All @@ -47,7 +47,7 @@ \subsubsection{Built-in types and type operators}
\texttt{pair} & 2 & $\denote{\pairOf{t_1}{t_2}} = \denote{t_1} \times \denote{t_2}$ & See below\\
\hline
\end{tabular}
\caption{Type operators, batch 1}
\caption{Type operators, Batch 1}
\label{table:built-in-type-operators-1}
\end{table}

Expand Down Expand Up @@ -160,10 +160,10 @@ \subsubsection{Built-in types and type operators}
constants are

\begin{verbatim}
(con data (Constr 1 [(I 2), (B #), (Map [])])
(con data (Map [((I 0), (B #00)), ((I 1), (B #0F))]))
(con data (List [(I 0), (I 1), (B #7FFF), (List []])))
(con data (I -22))
(con data (Constr 1 [(I 2), (B #), (Map [])])
(con data (Map [((I 0), (B #00)), ((I 1), (B #0F))]))
(con data (List [(I 0), (I 1), (B #7FFF), (List []])))
(con data (I -22))
(con data (B #001A)).
\end{verbatim}
% TODO: be more relaxed about parenthesisation in general
Expand Down Expand Up @@ -204,13 +204,13 @@ \subsubsection{Built-in functions}
\hline
\endhead
\hline
\caption{Built-in functions, batch 1}
\caption{Built-in functions, Batch 1}
% This caption goes on every page of the table except the last. Ideally it
% would appear only on the first page and all the rest would say
% (continued). Unfortunately it doesn't seem to be easy to do that in a
% longtable.
\endfoot
\caption[]{Built-in functions, batch 1 (continued)}
\caption[]{Built-in functions, Batch 1 (continued)}
\label{table:built-in-functions-1}
\endlastfoot
\TT{addInteger} & $[\ty{integer}, \ty{integer}] \to \ty{integer}$ & $+$ & No & \\[2mm]
Expand Down Expand Up @@ -300,7 +300,7 @@ \subsubsection{Built-in functions}
\TT{mkPairData} & $[\ty{data}, \ty{data}]$ \text{\;\; $\to \pairOf{\ty{data}}{\ty{data}}$} & $(x,y) \mapsto (x,y) $ & No & \\[2mm]
\TT{mkNilData} & $[\ty{unit}] \to \listOf{\ty{data}} $ & $() \mapsto []$ & No & \\[2mm]
\TT{mkNilPairData} & $[\ty{unit}] $ \text{$\;\; \to \listOf{\pairOf{\ty{data}}{\ty{data}}} $} & $() \mapsto []$ & No & \\[2mm]
\hline
\hline
\end{longtable}

\kwxm{Maybe try \texttt{tabulararray} to see what sort of output that gives for the big table.}
Expand All @@ -325,6 +325,9 @@ \subsubsection{Built-in functions}
$$
|\remfn(a,b)| < |b|.
$$
\nomenclature[Azz]{$\divfn$, $\modfn$}{Integer division operations}
\nomenclature[Azz]{$\quotfn$, $\remfn$}{Integer division operations}

\noindent The $\divfn$ and $\modfn$ functions form a pair, as do $\quotfn$ and $\remfn$;
$\divfn$ should not be used in combination with $\modfn$, not should $\quotfn$ be used
with $\modfn$.
Expand Down Expand Up @@ -361,10 +364,11 @@ \subsubsection{Built-in functions}

\note{The \texttt{consByteString} function.}
\label{note:consbytestring}
In built-in semantics 1, the first argument of \texttt{consByteString} is an
arbitrary integer which will be reduced modulo 256 before being prepended to the
second argument. In built-in semantics 2 we require that the first argument lies between 0
and 255 (inclusive): in any other case an error will occur.
In built-in semantics varinat 1, the first argument of \texttt{consByteString}
is an arbitrary integer which will be reduced modulo 256 before being prepended
to the second argument. In built-in semantics varaint 2 we require that the first
argument lies between 0 and 255 (inclusive): in any other case an error will
occur.

\note{The \texttt{sliceByteString} function.}
\label{note:slicebytestring}
Expand Down Expand Up @@ -439,7 +443,7 @@ \subsubsection{Built-in functions}
digital signature verification function takes three bytestring arguments (in the
given order):
\begin{itemize}
\item a public key $\vk$ (in this context $\vk$ is also known as a \textit{verification key})
\item a public key $\vk$ (in this context $\vk$ is also known as a \textit{verification key})
\item a message $m$
\item a signature $s$.
\end{itemize}
Expand All @@ -465,8 +469,6 @@ \subsubsection{Built-in functions}
\item $s$: 64 bytes.
\end{itemize}



\note{The \texttt{trace} function.}
\label{note:trace}
An application \texttt{[(builtin trace) $s$ $v$]} ($s$ a \texttt{string}, $v$
Expand Down
4 changes: 2 additions & 2 deletions doc/plutus-core-spec/cardano/builtins2.tex
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ \subsubsection{Built-in functions}
\hline
\endhead
\hline
\caption{Built-in functions, batch 2}
\caption{Built-in functions, Batch 2}
\endfoot
\caption[]{Built-in functions, batch 2}
\caption[]{Built-in functions, Batch 2}
\label{table:built-in-functions-2}
\endlastfoot
\TT{serialiseData} & $[\ty{data}] \to \ty{bytestring}$ & $\mathcal{E}_{\mathtt{data}}$ & No
Expand Down
4 changes: 2 additions & 2 deletions doc/plutus-core-spec/cardano/builtins3.tex
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ \subsubsection{Built-in functions}
\hline
\endhead
\hline
\caption{Built-in functions, batch 3}
\caption{Built-in functions, Batch 3}
\endfoot
\caption[]{Built-in functions, batch 3}
\caption[]{Built-in functions, Batch 3}
\label{table:built-in-functions-3}
\endlastfoot
\TT{verifyEcdsaSecp256k1Signature} & $[\ty{bytestring}, \ty{bytestring}, $ \text{$\;\; \ty{bytestring}] \to \ty{bool}$}
Expand Down
24 changes: 12 additions & 12 deletions doc/plutus-core-spec/cardano/builtins4.tex
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ \subsubsection{Miscellaneous built-in functions}
% (continued). Unfortunately it doesn't seem to be easy to do that in a
% longtable.
\endfoot
%% \caption[]{Built-in functions, batch 4}
%% \caption[]{Built-in functions, Batch 4}
\caption[]{Batch 4: miscellaneous built-in functions}
\label{table:misc-built-in-functions-4}
\endlastfoot
Expand Down Expand Up @@ -94,7 +94,7 @@ \subsubsection{Miscellaneous built-in functions}
the case $n=0$:

$$
\itobsLE (w,n) = \itobsBE (w,n) =
\itobsLE (w,n) = \itobsBE (w,n) =
\begin{cases}
\errorX & \text{if $n<0$ or $n \geq 2^{65536}$}\\
\errorX & \text{if $w<0$ or $w > 8192$}\\
Expand Down Expand Up @@ -144,7 +144,7 @@ \subsubsection{Miscellaneous built-in functions}
\item A boolean endianness flag $e$.
\item The bytestring $s$ to be converted.
\end{itemize}
\noindent
\noindent
The conversion is little-endian if $e$ is \texttt{(con bool False)} and
big-endian if $e$ is \texttt{(con bool True)}. In both cases the empty bytestring is
converted to the integer 0. All bytestrings are legal inputs and there is no
Expand Down Expand Up @@ -179,16 +179,16 @@ \subsubsection{BLS12-381 built-in types}
$\TyMlResult$ & $\MlResultDenotation$ & None (see Note~\ref{note:bls-syntax})\\
\hline
\end{tabular}
\caption{Atomic types, batch 4}
\caption{Atomic types, Batch 4}
\label{table:built-in-types-4}
\end{table}

%% \paragraph{$G_1$ and $G_2$}.
\noindent Here $G_1$ and $G_2$ are both additive cyclic groups of prime order $r$, where
\noindent Here $G_1$ and $G_2$ are both additive cyclic groups of prime order $r$, where
$$
r = \mathtt{0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001}.
$$

\paragraph{The fields $\Fq$ and $\Fqq$.}
\noindent To define the groups $G_1$ and $G_2$ we need the finite field $\Fq$ where
\begin{align*}
Expand Down Expand Up @@ -294,7 +294,7 @@ \subsubsection{BLS12-381 built-in functions}
\TT{bls12\_381\_G1\_uncompress} &
$[ \ty{bytestring}]$
\text{\: $ \to \ty{bls12\_381\_G1\_element}$} & $\uncompress_{G_1}$ & Yes & \ref{note:group-uncompression}\\[2mm]
\hline
\hline
%% G2
\TT{bls12\_381\_G2\_add} &
$[ \ty{bls12\_381\_G2\_element}$,
Expand All @@ -319,7 +319,7 @@ \subsubsection{BLS12-381 built-in functions}
\TT{bls12\_381\_G2\_uncompress} &
$[ \ty{bytestring}]$
\text{\: $ \to \ty{bls12\_381\_G2\_element}$} & $\uncompress_{G_2}$ & Yes & \ref{note:group-uncompression}\\[2mm]
\hline
\hline
\TT{bls12\_381\_millerLoop} &
$[ \ty{bls12\_381\_G1\_element}$,
\text{\; $\ty{bls12\_381\_G2\_element} ]$}
Expand Down Expand Up @@ -359,7 +359,7 @@ \subsubsection{BLS12-381 built-in functions}
\newcommand{\ymin}{y_{\text{min}}}
\newcommand{\ymax}{y_{\text{max}}}

\note{Compression for elements of $G_1$ and $G_2$.}
\note{Compression for elements of $G_1$ and $G_2$.}
\label{note:group-compression}
Points in $G_1$ and $G_2$ are encoded as bytestrings in a ``compressed'' format
where only the $x$-coordinate of a point is encoded and some metadata is used to
Expand Down Expand Up @@ -397,9 +397,9 @@ \subsubsection{BLS12-381 built-in functions}
\noindent Thus in all cases the encoding of an element of $G_1$ requires exactly 384 bits,
or 48 bytes.

\medskip
\medskip

\noindent
\noindent
\begin{itemize}
\item Similarly, every non-identity element of $G_2$ can be written
in the form $(x,y)$ with $x,y \in \Fqq$. We define
Expand Down Expand Up @@ -427,7 +427,7 @@ \subsubsection{BLS12-381 built-in functions}
$y$-coordinates of a point are encoded, and in that case the leading bit of the
encoded point is 0. We do not support this format.

\note{Uncompression for elements of $G_1$ and $G_2$.}
\note{Uncompression for elements of $G_1$ and $G_2$.}
\label{note:group-uncompression}
There are two (partial) ``uncompression'' functions $\uncompress_{G_1}$ and
$\uncompress_{G_2}$ which convert bytestrings into group elements; these are
Expand Down
23 changes: 13 additions & 10 deletions doc/plutus-core-spec/cardano/builtins5.tex
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

\subsection{Batch 5}
\label{sec:default-builtins-5}

\subsubsection{Built-in functions}
\label{sec:built-in-functions-5}
The fifth batch of built-in functions adds support for
\begin{itemize}
\item Logical and bitwise operations on bytestrings (see~\cite{CIP-0122} and~\cite{CIP-0123}).
Expand Down Expand Up @@ -49,9 +52,9 @@ \subsection{Batch 5}
\hline
\endhead
\hline
\caption{Built-in functions, batch 5}
\caption{Built-in functions, Batch 5}
\endfoot
\caption[]{Built-in functions, batch 5}
\caption[]{Built-in functions, Batch 5}
\label{table:built-in-functions-5}
\endlastfoot
\TT{andByteString} & $[\ty{bool}, \ty{bytestring}, \ty{bytestring}] $ \text{$\;\; \to \ty{bytestring}$} & $\Xand$ & No & \ref{note:bitwise-logical-ops} \\[2mm]
Expand Down Expand Up @@ -88,10 +91,10 @@ \subsection{Batch 5}
bytestrings have different lengths.

\begin{itemize}
\item If the first argument of one of the bitwise logical operations is $\false$
\item If the first argument of one of the bitwise logical operations is $\false$
then the longer bytestring is (conceptually) truncated on the right to have the
same length as the shorter one.
\item If the first argument is $\true$
\item If the first argument is $\true$
then the shorter bytestring is (conceptually) extended on the right to have the
same length as the longer one. In the case of $\Xand$ the shorter bytestring is
extended with $\bitzero$ bits and in the case of $\Xor$ and $\Xxor$ it is
Expand Down Expand Up @@ -120,7 +123,7 @@ \subsection{Batch 5}
is a bitstring of length $n$:

\begin{align*}
\Xand\,(\false, b, c) &= d_{l-1} \cdots d_0
\Xand\,(\false, b, c) &= d_{l-1} \cdots d_0
\quad \text{where $l=\min\{m,n\}$ and $d_i = \trunc\,(b,m-l)_i \wedge \trunc\,(c,n-l)_i$}\\
\Xand\,(\true, b, c) &= d_{l-1} \cdots d_0
\quad \text{where $l=\max\{m,n\}$ and $d_i = \ext\,(b,l-m,\bitone)_i \wedge \ext\,(c,l-n,\bitone)_i$}
Expand All @@ -129,14 +132,14 @@ \subsection{Batch 5}
\begin{align*}
\Xor\,(\false, b, c) &= d_{l-1} \cdots d_0
\quad \text{where $l=\min\{m,n\}$ and $d_i = \trunc\,(b,m-l)_i \vee \trunc\,(c,n-l)_i$}\\
\Xor\,(\true, b, c) &= d_{l-1} \cdots d_0
\Xor\,(\true, b, c) &= d_{l-1} \cdots d_0
\quad \text{where $l=\max\{m,n\}$ and $d_i = \ext\,(b,l-m,\bitzero)_i \vee \ext\,(c,l-n,\bitzero)_i$}
\end{align*}
%
\begin{align*}
\Xxor\,(\false, b, c) &= d_{l-1} \cdots d_0
\quad \text{where $l=\min\{m,n\}$ and $d_i = \trunc\,(b,m-l)_i \oplus \trunc\,(c,n-l)_i$}\\
\Xxor\,(\true, b, c) &= d_{l-1} \cdots d_0
\Xxor\,(\true, b, c) &= d_{l-1} \cdots d_0
\quad \text{where $l=\max\{m,n\}$ and $d_i = \ext\,(b,l-m,\bitzero)_i \oplus \ext\,(c,l-n,\bitzero)_i$}.
\end{align*}

Expand Down Expand Up @@ -170,7 +173,7 @@ \subsection{Batch 5}
and rotates the bits of $s$ $k$ places to the left if $k \geq 0$ and $k$ places
to the right if $k < 0$. The length of the output bytestring is the same as
that of the input. The denotation of
\texttt{rotateByteString} (defined on the bitstring representation of $s$) is
\texttt{rotateByteString} (defined on the bitstring representation of $s$) is

$$
\mathsf{rotate}\,(b_{n-1} \cdots b_0, k) = d_{n-1}\cdots d_0 \quad\text{where $d_i = b_{(i-k)\bmod n}$}.
Expand Down Expand Up @@ -203,9 +206,9 @@ \subsection{Batch 5}
contain repetitions.

\smallskip
\noindent Formally,
\noindent Formally,
$$
\mathsf{writeBits}(b_{n-1}{\cdots}b_0, [j_0, \ldots, j_{l-1}], u) =
\mathsf{writeBits}(b_{n-1}{\cdots}b_0, [j_0, \ldots, j_{l-1}], u) =
\begin{cases}
\errorX & \text{if $\exists k \in \{0, \ldots, l-1\}$ such that $j_k < 0$ or $j_k \geq n$} \\
d_{n-1}{\cdots}d_0 & \text{otherwise}
Expand Down
Loading

1 comment on commit 983eba5

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Plutus Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.05.

Benchmark suite Current: 983eba5 Previous: 697348c Ratio
validation-auction_2-2 902.7 μs 830.1 μs 1.09
validation-crowdfunding-success-1 297.5 μs 274.3 μs 1.08
validation-crowdfunding-success-2 272.4 μs 207.1 μs 1.32
validation-crowdfunding-success-3 297.3 μs 218.1 μs 1.36
validation-escrow-redeem_1-2 495.3 μs 454.1 μs 1.09
validation-escrow-redeem_2-1 579.5 μs 405.3 μs 1.43
validation-escrow-redeem_2-2 581.7 μs 405.5 μs 1.43
validation-escrow-redeem_2-3 578.7 μs 407.5 μs 1.42
validation-escrow-refund-1 220.8 μs 155.6 μs 1.42
validation-future-increase-margin-1 347 μs 251.3 μs 1.38
validation-future-increase-margin-2 569.4 μs 538.3 μs 1.06
validation-future-increase-margin-3 765.3 μs 713.3 μs 1.07
validation-future-increase-margin-5 1147 μs 944.1 μs 1.21
validation-multisig-sm-2 449 μs 384.7 μs 1.17
validation-multisig-sm-3 551.9 μs 388 μs 1.42
validation-multisig-sm-4 557.9 μs 395.6 μs 1.41
validation-multisig-sm-5 784.8 μs 556.6 μs 1.41
validation-multisig-sm-6 557.1 μs 394.9 μs 1.41
validation-multisig-sm-7 542.7 μs 384.1 μs 1.41
validation-multisig-sm-8 549.3 μs 388.8 μs 1.41
validation-multisig-sm-9 557.4 μs 398.9 μs 1.40
validation-stablecoin_1-1 1276 μs 1058 μs 1.21
validation-stablecoin_1-2 269.7 μs 198.1 μs 1.36
validation-stablecoin_1-3 1474 μs 1329 μs 1.11
validation-vesting-1 491.1 μs 463.8 μs 1.06
validation-decode-auction_1-2 772 μs 671.4 μs 1.15
validation-decode-auction_1-3 773.9 μs 545.2 μs 1.42
validation-decode-auction_1-4 275.7 μs 194.8 μs 1.42
validation-decode-auction_2-1 240.9 μs 194.6 μs 1.24
validation-decode-game-sm-success_1-3 751.2 μs 676.9 μs 1.11
validation-decode-multisig-sm-3 809.4 μs 688.3 μs 1.18
validation-decode-multisig-sm-4 833.4 μs 587.1 μs 1.42
validation-decode-multisig-sm-5 834.3 μs 587.5 μs 1.42
validation-decode-multisig-sm-6 813.1 μs 587.6 μs 1.38
validation-decode-multisig-sm-7 691.8 μs 587.8 μs 1.18
validation-decode-prism-1 228.5 μs 174.2 μs 1.31
validation-decode-prism-2 702 μs 555.3 μs 1.26
validation-decode-pubkey-1 233.8 μs 174.2 μs 1.34
validation-decode-stablecoin_1-1 1205 μs 869 μs 1.39
validation-decode-stablecoin_1-2 232.4 μs 163.2 μs 1.42
validation-decode-stablecoin_1-3 1216 μs 858.4 μs 1.42
validation-decode-stablecoin_1-4 232.9 μs 175 μs 1.33
validation-decode-stablecoin_1-6 213.8 μs 182.7 μs 1.17
validation-decode-uniswap-3 1039 μs 873.4 μs 1.19
validation-decode-vesting-1 455.2 μs 420.3 μs 1.08
nofib-clausify/formula1 4458 μs 3092 μs 1.44
nofib-clausify/formula2 5958 μs 5019 μs 1.19
nofib-clausify/formula3 16260.000000000002 μs 11290 μs 1.44
nofib-clausify/formula4 37430 μs 25910 μs 1.44
nofib-clausify/formula5 78790 μs 56100 μs 1.40
nofib-knights/4x4 24890 μs 21390 μs 1.16
nofib-primetest/30digits 91350 μs 82730 μs 1.10
nofib-primetest/50digits 151200 μs 104800 μs 1.44
nofib-queens4x4/bt 7790 μs 5404 μs 1.44
nofib-queens4x4/bm 9879 μs 6847 μs 1.44
nofib-queens4x4/bjbt1 9441 μs 6551 μs 1.44
nofib-queens4x4/bjbt2 8841 μs 6135 μs 1.44
nofib-queens4x4/fc 20010 μs 13870 μs 1.44
nofib-queens5x5/bt 99710 μs 73500 μs 1.36
nofib-queens5x5/bm 111200 μs 80610 μs 1.38
nofib-queens5x5/fc 254800 μs 190300 μs 1.34
marlowe-semantics/0000020002010200020101020201000100010001020101020201010000020102 408.6 μs 316.5 μs 1.29
marlowe-semantics/0003040402030103010203030303000200000104030002040304020400000102 1440 μs 1206 μs 1.19
marlowe-semantics/04000f0b04051006000e060f09080d0b090d0104050a0b0f0506070f0a070008 1016.9999999999999 μs 721.1 μs 1.41
marlowe-semantics/0543a00ba1f63076c1db6bf94c6ff13ae7d266dd7544678743890b0e8e1add63 1410 μs 997.2 μs 1.41
marlowe-semantics/0705030002040601010206030604080208020207000101060706050502040301 1379 μs 975.7 μs 1.41
marlowe-semantics/07070c070510030509010e050d00040907050e0a0d06030f1006030701020607 1423 μs 1006.9999999999999 μs 1.41
marlowe-semantics/0bcfd9487614104ec48de2ea0b2c0979866a95115748c026f9ec129384c262c4 1556 μs 1102 μs 1.41
marlowe-semantics/0be82588e4e4bf2ef428d2f44b7687bbb703031d8de696d90ec789e70d6bc1d8 1892 μs 1340 μs 1.41
marlowe-semantics/0f1d0110001b121d051e15140c0c05141d151c1f1d201c040f10091b020a0e1a 659.5 μs 466.6 μs 1.41
marlowe-semantics/4d7adf91bfc93cebe95a7e054ec17cfbb912b32bd8aecb48a228b50e02b055c8 968.4 μs 805.9 μs 1.20
marlowe-semantics/4f9e8d361b85e62db2350dd3ae77463540e7af0d28e1eb68faeecc45f4655f57 557.7 μs 394.3 μs 1.41
marlowe-semantics/52df7c8dfaa5f801cd837faa65f2fd333665fff00a555ce8c55e36ddc003007a 498.1 μs 351.9 μs 1.42
marlowe-semantics/53ed4db7ab33d6f907eec91a861d1188269be5ae1892d07ee71161bfb55a7cb7 505.8 μs 357.9 μs 1.41
marlowe-semantics/ced1ea04649e093a501e43f8568ac3e6b37cd3eccec8cac9c70a4857b88a5eb8 1164 μs 859 μs 1.36
marlowe-semantics/cf542b7df466b228ca2197c2aaa89238a8122f3330fe5b77b3222f570395d9f5 675.5 μs 479.9 μs 1.41
marlowe-semantics/d1ab832dfab25688f8845bec9387e46ee3f00ba5822197ade7dd540489ec5e95 48770 μs 38010 μs 1.28
marlowe-role-payout/0004000402010401030101030100040000010104020201030001000204020401 261.5 μs 183.8 μs 1.42
marlowe-role-payout/0100000100010000000001000100010101000101000001000000010000010000 355.7 μs 251.3 μs 1.42
marlowe-role-payout/0101000100000101010000010101000100010101000001000001000000010101 268.9 μs 190.2 μs 1.41
marlowe-role-payout/01dcc372ea619cb9f23c45b17b9a0a8a16b7ca0e04093ef8ecce291667a99a4c 225.6 μs 159.5 μs 1.41
marlowe-role-payout/0201020201020000020000010201020001020200000002010200000101010100 256.1 μs 181.7 μs 1.41
marlowe-role-payout/0202010002010100020102020102020001010101020102010001010101000100 240.6 μs 169.2 μs 1.42
marlowe-role-payout/0303020000020001010201060303040208070100050401080304020801030001 240.5 μs 169.9 μs 1.42
marlowe-role-payout/031d56d71454e2c4216ffaa275c4a8b3eb631109559d0e56f44ea8489f57ba97 284.3 μs 200.8 μs 1.42
marlowe-role-payout/03d730a62332c51c7b70c16c64da72dd1c3ea36c26b41cd1a1e00d39fda3d6cc 268.1 μs 189.3 μs 1.42
marlowe-role-payout/0403020000030204010000030001000202010101000304030001040404030100 247.5 μs 175.1 μs 1.41
marlowe-role-payout/0405010105020401010304080005050800040301010800080207080704020206 272.9 μs 193.7 μs 1.41
marlowe-role-payout/041a2c3b111139201a3a2c173c392b170e16370d300f2d28342d0f2f0e182e01 273.2 μs 192.8 μs 1.42
marlowe-role-payout/04f592afc6e57c633b9c55246e7c82e87258f04e2fb910c37d8e2417e9db46e5 318 μs 224.4 μs 1.42
marlowe-role-payout/057ebc80922f16a5f4bf13e985bf586b8cff37a2f6fe0f3ce842178c16981027 233.9 μs 166.7 μs 1.40
marlowe-role-payout/06317060a8e488b1219c9dae427f9ce27918a9e09ee8ac424afa33ca923f7954 248.1 μs 175.2 μs 1.42
marlowe-role-payout/07658a6c898ad6d624c37df1e49e909c2e9349ba7f4c0a6be5f166fe239bfcae 226.9 μs 160.1 μs 1.42
marlowe-role-payout/0bdca1cb8fa7e38e09062557b82490714052e84e2054e913092cd84ac071b961 273.3 μs 192.8 μs 1.42
marlowe-role-payout/0c9d3634aeae7038f839a1262d1a8bc724dc77af9426459417a56ec73240f0e0 243.5 μs 172.9 μs 1.41
marlowe-role-payout/0d0f01050a0a0a0b0b050d0404090e0d0506000d0a041003040e0f100e0a0408 241.9 μs 170.9 μs 1.42
marlowe-role-payout/0dbb692d2bf22d25eeceac461cfebf616f54003077a8473abc0457f18e025960 275.3 μs 194 μs 1.42
marlowe-role-payout/0e00171d0f1e1f14070d0a00091f07101808021d081e1b120219081312081e15 234.7 μs 166.3 μs 1.41
marlowe-role-payout/0e72f62b0f922e31a2340baccc768104025400cf7fdd7dae62fbba5fc770936d 261.2 μs 184.7 μs 1.41
marlowe-role-payout/0e97c9d9417354d9460f2eb35018d3904b7b035af16ab299258adab93be0911a 259.4 μs 183.4 μs 1.41
marlowe-role-payout/0f010d040810040b10020e040f0e030b0a0d100f0c080c0c05000d04100c100f 270.9 μs 192 μs 1.41
marlowe-role-payout/1138a04a83edc0579053f9ffa9394b41df38230121fbecebee8c039776a88c0c 240.1 μs 170.2 μs 1.41
marlowe-role-payout/121a0a1b12030616111f02121a0e070716090a0e031c071419121f141409031d 232.2 μs 164.1 μs 1.41
marlowe-role-payout/159e5a1bf16fe984b5569be7011b61b5e98f5d2839ca7e1b34c7f2afc7ffb58e 235.8 μs 167.3 μs 1.41
marlowe-role-payout/195f522b596360690d04586a2563470f2214163435331a6622311f7323433f1c 229.9 μs 162.8 μs 1.41
marlowe-role-payout/1a20b465d48a585ffd622bd8dc26a498a3c12f930ab4feab3a5064cfb3bc536a 256.1 μs 181.8 μs 1.41
marlowe-role-payout/211e1b6c10260c4620074d2e372c260d38643a3d605f63772524034f0a4a7632 246.1 μs 174.3 μs 1.41
marlowe-role-payout/21a1426fb3fb3019d5dc93f210152e90b0a6e740ef509b1cdd423395f010e0ca 259.2 μs 183.3 μs 1.41
marlowe-role-payout/224ce46046fab9a17be4197622825f45cc0c59a6bd1604405148e43768c487ef 240.4 μs 169.7 μs 1.42
marlowe-role-payout/332c2b1c11383d1b373e1315201f1128010e0e1518332f273f141b23243f2a07 228.5 μs 162.1 μs 1.41
marlowe-role-payout/3565ee025317e065e8555eef288080276716366769aad89e03389f5ec4ce26d7 248.4 μs 227.5 μs 1.09
marlowe-role-payout/5a2aae344e569a2c644dd9fa8c7b1f129850937eb562b7748c275f9e40bed596 239.1 μs 177.9 μs 1.34
marlowe-role-payout/5ade103e9530dd0d572fe1b053ea65ad925c6ebbe321e873ace8b804363fa82c 321.5 μs 226.4 μs 1.42
marlowe-role-payout/5d4c62a0671c65a14f6a15093e3efc4f1816d95a5a58fd92486bedaae8d9526b 273.8 μs 193.4 μs 1.42
marlowe-role-payout/5efe992e306e31cc857c64a62436ad2f9325acc5b4a74a8cebccdfd853ce63d2 247 μs 175 μs 1.41
marlowe-role-payout/622a7f3bc611b5149253c9189da022a9ff296f60a5b7c172a6dc286faa7284fa 282.8 μs 199.7 μs 1.42
marlowe-role-payout/6621a69217f09d91f42876a9c0cecf79de0e29bdd5b16c82c6c52cf959092ec4 260.9 μs 183.7 μs 1.42
marlowe-role-payout/674b0577409957172ad85223c765d17e94c27714276c49c38dfae0a47a561a1e 229.9 μs 162.4 μs 1.42
marlowe-role-payout/6b7bc2b9002a71b33cfd535d43f26334a283d0b9ad189b7cd74baac232c3b9fc 227.6 μs 160.5 μs 1.42
marlowe-role-payout/6c364699767a84059ffd99cf718562a8c09d96e343f23dc481e8ffda13af424f 238.9 μs 169.3 μs 1.41
marlowe-role-payout/6d66bddb4269bdf77392d3894da5341cf019d39787522af4f83f01285991e93c 236 μs 167.4 μs 1.41
marlowe-role-payout/b6243a5b4c353ce4852aa41705111d57867d2783eeef76f6d59beb2360da6e90 297.1 μs 223.6 μs 1.33
marlowe-role-payout/b869f3928200061abb1c3060425b9354b0e08cbf4400b340b8707c14b34317cd 337.9 μs 239.2 μs 1.41
marlowe-role-payout/bcdbc576d63b0454100ad06893812edafc2e7e4934fec1b44e2d06eb34f36eb8 235.8 μs 166.9 μs 1.41
marlowe-role-payout/bd460b7549b70c52e37b312a4242041eac18fe4a266f018bcea0c78a9085a271 270.6 μs 191.7 μs 1.41
marlowe-role-payout/bd79f4a84db23b7c4cd219d498bd581e085cbc3437957e74a8862281a700700b 271.4 μs 191.6 μs 1.42
marlowe-role-payout/c11490431db3a92efdda70933ba411a0423935e73a75c856e326dbcf6672f3bf 241.4 μs 171.7 μs 1.41
marlowe-role-payout/c4d4c88c5fe378a25a034025994a0d0b1642f10c8e6e513f872327fa895bfc7e 218.3 μs 177.9 μs 1.23
marlowe-role-payout/c78eeba7681d2ab51b4758efa4c812cc041928837c6e7563d8283cce67ce2e02 252 μs 177.9 μs 1.42
marlowe-role-payout/c99ecc2146ce2066ba6dffc734923264f8794815acbc2ec74c2c2c42ba272e4d 289.4 μs 204.6 μs 1.41
marlowe-role-payout/caa409c40e39aed9b0f59214b4baa178c375526dea6026b4552b88d2cc729716 226.9 μs 160.3 μs 1.42
marlowe-role-payout/cb2ab8e22d1f64e8d204dece092e90e9bf1fa8b2a6e9cba5012dbe4978065832 240.1 μs 169.9 μs 1.41
marlowe-role-payout/cc1e82927f6c65b3e912200ae30588793d2066e1d4a6627c21955944ac9bd528 266.9 μs 188.1 μs 1.42
marlowe-role-payout/d5cda74eb0947e025e02fb8ed365df39d0a43e4b42cd3573ac2d8fcb29115997 257.4 μs 181.9 μs 1.42
marlowe-role-payout/d6bc8ac4155e22300085784148bbc9d9bbfea896e1009dd396610a90e3943032 270.8 μs 191.5 μs 1.41
marlowe-role-payout/da353bf9219801fa1bf703fc161497570954e9af7e10ffe95c911a9ef97e77bd 245.7 μs 172.9 μs 1.42
marlowe-role-payout/dc45c5f1b700b1334db99f50823321daaef0e6925b9b2fabbc9df7cde65af62e 245.2 μs 173.1 μs 1.42
marlowe-role-payout/df487b2fd5c1583fa33644423849bc1ab5f02f37edc0c235f34ef01cb12604f6 249 μs 175.4 μs 1.42
marlowe-role-payout/eabeeae18131af89fa57936c0e9eb8d2c7adba534f7e1a517d75410028fa0d6c 236.9 μs 166.7 μs 1.42
marlowe-role-payout/f53e8cafe26647ccce51e4c31db13608aea1f39034c0f52dee2e5634ef66e747 258.4 μs 217.8 μs 1.19
marlowe-role-payout/fc8c5f45ffcdb024c21e0f34b22c23de8045a94d5e1a5bda1555c45ddb059f82 246.2 μs 173.6 μs 1.42
marlowe-role-payout/ff38b1ec89952d0247630f107a90cbbeb92ecbfcd19b284f60255718e4ec7548 278.2 μs 197.2 μs 1.41

This comment was automatically generated by workflow using github-action-benchmark.

CC: @IntersectMBO/plutus-core

Please sign in to comment.