9 July 2021

Status report on embedding realgeom in GeoGebra

This is a short blog entry that summarizes the current stage of adding real geometry support in GeoGebra in a direct way. During the last few months hard work was made on combining QEPCAD B, Tarski and GeoGebra as separated subsystems as shown in the figure:


The combination was done with an external system called realgeom. Now we reached a kind of maturity of the code and the system is quite stable. It is double-checked with two benchmarking systems. Their recent outputs are available for GeoGebra's Compare and Prove commands. Among other important results we humbly report that Euler's inequality can be successfully proven with our subsystem inside GeoGebra Discovery. (Some preliminary results were recently communicated at CADGME Online Gathering 2021.)

The currently used technology has two drawbacks. First, it is quite complicated and prevents users from enjoying a simple interface since the realgeom subsystem appears in the background:


The other problem is more important: there is no way to embed the system in a web page at the moment.

We started to address both problems. The first one is joint work with Christopher W. Brown, main author of QEPCAD B and Tarski. We work on embedding QEPCAD B completely inside Tarski, and as a final result we will compile a Java Native Interface (JNI) version of Tarski. The JNI code could be accessed directly in a Java program, namely in GeoGebra.

Technically speaking, we had to compile the Tarski system on the major platforms including Windows, Mac and Linux. The Tarski system was designed to run on Linux, but with some simplifications now it is possible to run it on Mac and Windows systems as well. The porting was simpler for Mac, but for Windows it required quite much work. We had to use the MSYS2/MSYS subsystem to have a fully fledged version of Tarski, and the MSYS2/CLANG64 subsystem to be able to create a stable JNI version of QEPCAD B. Doing the same for Tarski is on-going work.

The MSYS2 system provides several flavors to compile C/C++ code on Windows that were originally written for systems like Linux. Using Java as another player makes things even more complicated. After some discussion with the MSYS2 developers it turned out that we need the CLANG64 environment to make it possible to get a working JNI version. Latest build of Tarski supports this concept.

What next? First, Tarski will be extended for direct embedding as JNI. Second, the realgeom tool will be directly added to GeoGebra Discovery. Third, we will continue working on embedding Tarski in a web page.


Entries on topic technical developments

  1. Embedding realgeom in GeoGebra (9 July 2021)
  2. Web version of Tarski (1 October 2021)
  3. Developing Giac with Qt Creator on Windows (24 January 2022)
  4. Compiling Giac via MSYS2/CLANG32 (2 April 2022)
  5. Terminals on the web (28 June 2022)
  6. Torus puzzle (15 April 2023)
  7. Tube amoeba (16 April 2023)
  8. XaoS in WebAssembly (30 August 2023)
  9. Debut of GNU Aris in WebAssembly (11 November 2023)
  10. JGEX 0.81 (in Hungarian) (10 December 2023)
  11. xaos.app (2 January 2024)
  12. Compiling and running bibref-qt on Wine (22 August 2024)

Zoltán Kovács
Linz School of Education
Johannes Kepler University
Altenberger Strasse 69
A-4040 Linz