For most logicians, C++ will not be the language of choice for implementing their algorithms. In the best case, they will admit that using an imperative language like C++ may be needed for efficiency, but at the same time they believe that this will always result in ugly code. I will show that implementation of logic in C++ is very well possible, and can be done elegantly with help of the proper tools.
I will explain what is special about logic: It uses trees that are very heterogeneous in form. This creates memory management problems, problems with static type checking, efficiency problems, and problems with value semantics. There is a lot of similar code, which can be automatically generated. At this moment, I use a tool that generates source code. I hope to be able to replace this by reflection in the future.
View Slides
Hans de Nivelle is interested in implementation of logic algorithms, modeling of mathematics in logic, and programming language design. He regularly teaches data structures, C++, Java, Python, and Prolog. He also often teaches formal language theory, flight simulation, and compiler construction. He is currently employed at Nazarbayev University, in Astana, Kazakhstan. From 2007 until 2017, he worked at University of Wroclaw in Poland. From 1999 until 2007 he worked at Max-Planck Institute of Computer Science in Saarbruecken, where he worked on automated theorem proving. His first contact with C++ was in 2002. In 2022, he spoke at CppNow and CppCon about automatic generation of bottom-up parsers in C++.
(The picture was taken in Branicki park in Bialystok.)