Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision 9f77301aef8274700a61696fe1aafca8aad81323)
+++ libcfa/src/Makefile.am	(revision 08bc3e7682b94f0293f79c5ce9c8de2a9746ca3b)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Sat Apr 24 09:09:56 2021
-## Update Count     : 254
+## Last Modified On : Fri Jul 16 16:00:40 2021
+## Update Count     : 255
 ###############################################################################
 
@@ -45,4 +45,5 @@
 	exception.h \
 	gmp.hfa \
+	math.trait.hfa \
 	math.hfa \
 	time_t.hfa \
Index: libcfa/src/math.trait.hfa
===================================================================
--- libcfa/src/math.trait.hfa	(revision 08bc3e7682b94f0293f79c5ce9c8de2a9746ca3b)
+++ libcfa/src/math.trait.hfa	(revision 08bc3e7682b94f0293f79c5ce9c8de2a9746ca3b)
@@ -0,0 +1,69 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// math.trait.hfa -- 
+//
+// Author           : Peter A. Buhr
+// Created On       : Fri Jul 16 15:40:52 2021
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul 20 17:47:19 2021
+// Update Count     : 19
+// 
+
+#pragma once
+
+trait Not( T ) {
+	void ?{}( T &, zero_t );
+	int !?( T );
+}; // Not
+
+trait Equality( T | Not( T ) ) {
+	int ?==?( T, T );
+	int ?!=?( T, T );
+}; // Equality
+
+trait Relational( T | Equality( T ) ) {
+	int ?<?( T, T );
+	int ?<=?( T, T );
+	int ?>?( T, T );
+	int ?>=?( T, T );
+}; // Relational
+
+trait Signed( T ) {
+	T +?( T );
+	T -?( T );
+	T abs( T );
+}; // Signed
+
+trait Additive( T | Signed( T ) ) {
+	T ?+?( T, T );
+	T ?-?( T, T );
+	T ?+=?( T &, T );
+	T ?-=?( T &, T );
+}; // Additive
+
+trait Incdec( T | Additive( T ) ) {
+	void ?{}( T &, one_t );
+	// T ?++( T & );
+	// T ++?( T &);
+	// T ?--( T & );
+	// T --?( T & );
+}; // Incdec
+
+trait Multiplicative( T | Incdec( T ) ) {
+	T ?*?( T, T );
+	T ?/?( T, T );
+	T ?%?( T, T );
+	T ?/=?( T &, T );
+}; // Multiplicative
+
+trait Arithmetic( T | Relational( T ) | Multiplicative( T ) ) {
+}; // Arithmetic
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
