 Relevant logics have been used in computer science as well as in philosophy. Linear logics — a branch of logic initiated by Jean-Yves Girard — is a logic of computational resources. Linear logicians read an implication \(A \rightarrow B\) as saying that having a resource of type \(A\) allows us to obtain something of type \(B\). If we have \(A \rightarrow(A \rightarrow B)\), then, we know that we can obtain a \(B\) from two resources of type \(A\). But this does not mean that we can get a \(B\) from a single resource of type \(A\), i.e. we don’t know whether we can obtain \(A \rightarrow B\). Hence, contraction fails in linear logic. Linear logics are, in fact, relevant logics that lack contraction and the distribution of conjunction over disjunction \(((A \amp(B \vee C)) \rightarrow((A \amp B) \vee(A \amp C)))\). They also include two operators (! and ?) that are known as “exponentials”. Putting an exponential in front of a formula gives that formula the ability to act classically, so to speak. For example, just as in standard relevance logic, we cannot usually merely add an extra premise to a valid inference and have it remain valid. But we can always add a premise of the form \(!A\) to a valid inference and have it remain valid. Linear logic also has contraction for formulae of the form \(!A\), i.e., it is a theorem of these logics that \((!A \rightarrow(!A \rightarrow B)) \rightarrow(!A \rightarrow B)\) (see Troelstra 1992). The use of ! allows for the treatment of resources “that can be duplicated or ignored at will” (Restall 2000, p 56). For more about linear logic, see the entry on  substructural logic.