public static Func <type, bool> ToPred <type>(this REquality <type, Unit> eq, type value) => e => eq.Equal(e, value);
public static bool Equal <type, mark>(this REquality <type, mark> that, type l, type r) => that.BinOp(l, r);
public AOptEq(REquality <val, mark> eq) { _eq = eq; }