A domain specific language for confidence assessment in assurance cases
npm install certus-tsCertus 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).
Certus is available via the Node Package Manager (npm). You can install it using:
```
npm install certus-ts
Certus evaluates arguments one "reasoning step" at a time. For a simple argument of the form:
``
C0 --> C1
--> C2
We can write a confidence propagation expression like:
``
C0 is cases
C1 >= med && C2 >= vhigh -> certain,
C1 > zero C2 >= med -> med,
otherwise zero
The 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.
To evaluate the expression above in Typescript we would write:
`typescript
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.
This package is open source and can be used "as is" to perform confidence assessments. Tools that have incorporated Certus include:
* Socrates - Assurance Case Editor
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.
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).
Certus is an open-source project available under the MIT License. See ./LICENSE` for details.