```
PosetRelation transitivity(PosetRelation R, PosetRelation S)
{
   // These if conditions are typically ordered from easiest to
   // most involved-to-check.
   if (R.op == S.op &&
       is(typeof(R) == typeof(S)) &&
       R.right == S.left)
   {
      return new typeof(R)(
         R.left, S.right,
by("transitivity of " ~ R.op)); // Proof by this axiom
   }

   return null;
}
```

Not sure if that would work yet.  Have to test it.

Reply via email to