https://github.com/mirefek/geo_logic
Raw File
Tip revision: c8c9b715cae0acfb07585c25659b1333d075cc5b authored by mirefek on 25 July 2021, 19:43:55 UTC
bugfix
Tip revision: c8c9b71
technical_doc.txt
Here are basic descriptions and categorization
of the individual files of the source code,

Main application
* geo_logic.py

Numerical basics
* geo_object.py
  = Five numerical geometrical objects (Point, Line, Circle, Angle, Ratio)
    and basic numerical operations with them
* primitive_constr.py
  = file investigated by primitive_tools.py
    for making primitive construction tools (such as line, circumcenter)
* primitive_pred.py
  = file investigated by primitive_tools.py
    for making primitive predicate tools (such as lies_on, oriented_as)

Logic
* logical_core.py
* uf_dict.py = structure for lookup table
* Gaussian elimination (angles, ratios)
  * sparse_row.py
    = dictionary : object -> Fraction
      capable of addition and constant (Fraction) multiplication
  * sparse_elim.py
    ElimMatrix = structure representing the linear span
      of SparseRow, capable of dynamic addition,
      used for automatic ratio calculations
  * angle_chasing.py
    = extension of ElimMatrix of numerical detection modulo 1
      used for automatic angle calculations
* tools.py
  = tools which can interract with the logical core
  * primitive_tools.py
    = loading tools available at the beginning of basic.gl
  * tool_step.py
    = composite tools and (parallel) proof checking
  * externally loaded tools:
    * basic.gl = axioms and elementary tools
    * macros.gl = majority of tools
  * parse.py
    = loading gl files
    * basic_tools.py
      = python access to tools loaded from gl files
        + additional tweaks
  * movable_tools.py
    = loaded after parsing basic.gl, including (movable) intersection
* triggers.py
  = automatic deduction of facts such as
    a <- line A B
    <- lies_on C l
    b <- line B C
    THEN
    <- == a b
  * relstr.py

GUI
* viewport.py
  = main drawable area, it takes data of what
    to draw from knowledge_visualisation.py
  * label_visualiser.py
    = drawing object labels
* toolbar.py
* gtool.py = GUI Tool, also with simple tools GToolMove and GToolHide
  * gtool_constr.py
    = The five construction tools:
      Point, Parallel, Perpendicular, Circle, Circumcircle
  * gtool_general.py = tool activated by the input bar
  * gtool_label.py
  * gtool_logic.py = reasoning tool
* step_list.py
  = sidebar with steps
* file_chooser.py

Between logic and GUI
* graphical_env.py
  = dynamic structure storing the current construction
    and running it using a logical core
* knowledge_visualisation.py
  = investigating the inner state of a logical core
    and deciding what to draw,
    also contains some additional data such as label positions
back to top