Releases: kovzol/geogebra
GeoGebra Discovery 2023Apr03
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
What is new?
- Tarski has been updated to its newest version 1.32.
- Giac has been updated to its newest version 1.9.0. This addresses some CAS related bugs. Since Giac is now compiled with Emscripten 3 which has a much better support for handling C++ exceptions, several major issues are now solved in the web version, and there is some speedup by 20%.
- There are some substantial improvements in the real geometry proving subsystem. See below for some examples.
Available platforms
- Windows 10
- with Java (recommended):
- without Java (you need to install Java separately, or you need an existing Java installation: version 8 or above, either 64-bit or 32-bit, respectively):
- Mac OS (with bundled JBR Java), help on installation
- Ubuntu 18.04+ 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 111.0.5563.110)
As always, you can also try GeoGebra Discovery's latest version online.
(The Raspberry Pi version is not included in this release because the missing update of Giac for this platform. Please use a former version if you need to run GeoGebra Discovery on a Raspberry Pi.)
Examples
Prove that a segment is longer than zero
Create two points, say, by entering A=(0,0)
, B=(1,0)
, then a segment: f=Segment(A,B)
, and use ProveDetails(f>0)
. Note that even if A and B are given with specific coordinates, they are considered as free points. It is not assumed that they differ. So the output is {true, {"..."}, "c"} which means that the statement f>0 is true in a large set of cases, but not always, because if A=B, the statement is false. The abbreviation "c"
stands for components which comes from algebraic geometry.
Comparison of two segments
Now continue the first example by entering C=(1,1)
and add a segment g=Segment(B,C)
. By typing ProveDetails(f>g)
we still get {true, {"..."}, "c"} because in a large set of cases, but not always, the statement f>g is true. In fact, the same output will be obtained when typing ProveDetails(f>g)
, for the same reason. "A large set" means a two-dimensional set of cases for the point C if we fix points A and B.
By contrast, ProveDetails(f==g)
will give {false}, and that's fine. This case occurs only in a one-dimensional subset of the plane for the point C, so it is "a very small set". In fact, equalities are checked via Gröbner bases (that is, via the oldie-but-goldie algorithms, through Giac), and inequalities are computed via real quantifier elimination (through Tarski).
Checking the Triangle Inequality
Let us add another segment: h=Segment(A,C)
and try ProveDetails(f+g>h)
. The answer is: {true, {"AreCollinear(A,B,C)"}}, and it means, that the assumption that the triangle is not degenerate implies that f+g>h.
Let's try the opposite: ProveDetails(f+g<h)
. As expected, this can never happen, so we get {false}. We will get the same output for ProveDetails(f+g<=h)
because equality can happen only in a one-dimensional case, and it is "too small". We get the same output also for ProveDetails(f+g==h)
(but this time via Gröbner bases, because an equality is asked).
Generalizing the Pythagorean Theorem
Now we ask if ProveDetails(f^2+g^2==h^2)
(again, via Gröbner bases), and this is {false}. But what if we ask ProveDetails(f^2+g^2>=h^2)
? We get {true, {"..."}, "c"}, because in a large set of the inputs this is indeed true. The same result will be obtained if >
, <
or <=
is used.
We may want to find some more general relations here. Let's try ProveDetails(f^2+g^2<=h^2/2)
, and this is {false}, because the left hand side is usually greater than the half of the right hand side. And yes, by trying ProveDetails(f^2+g^2>h^2/2)
we get {true, {"AreCollinear(A,B,C)"}}.
In fact, we get the same result for ProveDetails(f^2+g^2>h^2/3)
, that is, {true, {"AreCollinear(A,B,C)"}}. Even if this is always true. But GeoGebra Discovery assumes in advance that the triangle is non-degenerate, so we always obtain this extra condition, no way to get rid of it (at least, in the current version).
So how can we find the actual quantity of the left hand side compared to the right hand side? We can try ProveDetails(f^2+g^2<0.51h^2)
, and this is {true, {"..."}, "c"}, but, as mentioned above, ProveDetails(f^2+g^2<0.51h^2)
is {false}. So, between 0.5 and 0.51 there is a gap, and this gap is "big enough" to ensure that our statement is true for the ratio 0.51. So here we may have a conjecture that 0.5 is the border case, and indeed, by using some other commands in GeoGebra Discovery (like Relation(f^2+g^2, h^2)
) this can be confirmed.
Using constraints in the Triangle Inequality
Let's start with another example. Create a line AB and put a point C on it. Let g=Segment(A,C)
, h=Segment(B,C)
and i=Segment(A,B)
.
First we check if ProveDetails(g+h==i)
is true, but we get {true, {"g=i+h", "i+g=h"}} which means that g+h=i unless g=i+h or i+g=h. This is computed via Gröbner bases. We change the input to ProveDetails(g+h>=i)
and this returns {true}, because in all three parts of the line AB the relation holds. In addition, ProveDetails(g+h>i)
will give {true, {"..."}, "c"} since for the middle part of the line the statement is false, but otherwise the relation holds. Also, ProveDetails(g+h<i)
is {false}, because the relation is never true. Finally, as expected, ProveDetails(g+h<=i)
gives {true, {"..."}, "c"}. And this is correct, because the equality holds if C is in the middle part of the line.
Now we change our formulation. We create a segment f=AB and put a point C on it. Let g=Segment(A,C)
, h=Segment(B,C)
and i=Segment(A,B)
.
First we check if ProveDetails(g+h==i)
is true, and we get {true}, because the constraint that C is on the segment ensures this. This is computed via real quantifier elimination (that is, via Tarski). If we change the input to ProveDetails(g+h>=i)
or ProveDetails(g+h<=i)
, we get {true} again, the relation holds on the segment. In addition, ProveDetails(g+h>i)
or ProveDetails(g+h<i)
will give {} which means that GeoGebra Discovery cannot decide the truth. And the reason for that is that GeoGebra Discovery actually learns that these statements cannot be always true, but it is too complicated to analyze the semi-algebraic result and compare it with the initial assumptions of the segment constraint. That is, it cannot be sure how big is the remaining set where the statement actually holds. So it stays on the safe side and says nothing!
Clough's conjecture
By adding constraints, sometimes it is simpler to get a useful result. An example is Clough's conjecture. We create a regular triangle ABC, put a point D inside it (by attaching D to the triangle, this is important), and then projecting D on the sides, and finally creating the connective segments to the vertices of the triangle. And now, ProveDetails(l+n+m==1.5f)
returns {true} because this statement is always true under the assumptions. This example is quite heavy, you may need a fast computer to get this result in reasonable time. Most probably your web browser will not able to compute this example, only the desktop version has some chance.
Viviani's theorem
A somewhat more difficult computation will be performed for Viviani's theorem. The construction steps are very similar, but here the lengths of the projections are added. Finally, ProveDetails(l+m+n==sqrt(3)/2 f)
can be entered to get {true}.
This example is heavy, similarly to the previous one. You need a recent computer to have some chance to get the expected output.
A variant of Clough and Viviani
We can generalize the last two examples by using a square instead of a regular triangle. This may simplify things, because we can avoid the difficult background computations with the linear projec...
GeoGebra Discovery 2023Mar27
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
What is new?
- Tarski has been updated to its newest version. This fixes a minor bug in Tarski's normalize command. There is a new version of the epc (expand-process-combine) script included. It improves proving via real geometry.
Available platforms
- Windows 10
- with Java (recommended):
- without Java (you need to install Java separately, or you need an existing Java installation: version 8 or above, either 64-bit or 32-bit, respectively):
- Mac OS (with bundled JBR Java), help on installation
- Ubuntu 18.04+ 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 111.0.5563.110)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
GeoGebra Discovery 2022Mar04
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
What is new?
- This version improves stability of the LocusEquation and Plot2D commands by using the BigInteger datatype everywhere.
- Tarski has been updated to its newest version. This fixes a minor bug when plotting quadratic polynomials. Thanks to Chris Brown for the update.
- From now on, GeoGebra Discovery uses its own logo to make a distinction between mainstream GeoGebra and itself, to notify the user.
- In the Help/About menu the Giac and Tarski versions are now indicated.
Available platforms
- Windows 10
- with Java (recommended):
- without Java (you need to install Java separately, or you need an existing Java installation: version 8 or above, either 64-bit or 32-bit, respectively):
- Mac OS (with bundled JBR Java), help on installation
- Ubuntu 18.04+ 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 109.0.5414.119)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
GeoGebra Discovery 2023Feb14
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
This version improves stability and speed of the Plot2D command and fixes some bugs in the Discover command.
See commits 0f78f1a, 0c383ee, c8dbbe1 and c226797 for some more technical details.
From this version on, a standalone bundle for Windows users is provided. That is, from now on, it is not necessary to download a Java Runtime Environment (JRE) separately in order to use GeoGebra Discovery. It is already contained in the installation bundle. However, the file to be downloaded is much larger. For those users who prefer a smaller package, we still provide .zip files that do not contain the JRE. If you use the smaller package, make sure that your Java version conforms your operating system (either 64-bit or 32-bit).
Available platforms
- Windows 10
- with Java (recommended):
- without Java (you need to install Java separately, or you need an existing Java installation: version 8 or above, either 64-bit or 32-bit, respectively):
- Mac OS (with bundled JBR Java), help on installation
- Ubuntu 18.04+ 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 109.0.5414.119)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
Example
This version shows a technological breakthrough in visualizing semialgebraic equation systems (they may be combined with logical connectives) by using a simple caching algorithm in the background. When entering the commands a=Slider(-2,5)
, Plot2D(x² + y² <= a x³ - x y⁴ - 1)
, StartAnimation(a, true)
, a smooth animation is started. You can try this directly in the web version.
GeoGebra Discovery 2023Feb01
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
This version adds symbolic support to the Dilate command for the mostly used cases. As a result, constructing certain locus equations and proving certain theorems will be simpler and faster. Also, symbolic conversion of real numbers to rationals are now computed via a different method, so more accurate results in plotting locus equations can be expected.
Available platforms
- Windows 10 64-bit or 32-bit (they require an existing Java installation, version 8 or above, either 64-bit or 32-bit, respectively)
- Mac OS (with bundled JBR), help on installation
- Ubuntu 18.04 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 108.0.5359.124)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
Examples
The Dilate command and tool has been there in GeoGebra for many years. It can be used to dilate an object from a point (which is the dilation center point), using a given factor. Now this command has support in the prover subsystem. This improvement makes much easier to divide a line segment in a given ratio: the intercept theorem must no longer be used. This simplifies the computations and the output as well.
Here Hart's A-frame was constructed by using the Dilate tool twice: Point E is attached to the circle c and point C is a dilated point that was obtained by the command Dilate(E,3/4,A). Similarly, another dilation was used to get point F by using Dilate(D,4/3,B).
Not just the result looks simple (it is a septic polynomial, a product of a sextic curve and a linear component) but its computation is much faster. A real-time animation that exceeds 7 frame per second can be obtained on a typical desktop computer.
Another example shows some benefits when discovering or proving facts on ratios. We switch the stepwise discovery mode on at the beginning. Then we draw a triangle ABC, create midpoint D of BC (this introduces f and g that divide BC in equal proportions), and use Dilate(D,2/3,A) to obtain D'. Clearly, A, D and D' are collinear (this is a trivial discovery, so we get line h). Now D'' can be created by using the command Dilate(D',3/2,B) and we immediately get that A, C and D'' are collinear (line i), B, D' and '' are also collinear (line j, but this is trivial), the point D'' divides side b into equal proportions (that is, k=l), and also there are two lines m and n that are parallel to each other (they are AB and DD'').
GeoGebra Discovery 2023Jan27
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
This version introduces several technical improvements. It can be considered as a preview of some substantial updates:
- There is a new command Plot2D ( < Function > ) that aims at plotting a Tarski formula, that is, a list of equations or inequalities, combined with logical connectives. Plotting is performed via the Tarski subsystem (via an SVG conversion for each frame) so a topologically faithful graph is expected. This feature works for some simpler real-time animations as well.
- Rational numbers and approximated reals are now supported in the Tarski subsystem. As a result, real quantifier elimination can be done on expressions that include rational numbers.
- When a step is unsupported in the construction for plotting a locus equation, there is a warning shown now.
- According to a bug, it was impossible to plot locus equations when a circle and a parabola/hyperbola/ellipse was intersected. This is now fixed. As a consequence, it is possible to plot some Holditch curves of parabolas, hyperbolas and ellipses.
- Full language support has been added for the latest commands Plot2D and RealQuantifierElimination for German, Spanish and Hungarian.
Known bugs:
- The Plot2D command may have issues when a dynamically created object is in its input. This includes file loading errors, missing update in the Algebra View and unremovable objects. Sometimes a restart of GeoGebra Discovery is required.
Available platforms
- Windows 10 64-bit or 32-bit (they require an existing Java installation, version 8 or above, either 64-bit or 32-bit, respectively)
- Mac OS (with bundled JBR), help on installation
- Ubuntu 18.04 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 108.0.5359.124)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
Examples
The Plot2D command can process the following types of inputs: algebraic functions in one or two variables, implicit algebraic equations in one or two variables, logical connectives of inequalities in one or two variables.
Here a cubic can be seen. Note that the isolated point (0,0) is also drawn (with a filled square). The dashed lines are just auxiliary objects and they are present because the underlying version of Tarski produces a CAD plot at the moment. (In a later version these dashed lines will be removed.)
A second example shows the use logical connectives. The continuous lines at the bottom of the image belong to the CAD (they will be removed in a later version).
Here some points with an empty (unfilled) square are also shown. These points do not belong to the output set. (Some of them will be removed in a later version.)
In a third example a combination of a cubic inequality and an animated slider is shown. The underlying system is fast enough to provide a fast animation in non-trivial cases. Of course, for higher degree curves or a set of more curves the plotting time may be longer.
In fact, Tarski recomputes the CAD for each input. In some cases, however, certain computations could be skipped. This might be addressed in a future version of GeoGebra Discovery. Also, the communication is performed via a full translation of the SVG output of Tarski's internal plot2d command. Here some more speedup could be done.
Not just the third but also the fourth example explains how rationals are supported in the communication between GeoGebra Discovery and Tarski. In the following figure we prove that in the unit square the longest inscribed segment is shorter than 1.5, but not shorter than 1.4.
In fact, the longest inscribed segment can be defined via the diagonal and it has length √2. This example can be used not only in English but since this version also in Spanish (command name: REC) or in Hungarian (command name: ValósKvantorelimináció).
The next figure shows that there is some error reporting on the run of the LocusEquation command if one of the hypotheses cannot be given in algebraic form by the program.
This does not always mean that an algebraization is theoretically impossible, but maybe just that the requested feature is not (yet) implemented. By redrawing the figure with the use of the Parabola tool (or command) one can get a Holditch curve quite easily.
Credits
Christopher W. Brown kindly helped in preparing Tarski to collaborate with GeoGebra Discovery in an adequate way. László Gál helped in programming graphic primitives of GeoGebra. Tomás Recio, Noah Dana-Picard, Lena Stadler, Stefan Pechhacker and some other contributors sent certain bug reports that indicated some substantial improvements in the code.
GeoGebra Discovery 2022Dec27
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
What is new in this release
- Bugfix: The stepwise discovery feature is temporarily switched off on file loading (commit).
- Bugfix: A larger set of quantified formulas in the CAS View are now supported (commit). This includes ∃x (∃y ((x+y=1) ∧ (x-y=2))) which was translated by Tarski to GeoGebra/Giac with an insufficient amount of parentheses and therefore it was handled incorrectly. (This bug was already reported with the non-working example (∃x x=0) || (∀x x=1), this has been solved with the current version.) Technically, this fix required the update of the Tarski subsystem, thus this version includes the latest snapshot of Tarski (2022Dec27).
- Bugfix: Circles with a fixed radius can be used in the Automated Reasoning Tools subsystem now. This includes sliders as well. As a result, several constructions (including linkages) that lead to locus equations can be simplified and speeded up. This issue has been well-known for many years (see TP-9) and now fixed for a large set of inputs.
- Bugfix: The LaTeX export of the Construction Protocol is improved: now indexed labels are handled better and steps without a toolbar icon are exported properly (commit).
Available platforms
- Windows 10 64-bit or 32-bit (they require an existing Java installation, version 8 or above, either 64-bit or 32-bit, respectively)
- Mac OS (with bundled JBR), help on installation
- Ubuntu 18.04 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 108.0.5359.124)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
GeoGebra Discovery 2022Nov03
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
What is new in this release
- The stepwise discovery feature is somewhat faster: it does not analyze free points.
Thanks to Tomás Recio for his assistance.
Available platforms
- Windows 10 64-bit or 32-bit (they require an existing Java installation, version 8 or above, either 64-bit or 32-bit, respectively)
- Mac OS (with bundled JBR), [help on installation]
- Ubuntu 18.04 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 107.0.5304.87)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
GeoGebra Discovery 2022Nov01
Summary
This is a stable release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
What is new in this release
- The stepwise discovery feature is available in the web version as a toggle button in the Graphics View now.
- Also, a command StepwiseDiscovery can be used in the Algebra View (or as a GeoGebraScript command).
- Several bug fixes of the stepwise discovery features are included:
- skipping highlighting unrelated orthogonal/parallel lines,
- avoid computing results for non-existing points (on intersecting overlapping lines/segments),
- do not run discovery when cancelling a drawing step.
- The stepwise discovery feature has translations for German and Hungarian.
- All other translations have been updated to be in sync with mainstream GeoGebra 5.0.735.0.
Thanks to Jonathan H. Yu for his assistance.
Available platforms
- Windows 10 64-bit or 32-bit (they require an existing Java installation, version 8 or above, either 64-bit or 32-bit, respectively)
- Mac OS (with bundled JBR), [help on installation]
- Ubuntu 18.04 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 105.0.5195.125)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.
v5.0.641.0-2022Sep27
Summary
This is an experimental release of GeoGebra Discovery, based on the official GeoGebra version 5.0.641.0.
It includes several extensions that are communicated on its website.
What is new in this release
The Tarski subsystem is faster and more stable on the following platforms:
- Windows 32 and 64 bit
- Linux
- Raspberry Pi OS
- Web (it requires Chrome >= 95, Firefox >= 100 or Safari 15.2, on older versions it does not work!)
(No change in speed on Mac. For your convenience, an unmodified Mac version is also included.)
Known bugs
- The 32-bit Windows version and the Raspberry Pi OS version crash on timeout in the Tarski subsystem. (The default timeout is 5 seconds. It can be increased by setting the CAS Timeout and save the new settings as default, or/and by using the command line option
--prover=timeout:60
, for example.)
Available platforms
- Windows 10 64-bit or 32-bit (they require an existing Java installation, version 8 or above, either 64-bit or 32-bit, respectively)
- Mac OS (with bundled JBR), help on installation
- Ubuntu 18.04 64 bit (an existing Java installation is required, version 8 or above).
- Web version (tested in Chrome 105.0.5195.125)
- Raspberry Pi OS (an existing Java installation is required, version 8 or above)
As always, you can also try GeoGebra Discovery's latest version online.