% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/dist-defaults.R, R/dist_structure-class.R
\name{surv.dist_structure}
\alias{surv.dist_structure}
\alias{cdf.dist_structure}
\alias{sampler.dist_structure}
\alias{dist_structure}
\title{System survival via reliability composition}
\usage{
\method{surv}{dist_structure}(x, ...)

\method{cdf}{dist_structure}(x, ...)

\method{sampler}{dist_structure}(x, ...)
}
\arguments{
\item{x}{A \link{dist_structure} object.}

\item{...}{Ignored.}
}
\value{
This help topic documents the virtual base class together with the
three distribution-algebra default methods that compose component
distributions through the topology:
\itemize{
\item \code{\link[=surv.dist_structure]{surv.dist_structure()}} returns a closure \verb{function(t, ...)} that
evaluates the system survival function via the reliability identity
\code{S_sys(t) = R(S_1(t), ..., S_m(t))}.
\item \code{\link[=cdf.dist_structure]{cdf.dist_structure()}} returns a closure \verb{function(t, ...)} equal
to \code{1 - surv(x)(t)}.
\item \code{\link[=sampler.dist_structure]{sampler.dist_structure()}} returns a closure \verb{function(n, ...)}
that draws \code{n} independent system lifetimes by sampling each
component and combining via \code{\link[=system_lifetime]{system_lifetime()}}.
}

Concrete subclasses override any of these for closed-form speed; see
the closed-form specializations under the See Also entries.
}
\description{
Returns a closure \verb{function(t, ...)} where \code{surv(x)(t)} equals
\verb{reliability(x, surv(component(x, j))(t) for each j)}. This is the
classical identity \code{S_sys(t) = R(S(t))} realized as a composition.

Returns a closure \verb{function(n, ...)} that draws \code{n} system lifetimes by
sampling each component independently and applying \code{\link[=system_lifetime]{system_lifetime()}}
to combine.

\code{dist_structure} is the virtual S3 class for distributions whose random
variable has internal component structure: coherent reliability
systems decomposed into components arranged by a structure function.
Every concrete implementation (\code{coherent_dist}, \code{series_dist},
\code{parallel_dist}, \code{kofn_dist}, \code{bridge_dist}, or user-defined
subclasses) should include \code{"dist_structure"}, the \code{algebraic.dist}
ancestor \code{"univariate_dist"}, and \code{"dist"} in its class vector.
}
\details{
Concrete implementations provide S3 methods for the generics in this
package. The minimum required methods are \code{\link[=ncomponents]{ncomponents()}}, \code{\link[=component]{component()}},
and one of \code{\link[=phi]{phi()}} or \code{\link[=min_paths]{min_paths()}}; every other generic has a default
method on \code{dist_structure} that composes the primitives.

If both \verb{phi.<class>()} and \verb{min_paths.<class>()} are provided, the
implementor is responsible for keeping them consistent: \code{phi} derives
the in-package generics \code{reliability}, \code{critical_states}, and
\code{is_coherent}; \code{min_paths} derives \code{min_cuts} and \code{system_signature}.
Inconsistent implementations produce silently inconsistent results.
}
\seealso{
\code{\link[=validate_dist_structure]{validate_dist_structure()}} for an implementor-side
construction-time validator. \code{\link[=phi]{phi()}} and \code{\link[=min_paths]{min_paths()}} for the
bidirectional protocol primitives. The closed-form families
(\code{\link[=exp_series]{exp_series()}}, \code{\link[=wei_kofn]{wei_kofn()}}, etc.) for reference implementations.
}
