Package Exports
- certus-ts
- certus-ts/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (certus-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Certus for Typescript
Certus is a domain specific language for confidence assessment in assurance cases (i.e., structured arguments) expressed using the Goal Structuring Notation (GSN), Claims Argument Evidence (CAE), or Eliminative Argumentation (EA) methods. Certus provides a linguistic interpretation of confidence (i.e., "I have high confidence in claim X") that is grounded in fuzzy set theory. As a result, Certus offers an alternative to numerically intensive methods for confidence assessment, like those that use Bayesian Networks or Dempster-Shafer Theory (DST).
The underlying theory for Certus is discussed in this paper (pre-print accessible on arXiv).
Installation
Certus is available via the Node Package Manager (npm). You can install it using:
npm install certus-tsThe Certus Domain Specific Language
Certus evaluates arguments one "reasoning step" at a time. For a simple argument of the form:
C0 --> C1
--> C2We can write a confidence propagation expression like:
C0 is cases
C1 >= med && C2 >= vhigh -> certain,
C1 > zero C2 >= med -> med,
otherwise zeroThe keywords: zero, vlow, low, med, high, vhigh, and certain correspond to canonical fuzzy sets that are built into the Certus language. The user can define their own sets if wanted using the with mySet as ... syntax.
Using the Typescript API
To evaluate the expression above in Typescript we would write:
import { CertusEvaluator, CertusContext, UnitInterval, NodeType } from 'certus-ts';
const UI = new UnitInterval();
const ctx = new CertusContext();
const evaluator = new CertusEvaluator();
ctx.setRoot("C0");
ctx.addChild('C1', NodeType.CLAIM, ctx.getNamedSet('high')); // set child valuation to high
ctx.addChild('C2', NodeType.CLAIM, ctx.getNamedSet('vhigh')); // set child to very high
// Use \ to create a multi-line string
const expr = "C0 is cases\
C1 >= med && C2 >= vhigh -> certain,\
C1 > zero C2 >= med -> med,\
otherwise zero";
const updatedCtx = evaluator.evaluate(expr, ctx);
console.log(updatedCtx.getSyntaxErrors()); // should be: []
console.log(updatedCtx.getEvaluationErrors()); // should be: []
console.log(updatedCtx.getRoot().valuation.name); // output should be: "certain"There are many additional examples of using the TypeScript API in the unit test files within this repository.
Implementation in Tools
This package is open source and can be used "as is" to perform confidence assessments. Tools that have incorporated Certus include:
Citations and References
If you would like to refer to Certus in academic or industrial literature, please cite the following paper:
S. Diemert and J. H. Weber, “Certus: A Domain Specific Language for Confidence Assessment in Assurance Cases,” in Computer Safety, Reliability, and Security. SAFECOMP 2025 Workshops, Cham: Springer Nature Switzerland, 2025, pp. 211–225. doi: 10.1007/978-3-032-02018-5_16.
You might also find the following works interesting:
S. Diemert, C. Shortt, and J. H. Weber, “How do practitioners gain confidence in assurance cases?,” Information and Software Technology, vol. 185, p. 107767, Sept. 2025, doi: 10.1016/j.infsof.2025.107767.
B. Herd, J. Kelly, J.-V. Zacchi, C. Heinzemann, and S. Diemert, “Integrating Defeaters into Subjective Logic-based Quantitative Assurance Arguments,” presented at the European Dependable Computing Conference (EDCC), Lisbon, Portugal, 2025.
S. Diemert, L. Millet, J. Joyce, and J. H. Weber, “Including Defeaters in Quantitative Confidence Assessments for Assurance Cases,” in Computer Safety, Reliability, and Security. SAFECOMP 2024 Workshops, A. Ceccarelli, M. Trapp, A. Bondavalli, E. Schoitsch, B. Gallina, and F. Bitsch, Eds., Cham: Springer Nature Switzerland, 2024, pp. 239–250. doi: 10.1007/978-3-031-68738-9_18.
Credits and Acknowledgements
Certus was developed by Simon Diemert at the University of Victoria (Canada) as part of his PhD research program, under the supervision of Dr. Jens H. Weber. Development of Certus was supported by the National Sciences and Engineering Research Council of Canada (NSERC).
Licensing
Certus is an open-source project available under the MIT License. See ./LICENSE for details.