\documentclass[11pt,twoside,a4paper]{article}

\usepackage{listings}             % Include the listings-package

\begin{document}
\title{Integrating CertainTrust into OpenCCE}
\author{Nikolaos Alexopoulos, CROSSING S1}
\date{August 2016}

\maketitle

\section{About CertainTrust}
CertainTrust is a robust Bayesian Computational Trust model for users and agents.
It offers a mathematically sound implementation of a Bayesian probability model in order to assess the 
trustworthiness of agents in multi-agent systems. The system can calculate the expected trustworthiness of 
agents based on prior experience and can also combine evidence provided by other sources in statistically 
sound ways. (Finally, it also offers a user interface to visualize trust when user involvement is needed.)
By providing CertainTrust as a task to OpenCCE we want to enable users and devices to enhance their security 
in high-risk environments.

\section{Implementation}
We have implemented OpenCCE as a Java project. More specifically, the whole functionality is encompassed in a 
single class (CertainTrust.java). 
The remainder of our classes support a graphical user interface intended to visualize trust in a user-friendly 
way.

\section{Usage examples and rules}
\subsection{Usage examples}
The proposed use of our task consists of a CertainTrust object constructed to handle a single trust 
relationship. The constructor is reached by calling one of the \textit{createfromRS} or 
\textit{createfromTC} functions. 
After the constructor, the main and presumably more regularly used functionalities are 
implemented by the functions \textit{addR}, \textit{addS} and \textit{addU} that respectively add positive, 
negative and neutral 
evidence to the statistical model. Furthermore, there are a number of ways to combine CertainTrust objects 
by choosing a CertainLogic operator implemented in the functions from the set \{\textit{OR, AND, wFusion, cFusion}\}.
\medskip \\
A typical example of the use of the task could be the creation of a computational trust object and then the 
incorporation of evidence in the statistical model that leads to an extracted expectation value for 
the trustworthiness of the given agent. A small snippet is found below:
\medskip
\lstset{language=java}
\begin{lstlisting}[frame=single]
trustObject = CertainTrust.createDefault(N, name)
trustObject.addR(posEvidence)
trustObject.addS(negEvidence)
expectation = trustObject.getExpectation()
\end{lstlisting}

\subsection{Rules}
Rules regarding the use of CertainTrust address the correctness of the model and are provided as comments to 
each function implemented in the class. They are normally handled by exceptions, but a static analysis 
could have some benefit. Specifically, values t,c and f represent probabilities and so $\in[0,1]$.

\section{Algorithms Model}
CertainTrust in its current form does not offer any variability. The task, which could be named 
``Initialize CertainTrust Object'' is self-contained in the Java class of the same name. Providing different 
tasks for each operation on the trust objects and grouping them together could be an option, but 
is not considered practical at this point.

\section{Questions for initialization}
The main user choices during the initialization of the task concern the arguments of the 
\textit{createfromRS} and \textit{createfromTC}. More specifically, the user should be able to 
choose the name of the object, an initial (prior) trust value as well as the number N of adequate evidence. A detailed list follows:
\medskip
\begin{enumerate}
	\item Give the \textbf{name} of the object (e.g. ``John'', ``Bank'', etc.)
	\item Give your perceived \textbf{initial trust value (t)} for the subject (default: t=0,5) - could be low/med/high or visualization. Its effect dissolves while experiences are collected.
	\item Give the \textbf{maximal expected number of evidence (N)}. That is the number of evidence that suffice to provide total certainty in the trust assessment. This parameter highly depends on the 
		context and the security assurances needed.
\end{enumerate}

\end{document}
