% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/dist.structure-package.R
\docType{package}
\name{dist.structure-package}
\alias{dist.structure}
\alias{dist.structure-package}
\title{dist.structure: Structured Random Variables for Reliability System
Distributions}
\description{
Extends the algebraic.dist distribution algebra to random variables with
internal structure: coherent reliability systems decomposed into components
arranged by a structure function (series, parallel, k-out-of-n, bridge,
arbitrary topologies). Every \code{dist_structure} object is also a \code{dist}, so
the full distribution algebra works automatically via default methods that
compose component-level distributions through the topology.
}
\section{Two algebras, one hierarchy}{


\code{algebraic.dist} provides the base algebra of random variables:
\code{density}, \code{surv}, \code{hazard}, \code{sampler}, \code{mean}, \code{vcov}, \code{expectation},
and arithmetic on RVs (transformations).

\code{dist.structure} extends it with structure-preserving operations for
reliability systems: component-wise decomposition, structure function
evaluation, path and cut sets, system signature, critical states, dual
structures, and Birnbaum importance measures. Because every
\code{dist_structure} is a \code{dist}, the base algebra inherits automatically.
}

\section{Primitives implementors provide}{

\itemize{
\item \code{\link[=ncomponents]{ncomponents()}}: number of components \code{m}
\item \code{\link[=component]{component()}}: return the j-th component as a \code{dist}
\item One of \code{\link[=phi]{phi()}} or \code{\link[=min_paths]{min_paths()}}: the other defaults automatically
}
}

\section{Topology queries (default methods on \code{dist_structure})}{


\code{\link[=phi]{phi()}}, \code{\link[=min_paths]{min_paths()}}, \code{\link[=min_cuts]{min_cuts()}}, \code{\link[=critical_states]{critical_states()}},
\code{\link[=system_signature]{system_signature()}}, \code{\link[=system_lifetime]{system_lifetime()}}, \code{\link[=system_censoring]{system_censoring()}},
\code{\link[=dual]{dual()}}, \code{\link[=is_coherent]{is_coherent()}}, \code{\link[=structural_importance]{structural_importance()}}, \code{\link[=reliability]{reliability()}}
}

\section{Distribution queries (default methods via component composition)}{


\code{\link[algebraic.dist:surv]{algebraic.dist::surv()}}, \code{\link[algebraic.dist:cdf]{algebraic.dist::cdf()}}, \code{\link[algebraic.dist:sampler]{algebraic.dist::sampler()}}. Further base dist methods (\code{mean},
\code{vcov}, \code{expectation}) inherit from \code{univariate_dist} via numerical
integration of \code{surv}. Implementors override any default for speed.
}

\section{Reference implementations}{

\itemize{
\item \code{\link[=coherent_dist]{coherent_dist()}}: general coherent system given minimal path sets +
components
\item Topology shortcuts: \code{\link[=series_dist]{series_dist()}}, \code{\link[=parallel_dist]{parallel_dist()}}, \code{\link[=kofn_dist]{kofn_dist()}},
\code{\link[=bridge_dist]{bridge_dist()}}, \code{\link[=consecutive_k_dist]{consecutive_k_dist()}}
\item IID convenience: \code{\link[=min_iid]{min_iid()}}, \code{\link[=max_iid]{max_iid()}}, \code{\link[=order_statistic]{order_statistic()}}
\item Coercions: \code{\link[=as_dist_structure]{as_dist_structure()}}
}
}

\section{Closed-form specializations}{


Fast analytical paths for common (component family, topology) pairs.
Override the generic defaults for speed without changing semantics:
\itemize{
\item Series: \code{\link[=exp_series]{exp_series()}}, \code{\link[=wei_series]{wei_series()}}, \code{\link[=wei_homogeneous_series]{wei_homogeneous_series()}},
\code{\link[=gamma_series]{gamma_series()}}, \code{\link[=lognormal_series]{lognormal_series()}}
\item Parallel: \code{\link[=exp_parallel]{exp_parallel()}}
\item k-out-of-n: \code{\link[=exp_kofn]{exp_kofn()}}, \code{\link[=wei_kofn]{wei_kofn()}}
}
}

\section{Importance measures}{


Both topology-only and reliability-aware:
\itemize{
\item \code{\link[=structural_importance]{structural_importance()}}: Birnbaum's structural measure (topology only)
\item \code{\link[=birnbaum_importance]{birnbaum_importance()}}: Birnbaum's reliability measure
\item \code{\link[=criticality_importance]{criticality_importance()}}: criticality importance
\item \code{\link[=vesely_fussell_importance]{vesely_fussell_importance()}}: Vesely-Fussell importance
}
}

\section{Compositional operations}{


Build new systems from existing ones while preserving the protocol:
\itemize{
\item \code{\link[=substitute_component]{substitute_component()}}: replace component j with a sub-system
\item \code{\link[=compose_systems]{compose_systems()}}: compose two systems (cartesian product of paths)
}
}

\section{Non-coherent systems}{


\code{\link[=cold_standby_dist]{cold_standby_dist()}} models a cold-standby spare arrangement (system
lifetime is the sum of component lifetimes). It is deliberately \emph{not}
a \code{dist_structure} (no static structure function), but it shares the
\code{\link[=ncomponents]{ncomponents()}}/\code{\link[=component]{component()}} generics so user code can iterate
uniformly.
}

\seealso{
Useful links:
\itemize{
  \item \url{https://github.com/queelius/dist.structure}
  \item Report bugs at \url{https://github.com/queelius/dist.structure/issues}
}

}
\author{
\strong{Maintainer}: Alexander Towell \email{lex@metafunctor.com} (\href{https://orcid.org/0000-0001-6443-9897}{ORCID})

}
\keyword{internal}
