garywelz commited on
Commit
06e4298
·
1 Parent(s): 7921de6

Sync programming_framework from local progframe

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +0 -2
  2. .gitignore +3 -0
  3. ARXIV_MATH_AREAS_TODO.md +122 -0
  4. ATTRIBUTION_SCHEMA.md +39 -0
  5. GENERIC_PROCESSES_TO_UPDATE.md +90 -0
  6. GLMP_Foundation.html +0 -0
  7. Genome Logic Modeling Project (GLMP) - a Hugging Face Space by garywelz.pdf +0 -3
  8. MATHEMATICAL_DEPENDENCY_GRAPHS_DESIGN.md +321 -0
  9. MATHEMATICS_DATABASE_EXPANSION_PLAN.md +291 -0
  10. NEXT_PASS_CHECKLIST.md +182 -0
  11. NEXT_STEPS_PLAN.md +161 -0
  12. ProgFrame_README.md +0 -227
  13. Programming Framework for Systematic Analysis - a Hugging Face Space by garywelz.pdf +0 -3
  14. README.md +70 -243
  15. WHOLE_OF_MATHEMATICS_CHART_DESIGN.md +374 -0
  16. biology_processes.html +5 -5
  17. chemistry-database-table.html +0 -545
  18. chemistry_examples.html +0 -609
  19. computer-science-database-table.html +0 -543
  20. data/aristotle-syllogistic-figure-2.mmd +30 -0
  21. data/aristotle-syllogistic-figure-3.mmd +37 -0
  22. data/aristotle-syllogistic-foundations-perfect.mmd +23 -0
  23. data/aristotle-syllogistic.json +326 -0
  24. data/aristotle-syllogistic.mmd +52 -0
  25. data/combinatorics-advanced-counting.mmd +24 -0
  26. data/combinatorics-combinations-binomial.mmd +20 -0
  27. data/combinatorics-principles-permutations.mmd +17 -0
  28. data/combinatorics.json +239 -0
  29. data/combinatorics.mmd +35 -0
  30. data/euclid-elements-book-i-props-1-10.mmd +49 -0
  31. data/euclid-elements-book-i-props-11-20.mmd +78 -0
  32. data/euclid-elements-book-i-props-21-30.mmd +105 -0
  33. data/euclid-elements-book-i-props-31-41.mmd +127 -0
  34. data/euclid-elements-book-i-props-42-48.mmd +160 -0
  35. data/euclid-elements-book-i.json +1167 -0
  36. data/euclid-elements-book-i.mmd +195 -0
  37. data/euclid-elements-book-ii.json +365 -0
  38. data/euclid-elements-book-ii.mmd +54 -0
  39. data/euclid-elements-book-iii.json +885 -0
  40. data/euclid-elements-book-iv.json +573 -0
  41. data/euclid-elements-book-ix.json +728 -0
  42. data/euclid-elements-book-v.json +676 -0
  43. data/euclid-elements-book-vi.json +875 -0
  44. data/euclid-elements-book-vii.json +761 -0
  45. data/euclid-elements-book-viii.json +540 -0
  46. data/euclid-elements-book-x.json +2620 -0
  47. data/euclid-elements-book-xi.json +783 -0
  48. data/euclid-elements-book-xii.json +567 -0
  49. data/euclid-elements-book-xiii.json +650 -0
  50. data/peano-arithmetic-addition-multiplication.mmd +65 -0
.gitattributes CHANGED
@@ -33,5 +33,3 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
- Genome[[:space:]]Logic[[:space:]]Modeling[[:space:]]Project[[:space:]](GLMP)[[:space:]]-[[:space:]]a[[:space:]]Hugging[[:space:]]Face[[:space:]]Space[[:space:]]by[[:space:]]garywelz.pdf filter=lfs diff=lfs merge=lfs -text
37
- Programming[[:space:]]Framework[[:space:]]for[[:space:]]Systematic[[:space:]]Analysis[[:space:]]-[[:space:]]a[[:space:]]Hugging[[:space:]]Face[[:space:]]Space[[:space:]]by[[:space:]]garywelz.pdf filter=lfs diff=lfs merge=lfs -text
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+
2
+ # HF rejects raw PDFs in git push; host PDFs elsewhere or use Xet
3
+ *.pdf
ARXIV_MATH_AREAS_TODO.md ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mathematics Database — arXiv Subject Areas To-Do
2
+
3
+ A prioritized list of arXiv mathematics subject areas to add for a more complete collection, aligned with [arXiv math taxonomy](https://arxiv.org/category_taxonomy).
4
+
5
+ ---
6
+
7
+ ## Current Coverage (What We Have)
8
+
9
+ | Domain | Subcategories | arXiv codes covered | Gaps |
10
+ |--------|---------------|---------------------|------|
11
+ | **Algebra** | abstract_algebra, linear_algebra, category_theory | math.GR, math.RA, math.CT, math.AC, math.AG, math.QA | Commutative algebra, Algebraic geometry, Representation theory, Quantum algebra |
12
+ | **Analysis** | calculus_analysis | math.CA, math.CV, math.DS, math.FA, math.AP, math.NA, math.SP | Complex analysis, Functional analysis, PDEs, Numerical analysis, Spectral theory |
13
+ | **Geometry & Topology** | geometry_topology | math.GT, math.AT, math.DG, math.GN, math.MG, math.SG | Metric geometry, Symplectic geometry (light) |
14
+ | **Number Theory** | number_theory | math.NT | ✓ Good |
15
+ | **Discrete & Logic** | discrete_mathematics, foundations | math.CO, math.LO | ✓ Good |
16
+ | **Applied & Other** | bioinformatics, statistics_probability | math.GM, math.ST | Statistics/Probability empty |
17
+
18
+ ---
19
+
20
+ ## To-Do List: Subject Areas to Add (Near Term)
21
+
22
+ ### Priority 1 — High Impact, Partially Covered or Empty
23
+
24
+ | # | arXiv Code | Subject Area | Notes | Suggested Subcategory |
25
+ |---|------------|--------------|-------|------------------------|
26
+ | 1 | math.ST | **Statistics & Probability Theory** | 0 charts currently; foundational for applied math | `statistics_probability` (exists, populate) |
27
+ | 2 | math.PR | **Probability** | CLT, stochastic processes, SDEs; distinct from statistics | merge into `statistics_probability` or add `probability` |
28
+ | 3 | math.CV | **Complex Variables** | Holomorphic functions, residues, conformal maps; partially in calculus_analysis | add `complex_analysis` or extend calculus_analysis |
29
+ | 4 | math.FA | **Functional Analysis** | Banach spaces, Hilbert spaces, distributions | add to calculus_analysis or new `functional_analysis` |
30
+ | 5 | math.NA | **Numerical Analysis** | Newton-Raphson, bisection exist; add quadrature, linear solvers, ODE solvers | extend calculus_analysis or add `numerical_analysis` |
31
+ | 6 | math.AG | **Algebraic Geometry** | Varieties, schemes, moduli; major area | add `algebraic_geometry` or extend abstract_algebra |
32
+ | 7 | math.RT | **Representation Theory** | Representations of groups, Lie algebras | add `representation_theory` or extend abstract_algebra |
33
+
34
+ ### Priority 2 — Core Pure Math Gaps
35
+
36
+ | # | arXiv Code | Subject Area | Notes | Suggested Subcategory |
37
+ |---|------------|--------------|-------|------------------------|
38
+ | 8 | math.AC | **Commutative Algebra** | Rings, ideals, Noetherian; differs from Ring Theory (noncommutative focus) | add `commutative_algebra` |
39
+ | 9 | math.AP | **Analysis of PDEs** | Existence, uniqueness, qualitative dynamics | add `partial_differential_equations` or extend analysis |
40
+ | 10 | math.DG | **Differential Geometry** | Curves, surfaces, Riemannian; some in geometry_topology | ensure distinct charts for differential geometry |
41
+ | 11 | math.SP | **Spectral Theory** | Schrödinger operators, spectral analysis | add to analysis or `spectral_theory` |
42
+ | 12 | math.SG | **Symplectic Geometry** | Hamiltonian systems, symplectic manifolds | extend geometry_topology |
43
+ | 13 | math.MG | **Metric Geometry** | Euclidean, hyperbolic, discrete geometry | extend geometry_topology |
44
+
45
+ ### Priority 3 — Advanced / Specialized
46
+
47
+ | # | arXiv Code | Subject Area | Notes | Suggested Subcategory |
48
+ |---|------------|--------------|-------|------------------------|
49
+ | 14 | math.OA | **Operator Algebras** | C*-algebras, von Neumann algebras | add `operator_algebras` |
50
+ | 15 | math.KT | **K-Theory and Homology** | Algebraic/topological K-theory | add `k_theory` or extend algebraic topology |
51
+ | 16 | math.QA | **Quantum Algebra** | Quantum groups, operads | extend abstract_algebra |
52
+ | 17 | math.OC | **Optimization and Control** | Linear programming, optimal control | add `optimization` |
53
+ | 18 | math.IT | **Information Theory** | Coding, entropy, channel capacity | add `information_theory` |
54
+ | 19 | math.MP | **Mathematical Physics** | Rigorous formulations of physical theories | add `mathematical_physics` |
55
+ | 20 | math.HO | **History and Overview** | Biographies, education, philosophy | optional `history_overview` |
56
+
57
+ ### Priority 4 — Already in Expansion Plan
58
+
59
+ These are in [MATHEMATICS_DATABASE_EXPANSION_PLAN.md](./MATHEMATICS_DATABASE_EXPANSION_PLAN.md):
60
+
61
+ - **Complex Analysis** (math.CV) — 4 charts planned
62
+ - **Landmark Theorems** — FLT, Poincaré, Riemann
63
+ - **Formal Verification** — Lean, Coq
64
+ - **AI Mathematics** — AlphaProof, AlphaGeometry
65
+
66
+ ---
67
+
68
+ ## Suggested Implementation Order
69
+
70
+ ### Phase A (1–2 weeks): Fill Empty & High-Impact
71
+ 1. **Statistics & Probability** — Kolmogorov axioms, Bayes, CLT (3–5 charts)
72
+ 2. **Complex Analysis** — Cauchy, residues, conformal maps (4 charts per expansion plan)
73
+ 3. **Functional Analysis** — Banach/Hilbert spaces basics (2–3 charts)
74
+
75
+ ### Phase B (2–4 weeks): Algebra & Geometry Gaps
76
+ 4. **Algebraic Geometry** — Varieties, schemes intro (2–3 charts)
77
+ 5. **Representation Theory** — Group representations, characters (2–3 charts)
78
+ 6. **Numerical Analysis** — Quadrature, solvers, ODE methods (3–4 charts)
79
+
80
+ ### Phase C (4–6 weeks): PDEs, Operator Theory, Applied
81
+ 7. **PDEs** — Heat, wave, Laplace; existence/uniqueness (2–3 charts)
82
+ 8. **Operator Algebras** — C*-algebras intro (1–2 charts)
83
+ 9. **Optimization** — Linear programming, simplex (2 charts)
84
+ 10. **Mathematical Physics** — Lagrangian/Hamiltonian mechanics (2 charts)
85
+
86
+ ---
87
+
88
+ ## Metadata Updates Required
89
+
90
+ When adding new subcategories:
91
+
92
+ 1. Add to `metadata.json` → `subcategoryCounts`
93
+ 2. Add to `metadata.json` → `subcategoryToArxiv`
94
+ 3. Add to `metadata.json` → `domainHierarchy` (assign to algebra, analysis, geometry_topology, or applied)
95
+ 4. Run `build-graph-data.js` to update Whole of Mathematics
96
+ 5. Update upload script if new process directories are created
97
+
98
+ ---
99
+
100
+ ## Summary: arXiv Math Codes Not Yet Represented
101
+
102
+ | Code | Area | Priority |
103
+ |------|------|----------|
104
+ | math.ST | Statistics Theory | 1 |
105
+ | math.PR | Probability | 1 |
106
+ | math.CV | Complex Variables | 1 |
107
+ | math.FA | Functional Analysis | 1 |
108
+ | math.NA | Numerical Analysis | 1 |
109
+ | math.AG | Algebraic Geometry | 1 |
110
+ | math.RT | Representation Theory | 1 |
111
+ | math.AC | Commutative Algebra | 2 |
112
+ | math.AP | Analysis of PDEs | 2 |
113
+ | math.SP | Spectral Theory | 2 |
114
+ | math.OA | Operator Algebras | 3 |
115
+ | math.KT | K-Theory | 3 |
116
+ | math.QA | Quantum Algebra | 3 |
117
+ | math.OC | Optimization & Control | 3 |
118
+ | math.IT | Information Theory | 3 |
119
+ | math.MP | Mathematical Physics | 3 |
120
+ | math.HO | History & Overview | 4 |
121
+
122
+ **Well covered:** math.NT, math.CO, math.LO, math.GR, math.RA, math.CT, math.CA, math.GT, math.AT, math.DS (via complex dynamics)
ATTRIBUTION_SCHEMA.md ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mathematics Database — Attribution Schema
2
+
3
+ Charts in the Mathematics Processes Database may include optional attribution metadata for academic transparency and citation.
4
+
5
+ ## Schema
6
+
7
+ | Field | Type | Description |
8
+ |-------|------|-------------|
9
+ | `primary` | string | Primary author(s) or source (e.g., "Kurt Gödel", "Claude Shannon") |
10
+ | `contributors` | string[] | Additional contributors (optional) |
11
+ | `publication` | string | Title of publication or paper |
12
+ | `year` | string | Year of publication |
13
+ | `doi` | string | DOI URL (e.g., "https://doi.org/...") |
14
+ | `url` | string | External URL (Wikipedia, arXiv, etc.) |
15
+
16
+ ## Implementation
17
+
18
+ Attribution is embedded in chart HTML via a "Cite" badge in the header-meta area. Hovering over the badge reveals a popover with the full attribution details. Charts using this schema include:
19
+
20
+ - Gödel Incompleteness Theorems
21
+ - Schemes & Sheaves (Grothendieck)
22
+ - Group Representations (Frobenius, Maschke)
23
+ - Riemannian Geometry
24
+ - ZFC Axioms
25
+ - Shannon Entropy
26
+ - C*-Algebras (Gelfand–Naimark)
27
+
28
+ ## Example JSON
29
+
30
+ ```json
31
+ {
32
+ "primary": "Kurt Gödel",
33
+ "contributors": [],
34
+ "publication": "Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I",
35
+ "year": "1931",
36
+ "doi": "https://doi.org/10.1007/BF01700692",
37
+ "url": "https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems"
38
+ }
39
+ ```
GENERIC_PROCESSES_TO_UPDATE.md ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Generic Processes Needing Real Content
2
+
3
+ These processes use the generic template ("This X process visualization demonstrates... The flowchart shows...") and need to be replaced. **Use different approaches for different process types.**
4
+
5
+ ## Strategy by Process Type
6
+
7
+ ### 1. Algorithm flowcharts (like Binary Search)
8
+ **Examples:** Binary Search (done), Cryptographic Algorithms, Numerical Methods
9
+
10
+ **Approach:** Process-like flowcharts with:
11
+ - Inputs (sorted array, search key)
12
+ - Steps (initialize interval, compute middle, compare)
13
+ - Decision diamonds (interval empty? key == A[mid]? key < A[mid]?)
14
+ - Outputs (found index, not found)
15
+ - Chart title: **"Algorithm Flowchart"** (do not use "GLMP 6-Color Scheme" in the title)
16
+
17
+ **Reference:** [Binary Search](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/processes/discrete_mathematics/discrete_mathematics-binary-search.html) – O(log n) complexity
18
+
19
+ **Candidates:** Add specific algorithms – e.g. RSA, Newton-Raphson, Sieve of Eratosthenes, Dijkstra – each as its own process flowchart.
20
+
21
+ ### 2. Axiom-theorem dependency graphs (like Euclid, Peano, Propositional Logic, Aristotle)
22
+ **Examples:** Euclid Book I (done), Peano Arithmetic (done), Propositional Logic (done), Aristotle Syllogistic (done)
23
+
24
+ **Approach:** Real mathematical development:
25
+ - Axioms / definitions at the base
26
+ - Theorems with explicit dependencies (arrows = "depends on")
27
+ - Split into subgraphs for clarity (like Euclid Book I's 5 views)
28
+
29
+ **Reference:** [Euclid Book I](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/processes/geometry_topology/geometry_topology-euclid-elements-book-i.html)
30
+
31
+ **Candidates:**
32
+ - **Group Theory** – done (43 nodes, 69 edges across 3 subcharts; Euclid-style layered dependencies)
33
+ - **Ring Theory** – ring axioms → integral domain, polynomial rings
34
+ - **Field Theory** – field axioms → extensions, algebraic closure
35
+ - **Limit / Derivative / Integral** – ε-δ, limit laws, FTC, etc.
36
+ - **Modular Arithmetic** – congruence, Fermat's little theorem, etc.
37
+ - **Topology** – open sets, continuity, compactness
38
+ - **Differential Geometry** – manifold, metric, curvature
39
+
40
+ ### 3. Axiomatic combinatorics (like Euclid Book I for counting)
41
+ **Example:** Combinatorics (done)
42
+
43
+ **Approach:** Axiomatic theory of combinatorics – definitions (factorial, sum/product principles) and theorems (permutations, combinations, binomial, pigeonhole, inclusion-exclusion) with dependency graph. Can be expanded to be more comprehensive like Euclid Book I.
44
+
45
+ **Reference:** [Combinatorics](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/processes/geometry_topology/geometry_topology-combinatorics.html)
46
+
47
+ ---
48
+
49
+ ## Updated (with real content)
50
+ - **Combinatorics** – Axiomatic counting theory (14 nodes, 15 edges)
51
+ - **Binary Search** – Algorithm flowchart (already had real content)
52
+ - **Sieve of Eratosthenes** – Prime Number Generation (10 nodes, 14 edges) ✓ Batch 1
53
+ - **Newton-Raphson Method** – Numerical Methods (9 nodes, 11 edges) ✓ Batch 1
54
+ - **Bisection Method** – Limit Calculation (8 nodes, 10 edges) ✓ Batch 2
55
+ - **Extended Euclidean Algorithm** – Modular Arithmetic (6 nodes, 6 edges) ✓ Batch 2
56
+ - **Dijkstra's Algorithm** – Graph Theory Algorithms (7 nodes, 8 edges) ✓ Batch 2
57
+ - **RSA Algorithm** – Cryptographic Algorithms (7 nodes, 7 edges) ✓ Batch 3
58
+ - **Simpson's Rule** – Integral Calculation (6 nodes, 5 edges) ✓ Batch 3
59
+ - **Kruskal's Algorithm** – new (9 nodes, 12 edges) ✓ Batch 3
60
+ - **AES Algorithm** – new (8 nodes, 8 edges) ✓ Batch 4
61
+ - **Merge Sort** – new (7 nodes, 7 edges) ✓ Batch 4
62
+ - **Prim's Algorithm** – new (9 nodes, 12 edges) ✓ Batch 4
63
+ - **Quicksort** – new (6 nodes, 6 edges) ✓ Batch 5
64
+ - **Breadth-First Search** – new (7 nodes, 8 edges) ✓ Batch 5
65
+ - **Binary Search Tree Insert** – new (8 nodes, 9 edges) ✓ Batch 5
66
+ - **Group Theory** – Axiom-theorem dependency graph (21 nodes, 29 edges across 3 subcharts) ✓
67
+
68
+ ## Need Updates (by type)
69
+
70
+ ### Algorithm flowcharts to create
71
+ - DFS, Heap sort, etc.
72
+ - Graph Theory Algorithms → Dijkstra, Kruskal, etc.
73
+
74
+ ### Axiom-theorem graphs to create (placeholders removed)
75
+ - Field Theory, Ring Theory
76
+ - Derivative, Integral, Limit Calculation
77
+ - Modular Arithmetic, Diophantine Equations
78
+ - Topology, Differential Geometry, Euclidean Geometry
79
+ - Logic & Set Theory (or point to Propositional Logic)
80
+ - Statistical Analysis (probability axioms → theorems)
81
+
82
+ ### Removed (generic placeholders deleted ✓)
83
+ - Field Theory, Ring Theory, Derivative Calculation, Statistical Analysis, Logic & Set Theory
84
+ - Differential Geometry, Euclidean Geometry, Topology, Diophantine Equations
85
+ - Integral Calculation, Limit Calculation, Modular Arithmetic, Cryptographic Algorithms, Graph Theory Algorithms
86
+ - Run `delete-generic-charts-from-gcs.sh` to remove from GCS; then `upload-mathematics-database-to-gcs.sh` for updated metadata
87
+
88
+ ### Duplicates (resolved ✓)
89
+ - statistics_probability-aristotles-syllogism → removed (canonical: discrete_mathematics-aristotle-syllogistic)
90
+ - statistics_probability-euclids-geometry → removed (canonical: geometry_topology-euclid-elements-*)
GLMP_Foundation.html DELETED
The diff for this file is too large to render. See raw diff
 
Genome Logic Modeling Project (GLMP) - a Hugging Face Space by garywelz.pdf DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:44c6ef5adeced82d3bcac86db91b5c7ee1160bcda39cce172b03ae7135b591ec
3
- size 200940
 
 
 
 
MATHEMATICAL_DEPENDENCY_GRAPHS_DESIGN.md ADDED
@@ -0,0 +1,321 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mathematical Dependency Graphs — Design Document
2
+
3
+ ## Overview
4
+
5
+ A hybrid architecture for representing and visualizing axiomatic dependency structures across multiple mathematical subjects. Supports both static Mermaid subgraphs and interactive full-graph exploration.
6
+
7
+ ---
8
+
9
+ ## Scope: Target Subjects
10
+
11
+ | Subject | Foundations | Derived Items | Notes |
12
+ |---------|-------------|---------------|-------|
13
+ | **Euclid's Elements** | Postulates, Common Notions, Definitions | 464 Propositions (13 books) | Geometric constructions |
14
+ | **Peano Arithmetic** | 5 axioms, definitions | Theorems | Successor, induction |
15
+ | **Other number systems** | Axioms (integers, rationals, reals) | Theorems | Construction sequences |
16
+ | **Number theory** | Definitions, lemmas | Theorems | Divisibility, primes |
17
+ | **Algebra** | Group/ring/field axioms | Theorems | Abstract structures |
18
+ | **Contemporary geometry** | Modern axiom systems | Theorems | Metric, affine |
19
+ | **Hilbert's geometry** | 5 groups of axioms (incidence, order, congruence, etc.) | Theorems | *Grundlagen der Geometrie* |
20
+ | **Tarski's geometry** | Betweenness, congruence relations | Theorems | First-order, decidable |
21
+ | **Analysis** | Completeness, continuity axioms | Theorems | Real analysis, limits |
22
+
23
+ ---
24
+
25
+ ## Core JSON Schema
26
+
27
+ ### Discourse (per subject)
28
+
29
+ ```json
30
+ {
31
+ "schemaVersion": "1.0",
32
+ "discourse": {
33
+ "id": "euclid-elements",
34
+ "name": "Euclid's Elements",
35
+ "subject": "geometry",
36
+ "variant": "classical",
37
+ "description": "The thirteen books of Euclidean geometry",
38
+ "structure": {
39
+ "books": 13,
40
+ "chapters": "varies",
41
+ "foundationTypes": ["postulate", "commonNotion", "definition"]
42
+ }
43
+ },
44
+ "metadata": {
45
+ "created": "2026-03-15",
46
+ "lastUpdated": "2026-03-15",
47
+ "version": "1.0.0",
48
+ "license": "CC BY 4.0",
49
+ "authors": ["Welz, G."],
50
+ "methodology": "Programming Framework",
51
+ "citation": "Welz, G. (2026). Euclid's Elements Dependency Graph. Programming Framework."
52
+ },
53
+ "sources": [
54
+ {
55
+ "id": "euclid-heath",
56
+ "type": "primary",
57
+ "authors": "Heath, T.L.",
58
+ "title": "The Thirteen Books of Euclid's Elements",
59
+ "year": "1908",
60
+ "edition": "2nd",
61
+ "publisher": "Cambridge University Press",
62
+ "url": "https://archive.org/details/euclidheath00heatiala",
63
+ "notes": "Standard English translation with commentary"
64
+ },
65
+ {
66
+ "id": "perseus",
67
+ "type": "digital",
68
+ "title": "Euclid, Elements",
69
+ "url": "http://www.perseus.tufts.edu/hopper/text?doc=Perseus:text:1999.01.0086",
70
+ "notes": "Perseus Digital Library, Greek text with English"
71
+ }
72
+ ],
73
+ "nodes": [
74
+ {
75
+ "id": "P1",
76
+ "type": "postulate",
77
+ "label": "Draw a straight line between two points",
78
+ "shortLabel": "Post. 1",
79
+ "book": 1,
80
+ "number": 1,
81
+ "colorClass": "postulate",
82
+ "sourceRef": "euclid-heath, Book I, Postulate 1",
83
+ "notes": "Also: Postulate 1 in most editions"
84
+ },
85
+ {
86
+ "id": "Prop1",
87
+ "type": "proposition",
88
+ "label": "Construct an equilateral triangle on a given line",
89
+ "shortLabel": "Prop. I.1",
90
+ "book": 1,
91
+ "number": 1,
92
+ "colorClass": "proposition",
93
+ "sourceRef": "euclid-heath, Book I, Proposition 1",
94
+ "notes": "First proposition; depends only on P1, P3"
95
+ }
96
+ ],
97
+ "edges": [
98
+ {"from": "P1", "to": "Prop1"},
99
+ {"from": "P3", "to": "Prop1"}
100
+ ],
101
+ "colorScheme": {
102
+ "postulate": {"fill": "#e74c3c", "stroke": "#c0392b"},
103
+ "commonNotion": {"fill": "#9b59b6", "stroke": "#8e44ad"},
104
+ "proposition": {"fill": "#1abc9c", "stroke": "#16a085"},
105
+ "definition": {"fill": "#3498db", "stroke": "#2980b9"},
106
+ "theorem": {"fill": "#1abc9c", "stroke": "#16a085"}
107
+ }
108
+ }
109
+ ```
110
+
111
+ ### Node Types (extensible)
112
+
113
+ | Type | Use Case |
114
+ |------|----------|
115
+ | `axiom` | Peano, Hilbert, Tarski |
116
+ | `postulate` | Euclid |
117
+ | `commonNotion` | Euclid |
118
+ | `definition` | All subjects |
119
+ | `proposition` | Euclid |
120
+ | `theorem` | Most subjects |
121
+ | `lemma` | Supporting results |
122
+ | `corollary` | Direct consequences |
123
+
124
+ ### Cross-Discourse Links (future)
125
+
126
+ ```json
127
+ {
128
+ "from": "Prop_I_47",
129
+ "to": "peano-theorem-42",
130
+ "discourseFrom": "euclid-elements",
131
+ "discourseTo": "peano-arithmetic",
132
+ "relation": "constructive_correspondence"
133
+ }
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Hybrid Architecture
139
+
140
+ ### 1. Canonical JSON (Source of Truth)
141
+
142
+ - One JSON file per discourse: `euclid-elements.json`, `peano-arithmetic.json`, etc.
143
+ - Stored in GCS or repo
144
+ - Human-editable, version-controlled
145
+ - Can be validated against schema
146
+
147
+ ### 2. Mermaid Subgraph Generator
148
+
149
+ - **Input:** JSON + filter (e.g., `book=1`, `props=1-15`)
150
+ - **Output:** Mermaid `graph TD` string
151
+ - **Use:** Static HTML pages, PDF export, small-scope viewing
152
+ - **Limit:** ~50–80 nodes per diagram for readability
153
+
154
+ **Filter options:**
155
+ - `book`, `chapter`, `numberRange`
156
+ - `depth`: dependencies only, dependents only, or both
157
+ - `focus`: node ID + N-hop neighborhood
158
+
159
+ ### 3. Interactive Viewer
160
+
161
+ - **Input:** Full JSON (or lazy-loaded by book)
162
+ - **Tech:** Cytoscape.js, vis.js, or Sigma.js
163
+ - **Features:**
164
+ - Zoom, pan, minimap
165
+ - Search by ID or label
166
+ - Click node → highlight upstream/downstream
167
+ - Filter by type, book, chapter
168
+ - Cluster by book/chapter
169
+ - Export subgraph as Mermaid
170
+ - **Deployment:** Single HTML + JS, fetches JSON from GCS
171
+
172
+ ### 4. Index / Registry
173
+
174
+ ```json
175
+ {
176
+ "schemaVersion": "1.0",
177
+ "lastUpdated": "2026-03-15",
178
+ "discourses": [
179
+ {
180
+ "id": "euclid-elements",
181
+ "name": "Euclid's Elements",
182
+ "url": "https://.../euclid-elements.json",
183
+ "nodeCount": 480,
184
+ "edgeCount": 1200,
185
+ "subjects": ["geometry"],
186
+ "keywords": ["Euclid", "Elements", "plane geometry", "constructions"],
187
+ "sources": [
188
+ {"id": "euclid-heath", "authors": "Heath, T.L.", "title": "The Thirteen Books of Euclid's Elements", "year": "1908"}
189
+ ],
190
+ "metadata": {"version": "1.0.0", "lastUpdated": "2026-03-15"}
191
+ },
192
+ {
193
+ "id": "peano-arithmetic",
194
+ "name": "Peano Arithmetic",
195
+ "url": "https://.../peano-arithmetic.json",
196
+ "nodeCount": 85,
197
+ "edgeCount": 120,
198
+ "subjects": ["arithmetic", "foundations"],
199
+ "keywords": ["Peano", "axioms", "induction", "successor"],
200
+ "sources": [
201
+ {"id": "peano-1889", "authors": "Peano, G.", "title": "Arithmetices principia", "year": "1889"}
202
+ ],
203
+ "metadata": {"version": "1.0.0", "lastUpdated": "2026-03-15"}
204
+ }
205
+ ]
206
+ }
207
+ ```
208
+
209
+ ---
210
+
211
+ ## File Structure (Proposed)
212
+
213
+ ```
214
+ mathematics-dependency-graphs/
215
+ ├── schema/
216
+ │ └── discourse-schema.json # JSON Schema for validation
217
+ ├── data/
218
+ │ ├── index.json # Registry of all discourses
219
+ │ ├── euclid-elements.json
220
+ │ ├── peano-arithmetic.json
221
+ │ ├── hilbert-geometry.json
222
+ │ └── tarski-geometry.json
223
+ ├── generator/
224
+ │ └── mermaid-from-json.js # Subgraph → Mermaid
225
+ ├── viewer/
226
+ │ ├── interactive-viewer.html # Full interactive graph
227
+ │ └── viewer.js
228
+ └── static/ # Pre-generated Mermaid pages
229
+ ├── euclid/
230
+ │ ├── book1-props-1-15.html
231
+ │ ├── book1-props-16-30.html
232
+ │ └── ...
233
+ └── peano/
234
+ └── ...
235
+ ```
236
+
237
+ ---
238
+
239
+ ## Integration with Existing Systems
240
+
241
+ - **Mathematics Processes Database (GCS):** Static Mermaid pages can live in `processes/geometry_topology/` or a new `dependency-graphs/` folder
242
+ - **Programming Framework:** Same 5/6-color scheme; extend with subject-specific palettes (e.g., Tarski uses relation types)
243
+ - **GLMP-style collections:** Each discourse is a "collection"; index.json is the catalog
244
+
245
+ ---
246
+
247
+ ## Implementation Phases
248
+
249
+ | Phase | Deliverable |
250
+ |-------|-------------|
251
+ | **1** | Schema + Euclid Props 1–6 JSON; Mermaid generator script |
252
+ | **2** | Euclid Book I full JSON; static pages for Books I–IV |
253
+ | **3** | Interactive viewer (single discourse) |
254
+ | **4** | Peano Arithmetic, Hilbert Geometry JSON |
255
+ | **5** | Multi-discourse index; cross-discourse navigation |
256
+ | **6** | Tarski, Analysis, other subjects |
257
+
258
+ ---
259
+
260
+ ## Color Scheme Consistency
261
+
262
+ Use GLMP 6-color for *process* flowcharts (algorithms). For *dependency* graphs, allow subject-specific schemes:
263
+
264
+ - **Euclid:** Postulates (red), Common Notions (purple), Propositions (teal)
265
+ - **Peano:** Axioms (red), Definitions (yellow), Theorems (teal)
266
+ - **Hilbert:** Axiom groups (distinct colors), Theorems (teal)
267
+ - **Tarski:** Primitive relations (red), Defined relations (blue), Theorems (teal)
268
+
269
+ Schema supports `colorScheme` per discourse.
270
+
271
+ ---
272
+
273
+ ## Metadata & Sources
274
+
275
+ ### Discourse-Level Metadata
276
+
277
+ | Field | Purpose |
278
+ |-------|---------|
279
+ | `metadata.created` | ISO date of initial creation |
280
+ | `metadata.lastUpdated` | ISO date of last edit |
281
+ | `metadata.version` | Semantic version (e.g., 1.0.0) |
282
+ | `metadata.license` | License (e.g., CC BY 4.0) |
283
+ | `metadata.authors` | Contributors to the dependency graph |
284
+ | `metadata.methodology` | e.g., Programming Framework |
285
+ | `metadata.citation` | How to cite this graph |
286
+
287
+ ### Discourse-Level Sources
288
+
289
+ | Field | Purpose |
290
+ |-------|---------|
291
+ | `sources[].id` | Reference ID for node-level `sourceRef` |
292
+ | `sources[].type` | `primary`, `secondary`, `digital`, `commentary` |
293
+ | `sources[].authors` | Author(s) |
294
+ | `sources[].title` | Title of work |
295
+ | `sources[].year` | Publication year |
296
+ | `sources[].url` | Link to digital copy |
297
+ | `sources[].doi` | DOI if available |
298
+ | `sources[].notes` | Clarifications |
299
+
300
+ ### Node-Level Metadata
301
+
302
+ | Field | Purpose |
303
+ |-------|---------|
304
+ | `sourceRef` | Reference to `sources[].id` + location (e.g., "euclid-heath, Book I, Prop 1") |
305
+ | `notes` | Editorial notes, variants, clarifications |
306
+ | `keywords` | Tags for search/filter |
307
+ | `relatedNodes` | IDs of conceptually related nodes (same discourse or cross-discourse) |
308
+
309
+ ### Index / Registry Metadata
310
+
311
+ The index should include per-discourse: `sources`, `metadata`, `lastUpdated`, `nodeCount`, `edgeCount`, `subjects`, `keywords`.
312
+
313
+ ---
314
+
315
+ ## References
316
+
317
+ - Euclid's Elements: [Perseus Digital Library](http://www.perseus.tufts.edu/hopper/text?doc=Perseus:text:1999.01.0086)
318
+ - Heath, T.L. *The Thirteen Books of Euclid's Elements* (1908, 2nd ed.)
319
+ - Hilbert: *Grundlagen der Geometrie* (1899)
320
+ - Tarski: *What is Elementary Geometry?* (1959)
321
+ - Peano: *Arithmetices principia* (1889)
MATHEMATICS_DATABASE_EXPANSION_PLAN.md ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mathematics Database Expansion Plan
2
+
3
+ ## Overview
4
+
5
+ Expand the mathematics-database-table and processes to include:
6
+ - **Topic sections**: Complex analysis, complex analytic dynamics, landmark theorems (FLT, Poincaré, Riemann)
7
+ - **Named mathematicians**: Historical and modern figures with associated charts
8
+ - **Formal verification**: Lean proofs and proof assistants
9
+ - **AI mathematics**: Recent AI-assisted results
10
+ - **Overlapping collections**: Processes appear in multiple named sets (topic + mathematician + historical)
11
+
12
+ ---
13
+
14
+ ## 1. Metadata Schema Extension
15
+
16
+ ### Add `namedCollections` Array to Each Process
17
+
18
+ ```json
19
+ {
20
+ "id": "number_theory-fermat-last-theorem",
21
+ "name": "Fermat's Last Theorem",
22
+ "subcategory": "number_theory",
23
+ "namedCollections": ["fermat", "landmark_theorems", "wiles", "number_theory_milestones"]
24
+ }
25
+ ```
26
+
27
+ **Rationale**: A process can belong to many collections. Examples:
28
+ - *Euclid's Elements* → `["euclid", "geometry_topology", "classical_geometry", "axiomatic_systems"]`
29
+ - *Galois Theory* → `["galois", "abstract_algebra", "field_theory", "landmark_theorems"]`
30
+ - *Sieve of Eratosthenes* → `["eratosthenes", "number_theory", "algorithms", "classical_algorithms"]`
31
+
32
+ ### Optional: Add `collections` Index in metadata.json
33
+
34
+ ```json
35
+ {
36
+ "collections": {
37
+ "archimedes": { "name": "Archimedes", "description": "…", "processIds": ["…"] },
38
+ "fermat": { "name": "Pierre de Fermat", "description": "…", "processIds": ["…"] }
39
+ }
40
+ }
41
+ ```
42
+
43
+ Either derive from processes (scan `namedCollections`) or maintain explicitly.
44
+
45
+ ---
46
+
47
+ ## 2. New Subcategories
48
+
49
+ | Subcategory ID | Display Name | Notes |
50
+ |-----------------------|------------------------|--------------------------------------------|
51
+ | `complex_analysis` | Complex Analysis | New; analytic functions, residues, etc. |
52
+ | `landmark_theorems` | Landmark Theorems | FLT, Poincaré, Riemann, etc. |
53
+ | `formal_verification` | Formal Verification | Lean, Coq, Isabelle proofs |
54
+ | `ai_mathematics` | AI Mathematics | AlphaProof, AlphaGeometry, etc. |
55
+
56
+ **Existing** (keep): `number_theory`, `geometry_topology`, `discrete_mathematics`, `linear_algebra`, `calculus_analysis`, `abstract_algebra`, `category_theory`, `foundations`, `bioinformatics`.
57
+
58
+ ---
59
+
60
+ ## 3. Topic Sections (New Charts)
61
+
62
+ ### 3.1 Complex Analysis
63
+ - **Complex Analysis — Analytic Functions & Cauchy-Riemann**
64
+ - **Complex Analysis — Cauchy Integral Theorem & Residues**
65
+ - **Complex Analysis — Conformal Mappings & Riemann Surfaces**
66
+ - **Complex Analysis — Entire Functions & Picard Theorems**
67
+
68
+ *Collections*: `complex_analysis`, `calculus_analysis` (overlap)
69
+
70
+ ### 3.2 Complex Analytic Dynamics (extend existing)
71
+ - Already have: Julia/Fatou, Sullivan, Hubbard-Douady, Devaney, etc.
72
+ - Add: **Complex Dynamics — Holomorphic Dynamics Overview** (hub/overview)
73
+ - Add: **Complex Dynamics — Parabolic Fixed Points & Écalle-Voronin**
74
+
75
+ *Collections*: `complex_dynamics`, `calculus_analysis`, `sullivan`, `hubbard_douady`, `devaney`
76
+
77
+ ### 3.3 Landmark Theorems
78
+ | Chart | Subcategory | Named Collections |
79
+ |------------------------------|--------------------|-------------------------------------|
80
+ | Fermat's Last Theorem | `landmark_theorems`| `fermat`, `wiles`, `number_theory` |
81
+ | Poincaré Conjecture | `landmark_theorems`| `poincare`, `perelman`, `topology` |
82
+ | Riemann Hypothesis | `landmark_theorems`| `riemann`, `number_theory`, `analysis` |
83
+ | Four Color Theorem | `landmark_theorems`| `appel_haken`, `graph_theory` |
84
+ | Gödel Incompleteness | (existing) | `godel`, `foundations` |
85
+
86
+ ---
87
+
88
+ ## 4. Named Mathematicians — Charts to Create
89
+
90
+ ### 4.1 Classical (Ancient & Early Modern)
91
+ | Mathematician | Charts to Create | Overlaps With |
92
+ |----------------|--------------------------------------------------------|----------------------------|
93
+ | **Archimedes** | Archimedes' Principle, Method of Exhaustion, Pi bounds | `geometry_topology`, `calculus` |
94
+ | **Eratosthenes** | Sieve (existing), Earth circumference, Prime counting | `number_theory`, `algorithms` |
95
+ | **Pythagoras** | Pythagorean Theorem, Pythagorean triples, Irrationals | `geometry_topology`, `number_theory` |
96
+ | **Euclid** | Elements (existing), Euclidean algorithm | `geometry_topology` |
97
+
98
+ ### 4.2 Early Modern
99
+ | Mathematician | Charts to Create | Overlaps With |
100
+ |---------------|--------------------------------------------------------|----------------------|
101
+ | **Fermat** | Fermat's Last Theorem, Fermat's Little Theorem, Fermat primes | `number_theory`, `landmark_theorems` |
102
+ | **Euler** | Euler's formula (e^(iπ)+1=0), Euler characteristic, Seven Bridges | `calculus_analysis`, `graph_theory`, `topology` |
103
+ | **Gauss** | Fundamental Theorem of Algebra, Gaussian integers, Least squares | `number_theory`, `linear_algebra`, `calculus` |
104
+
105
+ ### 4.3 19th–20th Century
106
+ | Mathematician | Charts to Create | Overlaps With |
107
+ |-------------------|--------------------------------------------------------|----------------------|
108
+ | **Galois** | Galois Theory (existing), Solvability by radicals | `abstract_algebra`, `field_theory` |
109
+ | **Cayley** | Cayley's theorem (groups), Cayley-Hamilton theorem | `abstract_algebra`, `linear_algebra` |
110
+ | **Hamilton** | Quaternions, Hamiltonian mechanics, Cayley-Hamilton | `linear_algebra`, `physics` |
111
+ | **Noether** | Noether's theorems, Noetherian rings, Abstract algebra | `abstract_algebra`, `physics` |
112
+ | **Hilbert** | Hilbert's problems, Hilbert space, Basis theorem | `foundations`, `linear_algebra`, `analysis` |
113
+ | **Riemann** | Riemann Hypothesis, Riemann surfaces, Riemann integral | `number_theory`, `calculus_analysis`, `complex_analysis` |
114
+
115
+ ### 4.4 Modern (20th–21st Century)
116
+ | Mathematician | Charts to Create | Overlaps With |
117
+ |--------------|--------------------------------------------------------|----------------------|
118
+ | **Thurston** | Geometrization conjecture, Hyperbolic 3-manifolds | `geometry_topology`, `poincare` |
119
+ | **Milnor** | Exotic spheres, Milnor's theorem, Morse theory | `geometry_topology`, `differential_topology` |
120
+ | **Faltings** | Mordell conjecture, Faltings' theorem (FLT for n>4) | `number_theory`, `fermat`, `algebraic_geometry` |
121
+ | **Atiyah** | Atiyah-Singer index theorem, K-theory | `geometry_topology`, `analysis` |
122
+ | **Perelman** | Ricci flow, Poincaré proof | `landmark_theorems`, `poincare` |
123
+ | **Wiles** | Modularity theorem, FLT proof | `landmark_theorems`, `fermat` |
124
+
125
+ ### 4.5 Additional Candidates (for later)
126
+ - **Gödel** (existing via Peano)
127
+ - **Turing** (computability, halting problem)
128
+ - **Kolmogorov** (probability, complexity)
129
+ - **Grothendieck** (schemes, topos theory)
130
+ - **Serre** (algebraic geometry, number theory)
131
+ - **Deligne** (Weil conjectures)
132
+ - **Tao** (existing: Green-Tao)
133
+ - **Szemerédi** (existing)
134
+ - **Sullivan** (existing)
135
+ - **Hubbard, Douady, Devaney** (existing)
136
+
137
+ ---
138
+
139
+ ## 5. Formal Verification (Lean Proofs)
140
+
141
+ ### 5.1 New Subcategory: `formal_verification`
142
+
143
+ | Chart | Description |
144
+ |-----------------------------------|--------------------------------------------------|
145
+ | Lean 4 — Proof Assistant Overview | What Lean is, tactic language, type theory |
146
+ | Mathlib — Library Structure | Mathlib dependency graph, key namespaces |
147
+ | Fermat's Last Theorem in Lean | FLT statement and proof status in Lean |
148
+ | Kepler Conjecture (Flyspeck) | Hales' proof, formalization in HOL Light |
149
+ | Four Color Theorem in Coq | Gonthier's formalization |
150
+ | Odd Order Theorem (Feit-Thompson)| Gonthier et al. formalization |
151
+
152
+ *Collections*: `lean`, `formal_verification`, `landmark_theorems` (where applicable)
153
+
154
+ ---
155
+
156
+ ## 6. AI Mathematics
157
+
158
+ ### 6.1 New Subcategory: `ai_mathematics`
159
+
160
+ | Chart | Description |
161
+ |----------------------------------------|--------------------------------------------------|
162
+ | AlphaProof (DeepMind 2024) | IMO results, statement proving |
163
+ | AlphaGeometry (DeepMind 2024) | Synthetic geometry, IMO-style problems |
164
+ | AI-Assisted Proof Discovery | Overview: GPT, Lean, collaboration |
165
+ | Ramanujan Machine / Conjecture Generation | Automated conjecture generation |
166
+ | Formalization Gaps (AI + Human) | What remains to be formalized |
167
+
168
+ *Collections*: `ai_mathematics`, `formal_verification` (overlap)
169
+
170
+ ---
171
+
172
+ ## 7. Table Structure — Section Headers & Breaks
173
+
174
+ ### 7.1 Proposed Table Sections (with breaks)
175
+
176
+ 1. **Algorithms — Flowcharts** (existing)
177
+ 2. **Axiomatic Theories — Dependency Graphs** (existing)
178
+ 3. **Landmark Theorems** (new section)
179
+ 4. **Complex Analysis & Dynamics** (new or merged into Calculus & Analysis)
180
+ 5. **Formal Verification (Lean, Coq, etc.)** (new)
181
+ 6. **AI Mathematics** (new)
182
+
183
+ ### 7.2 Named Collections Panel (expand)
184
+
185
+ Current: Euclid, Tao, Peano, Gödel, Sullivan, Hubbard & Douady, Devaney, Smale, Bioinformatics
186
+
187
+ **Add**:
188
+ - Archimedes, Eratosthenes, Pythagoras
189
+ - Fermat, Euler, Gauss
190
+ - Galois, Cayley, Hamilton, Noether, Hilbert
191
+ - Riemann, Thurston, Milnor, Faltings, Atiyah
192
+ - Wiles, Perelman
193
+ - Lean / Formal Verification
194
+ - AI Mathematics
195
+
196
+ **Implementation**: Either (a) one link per collection → landing page listing all processes in that collection, or (b) first/representative process. Prefer (a) for multi-process collections.
197
+
198
+ ---
199
+
200
+ ## 8. Overlap Handling
201
+
202
+ ### 8.1 Process in Multiple Collections
203
+
204
+ Example: **Fermat's Last Theorem**
205
+ - `subcategory`: `landmark_theorems`
206
+ - `namedCollections`: `["fermat", "wiles", "number_theory", "landmark_theorems"]`
207
+
208
+ Appears in:
209
+ - Landmark Theorems table section
210
+ - Fermat collection page
211
+ - Wiles collection page
212
+ - Number Theory subcategory filter
213
+
214
+ ### 8.2 Collection Landing Pages
215
+
216
+ Create `processes/collections/` (or similar):
217
+ - `collections/fermat.html` — lists all processes with `namedCollections` containing `fermat`
218
+ - `collections/euler.html`
219
+ - `collections/landmark_theorems.html`
220
+ - etc.
221
+
222
+ These can be generated from metadata or static HTML with links derived from metadata.
223
+
224
+ ### 8.3 Table Filtering (Optional)
225
+
226
+ Add filter dropdown: "Show by collection: All | Fermat | Euler | Landmark Theorems | …"
227
+
228
+ ---
229
+
230
+ ## 9. Implementation Phases
231
+
232
+ ### Phase 1: Schema & Infrastructure
233
+ - Add `namedCollections` to metadata schema
234
+ - Add new subcategories to metadata
235
+ - Create collection landing page template
236
+ - Update table to support new sections and breaks
237
+
238
+ ### Phase 2: Landmark Theorems
239
+ - Fermat's Last Theorem
240
+ - Poincaré Conjecture
241
+ - Riemann Hypothesis
242
+ - (Optional) Four Color, Gödel as landmark)
243
+
244
+ ### Phase 3: Complex Analysis
245
+ - 3–4 complex analysis charts
246
+ - Ensure overlap with existing complex dynamics
247
+
248
+ ### Phase 4: Named Mathematicians (Batch 1)
249
+ - Archimedes, Eratosthenes, Pythagoras
250
+ - Fermat, Euler, Gauss
251
+ - Tag existing processes (Euclid, Sieve, etc.) with `namedCollections`
252
+
253
+ ### Phase 5: Named Mathematicians (Batch 2)
254
+ - Galois, Cayley, Hamilton, Noether, Hilbert
255
+ - Riemann, Thurston, Milnor, Faltings, Atiyah
256
+ - Wiles, Perelman
257
+
258
+ ### Phase 6: Formal Verification
259
+ - Lean overview
260
+ - 2–3 key formalized results (FLT, Four Color, etc.)
261
+
262
+ ### Phase 7: AI Mathematics
263
+ - AlphaProof, AlphaGeometry
264
+ - AI-assisted proof overview
265
+
266
+ ---
267
+
268
+ ## 10. File Naming Conventions
269
+
270
+ - `number_theory-fermat-last-theorem.html`
271
+ - `landmark_theorems-poincare-conjecture.html`
272
+ - `landmark_theorems-riemann-hypothesis.html`
273
+ - `complex_analysis-cauchy-integral-theorem.html`
274
+ - `formal_verification-lean-flt.html`
275
+ - `ai_mathematics-alphaproof.html`
276
+ - `collections/fermat.html` (collection index)
277
+
278
+ ---
279
+
280
+ ## 11. Summary: New Content Counts (Estimate)
281
+
282
+ | Category | New Charts (approx) |
283
+ |-----------------------|---------------------|
284
+ | Complex Analysis | 4 |
285
+ | Landmark Theorems | 3–5 |
286
+ | Named Mathematicians | 15–25 (many overlap)|
287
+ | Formal Verification | 4–6 |
288
+ | AI Mathematics | 3–5 |
289
+ | **Total new** | **~30–45** |
290
+
291
+ Many of these overlap (e.g., Fermat chart counts for Fermat, Wiles, Landmark Theorems, Number Theory). The `namedCollections` array is the key to supporting this overlap cleanly.
NEXT_PASS_CHECKLIST.md ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mathematics Database — Next Pass Checklist
2
+
3
+ A prioritized checklist for the next major revision: Cite links, Frontier sections, and uniform color scheme.
4
+
5
+ ---
6
+
7
+ ## Phase 0: Database Table Page (Intro & Start Here) — DONE ✓
8
+
9
+ - [x] Concise introduction at top (conceptual-framing)
10
+ - [x] Move search box into "Start Here" section
11
+ - [x] Remove "Named Collections" (avoids who-is-named complaints)
12
+ - [x] Start Here: search field + link to Whole of Mathematics
13
+ - [x] Describe Whole of Mathematics as "Interactive UI" in link text
14
+
15
+ ---
16
+
17
+ ## Reference: 5/6-Color Scheme (GLMP)
18
+
19
+ Use this palette across all charts for consistency:
20
+
21
+ | Role | Hex | Semantic |
22
+ |------|-----|----------|
23
+ | Red | `#ff6b6b` | Triggers, inputs, postulates |
24
+ | Yellow | `#ffd43b` | Structures, objects |
25
+ | Green | `#51cf66` | Processing, operations, propositions |
26
+ | Light blue | `#74c0fc` | Intermediates, states |
27
+ | Violet | `#b197fc` | Products, outputs |
28
+ | Lavender | `#e6e6fa` | Decision diamonds (algorithms only) |
29
+
30
+ **Axiomatic/dependency chart mapping:**
31
+ | Node type | Hex | Role |
32
+ |--------------|------------|--------------------------|
33
+ | Axiom | `#ff6b6b` | Red — inputs, postulates |
34
+ | Postulate | `#ff6b6b` | Red — same as axiom |
35
+ | CommonNotion | `#ffd43b` | Yellow — structures |
36
+ | Definition | `#b197fc` | Violet — products |
37
+ | Lemma | `#74c0fc` | Light blue — intermediates|
38
+ | Theorem | `#51cf66` | Green — propositions |
39
+ | Corollary | `#1abc9c` | Teal |
40
+ | Proposition | `#51cf66` | Green — same as theorem |
41
+ | Reference | `#bdc3c7` | Gray |
42
+
43
+ ---
44
+
45
+ ## Phase 1: Cite Links
46
+
47
+ Add attribution (Cite badge + popover) to charts with identifiable primary sources.
48
+
49
+ ### Already have Cite (7)
50
+ - [x] Gödel First Incompleteness
51
+ - [x] Schemes & Sheaves (Grothendieck)
52
+ - [x] Group Representations
53
+ - [x] Riemannian Geometry
54
+ - [x] ZFC Axioms
55
+ - [x] Shannon Entropy
56
+ - [x] C*-Algebras
57
+
58
+ ### High priority (add Cite)
59
+ - [ ] Euclid's Elements charts
60
+ - [ ] Peano Arithmetic (Landau, Kirby–Paris)
61
+ - [ ] Szemerédi Theorem
62
+ - [ ] Green–Tao Theorem
63
+ - [ ] Galois Theory (Field Theory charts)
64
+ - [ ] Cauchy / Complex Analysis charts
65
+ - [ ] Sullivan collection charts
66
+ - [ ] Hubbard–Douady collection
67
+ - [ ] Devaney collection
68
+ - [ ] Kolmogorov axioms, Bayes, CLT (Statistics)
69
+ - [ ] NIST DADS algorithms (Binary Search, etc.)
70
+
71
+ ### Medium priority
72
+ - [ ] PDE charts (Laplace, Heat, Wave)
73
+ - [ ] Functional analysis (Banach, Hilbert)
74
+ - [ ] Spectral theory charts
75
+ - [ ] Representation theory (remaining)
76
+ - [ ] Commutative algebra charts
77
+
78
+ ### Schema
79
+ See `ATTRIBUTION_SCHEMA.md`. Fields: `primary`, `contributors`, `publication`, `year`, `doi`, `url`.
80
+
81
+ ---
82
+
83
+ ## Phase 2: Frontier of Research Links
84
+
85
+ Add or expand "Recent & Frontier" sections on index pages. Each section: proved results, open conjectures, links to charts, links to arXiv/external.
86
+
87
+ ### Already have Recent & Frontier (3)
88
+ - [x] Number Theory
89
+ - [x] Algebraic Geometry
90
+ - [x] Representation Theory
91
+
92
+ ### Add Frontier section
93
+ - [x] Differential Geometry
94
+ - [x] Complex Analysis
95
+ - [x] Statistics & Probability
96
+ - [x] Partial Differential Equations
97
+ - [x] Foundations (set theory, logic)
98
+ - [x] Calculus / Real Analysis
99
+ - [x] Functional Analysis
100
+ - [x] Topology (geometry_topology index)
101
+ - [x] Operator Algebras
102
+ - [x] K-Theory
103
+
104
+ ### Template
105
+ Use the pattern from `algebraic_geometry.html`: `.frontier-item.proved` (green border), `.frontier-item.conjecture` (orange border), with `.name`, `.meta`, and chart/external links.
106
+
107
+ ---
108
+
109
+ ## Phase 3: Uniform Color Scheme
110
+
111
+ Apply the 5/6-color palette to all charts. Replace per-subcategory accent colors with the standard palette.
112
+
113
+ ### Algorithm flowcharts (already mostly correct)
114
+ - [x] Sieve, Extended Euclidean, Dijkstra, Prim, Kruskal, BFS
115
+ - [x] Binary Search, RSA, AES, Merge Sort, Quicksort, BST
116
+ - [x] Bisection, Simpson's Rule
117
+ - [x] Bioinformatics (BLAST, sequence alignment)
118
+ - [x] Verify any outliers use standard colors
119
+
120
+ ### Axiomatic / dependency charts
121
+ - [x] Gödel / Peano charts — map Def/Lem/Thm/Cor to palette
122
+ - [x] Euclid's Elements — align postulate/common notion/proposition colors
123
+ - [x] ZFC / Foundations
124
+ - [x] Abstract algebra, algebraic geometry, representation theory, differential geometry, spectral theory, symplectic, metric geometry
125
+
126
+ ### P3 charts (operator algebras, K-theory, quantum algebra, optimization, information theory, mathematical physics)
127
+ - [x] Replace subcategory-specific header/node colors with 5-color palette
128
+ - [x] Header: database orange #e67e22
129
+ - [x] Mermaid nodes: Def → Violet, Thm → Green
130
+
131
+ ### Header / nav consistency
132
+ - [x] Standardize header to database orange #e67e22
133
+ - [x] Nav link colors: #e67e22
134
+
135
+ ---
136
+
137
+ ## Phase 4: Optional Enhancements (if time)
138
+
139
+ ### Content
140
+ - [x] Landmark theorem charts: FLT, Riemann Hypothesis (high-level)
141
+ - [x] Modular arithmetic: CRT (Chinese Remainder Theorem)
142
+ - [ ] Primality tests (future)
143
+ - [ ] `namedCollections` metadata for cross-linking (Euclid, Gödel, Galois, etc.)
144
+
145
+ ### Infrastructure
146
+ - [x] Formal verification links (Lean, Coq)
147
+ - [x] AI mathematics (AlphaProof, AlphaGeometry)
148
+ - [x] math.HO (History & Overview) — added to Number Theory, Foundations
149
+
150
+ ---
151
+
152
+ ## Execution Order
153
+
154
+ 1. **Phase 3 (Color)** — Do first; it's a bulk replace across many files. Establishes visual consistency before adding content.
155
+ 2. **Phase 1 (Cite)** — Add attribution to charts that have clear sources. Can be done incrementally.
156
+ 3. **Phase 2 (Frontier)** — Add Recent & Frontier sections to remaining index pages. Lower effort, high value.
157
+ 4. **Phase 4** — As capacity allows.
158
+
159
+ ---
160
+
161
+ ## Files to Modify
162
+
163
+ ### Color scheme
164
+ - All `processes/**/*.html` with Mermaid `classDef` blocks
165
+ - Generator templates: `generate_p3_charts.py` (P3 charts)
166
+ - Possibly: shared CSS or build step for future automation
167
+
168
+ ### Cite
169
+ - Add attribution HTML + CSS to each chart; or extend generator/template for batch charts
170
+ - Update `ATTRIBUTION_SCHEMA.md` if schema changes
171
+
172
+ ### Frontier
173
+ - Index pages: `processes/<subcategory>/<subcategory>.html` (e.g. `processes/differential_geometry/differential_geometry.html`)
174
+
175
+ ---
176
+
177
+ ## Completion Criteria
178
+
179
+ - [ ] All charts with identifiable sources have Cite badge
180
+ - [ ] All major index pages have Recent & Frontier section
181
+ - [ ] All charts use the 5/6-color palette (no stray per-chart accent colors in node fills)
182
+ - [ ] Header/nav colors are consistent (or explicitly documented as domain accents)
NEXT_STEPS_PLAN.md ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mathematics Database — Next Steps Plan
2
+
3
+ Three initiatives: **Search** (near-term), **Comprehensive Collection** (mid-term), and **Research Frontier** (long-term).
4
+
5
+ ---
6
+
7
+ ## 1. Search the Collection
8
+
9
+ **Goal**: Place a search bar near the top of the table page. Users can search by theorem name, mathematician name, subcategory, or keyword and get links to individual charts or collection pages.
10
+
11
+ ### 1.1 Search UI Placement
12
+ - Add a search box immediately after the header (before or alongside "Start Here")
13
+ - Design: Single input, optional filters (All / Algorithms / Axiomatic / Collection)
14
+ - Live/filter-as-you-type or "Search" button — both viable
15
+
16
+ ### 1.2 Search Data Source
17
+ - **Client-side**: Load `metadata.json` (already fetched for the table); search in memory
18
+ - **Indexable fields** (extend metadata if needed):
19
+ - `name` (process title) — e.g. "Fermat's Last Theorem", "Sieve of Eratosthenes"
20
+ - `subcategory` / `subcategory_name` — e.g. "Number Theory", "Calculus & Analysis"
21
+ - `namedCollections` (when added) — e.g. "euclid", "fermat", "sullivan"
22
+ - Optional: add `keywords` or `searchTerms` array for aliases ("FLT", "Poincaré", "ZFC")
23
+
24
+ ### 1.3 Search Algorithm
25
+ - **Simple**: Case-insensitive substring match on `name`, `subcategory_name`
26
+ - **Better**: Tokenize query, match against name + subcategory + collections
27
+ - **Fuzzy** (optional): Use a small library (e.g. Fuse.js) for typo tolerance
28
+
29
+ ### 1.4 Results Display
30
+ - **Single process match** → link directly to process page
31
+ - **Collection match** (e.g. "Euclid") → link to collection landing page (or list of processes in that collection)
32
+ - **Multiple matches** → show dropdown or results panel with:
33
+ - Process name + subcategory
34
+ - Link to process page
35
+ - "Part of: Euclid, Geometry & Topology" (when namedCollections exists)
36
+
37
+ ### 1.5 Metadata Enhancements for Search
38
+ - Add `namedCollections` to processes (per expansion plan)
39
+ - Optional: `keywords: ["FLT", "Fermat", "Wiles"]` for common aliases
40
+ - Optional: `theorems: ["Modularity Theorem", "Fermat's Last Theorem"]` for axiomatic theories
41
+
42
+ ### 1.6 Implementation Scope
43
+ | Task | Effort |
44
+ |------|--------|
45
+ | Add search input + results dropdown | Small |
46
+ | Client-side search over `metadata.json` | Small |
47
+ | Add `namedCollections` to metadata (partial) | Medium |
48
+ | Collection landing pages for multi-result | Medium |
49
+
50
+ ---
51
+
52
+ ## 2. Plan to Fill Out the Collection (Comprehensive)
53
+
54
+ Build on [MATHEMATICS_DATABASE_EXPANSION_PLAN.md](./MATHEMATICS_DATABASE_EXPANSION_PLAN.md). Aim for a representative, well-structured set across major areas.
55
+
56
+ ### 2.1 Coverage Goals by Domain
57
+
58
+ | Domain | Current | Target | Priority Additions |
59
+ |--------|---------|--------|-------------------|
60
+ | **Algebra** | Strong | Maintain + expand | Cayley-Hamilton, Noether, Representation theory |
61
+ | **Analysis** | Good | Expand | Complex analysis (4 charts), Functional analysis basics |
62
+ | **Geometry & Topology** | Good | Expand | Milnor exotic spheres, Thurston geometrization |
63
+ | **Number Theory** | Good | Expand | Landmark theorems (FLT, Riemann), Fermat's Little Theorem |
64
+ | **Discrete & Logic** | Strong | Maintain | Add combinatorics algorithms (inclusion-exclusion, generating functions) |
65
+ | **Applied** | Bioinformatics only | Expand | Statistics/probability, optimization basics |
66
+
67
+ ### 2.2 Landmark Theorems (High Impact)
68
+ - Fermat's Last Theorem (Wiles, modularity)
69
+ - Poincaré Conjecture (Perelman, Ricci flow)
70
+ - Riemann Hypothesis (statement, equivalent forms)
71
+ - Four Color Theorem (Appel–Haken, formalization)
72
+ - Gödel Incompleteness (already present via Peano)
73
+
74
+ ### 2.3 Gaps to Fill
75
+ - **Complex Analysis**: Cauchy, residues, conformal maps
76
+ - **Statistics & Probability**: Kolmogorov axioms, Central Limit Theorem, Bayes
77
+ - **Numerical Methods**: More algorithms (Newton, Euler methods, quadrature)
78
+ - **Representation Theory**: Basics (groups, characters)
79
+ - **Differential Geometry**: Curves, surfaces, Riemannian basics
80
+
81
+ ### 2.4 Phased Rollout (from expansion plan, refined)
82
+
83
+ | Phase | Focus | Charts (approx) |
84
+ |-------|-------|-----------------|
85
+ | **1** | Schema + search + `namedCollections` | 0 new charts |
86
+ | **2** | Landmark theorems (FLT, Poincaré, Riemann) | 3–5 |
87
+ | **3** | Complex analysis | 4 |
88
+ | **4** | Named mathematicians (batch 1: Fermat, Euler, Gauss, Euclid tag) | 5–8 |
89
+ | **5** | Named mathematicians (batch 2: Galois, Noether, Hilbert, Riemann) | 5–8 |
90
+ | **6** | Statistics & probability | 3–5 |
91
+ | **7** | Formal verification (Lean, Four Color in Coq) | 3–4 |
92
+ | **8** | AI mathematics (AlphaProof, AlphaGeometry) | 2–3 |
93
+
94
+ ### 2.5 Definition of "Fairly Comprehensive"
95
+ - All 6 domains have ≥5 distinct charts
96
+ - Every subcategory has at least 1 chart
97
+ - Landmark theorems (FLT, Poincaré, Riemann) represented
98
+ - Major figures (Euclid, Euler, Gauss, Fermat, Gödel, Galois) have at least one chart
99
+ - ~150–200 total processes as a stretch goal
100
+
101
+ ---
102
+
103
+ ## 3. Long-Term: Research Frontier & Conjectures
104
+
105
+ **Goal**: Update axiomatic theory trees to show recent theorems, open conjectures, and the frontier of research — making the dependency graphs reflect the state of the field, not just classic textbook material.
106
+
107
+ ### 3.1 What "Frontier" Means
108
+ - **Recent theorems**: Results from the last 20–30 years (e.g. Perelman/geometrization, Taylor–Wiles modularity)
109
+ - **Conjectures**: Stated but unproven (Riemann, Birch–Swinnerton-Dyer, Hodge, P vs NP)
110
+ - **Formalization status**: What is in Mathlib/Lean, what remains to be formalized
111
+
112
+ ### 3.2 Data Sources for Frontier Content
113
+ - **arXiv**: Recent math.NT, math.GT, math.AG, etc. — identify major theorems
114
+ - **Mathlib / formalization**: Lean 4, Coq, Isabelle — which theorems are proved
115
+ - **Surveys & encyclopedias**: Wikipedia, Encyclopaedia of Mathematics, Scholarpedia
116
+ - **Clay Institute, Hilbert problems**: Lists of major open problems
117
+
118
+ ### 3.3 Schema Extensions
119
+ - **Node metadata** in dependency graphs:
120
+ - `status`: `proved` | `conjecture` | `open_problem` | `formalized`
121
+ - `year`: publication or proof year
122
+ - `prover`: e.g. "Wiles", "Perelman", "Gonthier et al."
123
+ - `formalization`: e.g. `{ "tool": "Lean", "status": "in_progress" }`
124
+ - **Process-level**:
125
+ - `frontierLevel`: `classical` | `modern` | `recent` | `conjecture`
126
+ - `openProblems`: array of conjecture names
127
+
128
+ ### 3.4 Visualization Ideas
129
+ - **Color coding**: Green (proved), yellow (recent), orange (conjecture), grey (formalized)
130
+ - **"Expand to frontier"** control: Toggle to show/hide conjectures and recent theorems
131
+ - **Year annotations**: Small labels on nodes (e.g. "1995", "2003")
132
+ - **Separate "Conjectures" section**: Page listing open problems with links to related axiom–theorem trees
133
+
134
+ ### 3.5 Implementation Phases (Long-Term)
135
+ | Phase | Focus |
136
+ |-------|-------|
137
+ | **A** | Add `status`, `year` to process metadata (manual curation) |
138
+ | **B** | Extend Mermaid/diagram format to support status annotations |
139
+ | **C** | Curate 5–10 landmark theorems with frontier metadata |
140
+ | **D** | Build "Open Problems" index page |
141
+ | **E** | Integrate formalization status (Mathlib, etc.) where available |
142
+
143
+ ### 3.6 Challenges
144
+ - **Curation effort**: Requires domain expertise to classify and annotate
145
+ - **Currency**: Frontier changes; need update process (annual review?)
146
+ - **Formalization**: Mathlib evolves; linking to specific commits or versions
147
+ - **Scope creep**: Easy to expand; need clear criteria for "frontier"
148
+
149
+ ### 3.7 Sample Implemented: Number Theory Research Frontier
150
+ - **Page**: `number-theory-research-frontier.html` — static view of proved vs conjecture
151
+ - **Metadata**: `frontierStatus`, `year`, `prover` added to Sieve, Szemerédi, Green–Tao in `metadata.json`
152
+ - **Linked** from database table "Start Here" section
153
+ - **Contents**: Classical (Sieve, Extended Euclidean, Gödel), recent (Szemerédi 1975, Green–Tao 2004, Fermat 1995, Mordell 1983), conjectures (Riemann, BSD, Goldbach, Twin Primes)
154
+
155
+ ---
156
+
157
+ ## Summary: Immediate Next Steps
158
+
159
+ 1. **Search** (1–2 days): Add search input, client-side search over metadata, results dropdown with links.
160
+ 2. **Expansion plan** (ongoing): Execute phases from MATHEMATICS_DATABASE_EXPANSION_PLAN.md; use this doc for prioritization.
161
+ 3. **Frontier** (quarterly/yearly): Start with schema additions and manual curation of a few landmark results; build out as capacity allows.
ProgFrame_README.md DELETED
@@ -1,227 +0,0 @@
1
- ---
2
- title: Genome Logic Modeling Project (GLMP)
3
- emoji: 🧬
4
- colorFrom: blue
5
- colorTo: green
6
- sdk: static
7
- sdk_version: latest
8
- app_file: README.md
9
- pinned: false
10
- ---
11
-
12
- # 🧬 Programming Framework for Complex Systems
13
-
14
- **A systematic visualization methodology for analyzing complex systems across biology, chemistry, physics, and computer science using computational flowcharts and standardized color coding.**
15
-
16
- [![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/)
17
- [![Hugging Face Spaces](https://img.shields.io/badge/Hugging%20Face-Spaces-orange)](https://huggingface.co/spaces/garywelz/programming_framework)
18
-
19
- ## 🎯 Overview
20
-
21
- The Programming Framework represents a revolutionary approach to understanding complex systems by translating them into standardized computational representations. Using Mermaid Markdown syntax and large language model (LLM) processing, we demonstrate the framework's application to representative biological and chemical systems.
22
-
23
- **Key Insight:** Complex systems across biology, chemistry, and physics exhibit remarkable similarities in their organizational principles despite operating at vastly different scales and domains. The Programming Framework reveals these common computational patterns.
24
-
25
- ## 🔬 Methodology
26
-
27
- The Programming Framework methodology involves systematic analysis of complex systems through the following steps:
28
-
29
- 1. **System Identification:** Identify the biological, chemical, or physical system to be analyzed
30
- 2. **Component Categorization:** Classify system components into the five functional categories
31
- 3. **Flowchart Construction:** Create Mermaid flowcharts with appropriate color coding
32
- 4. **Logic Verification:** Verify computational logic and system dynamics
33
- 5. **Cross-Disciplinary Comparison:** Identify patterns across different domains
34
-
35
- ## 🎨 Universal Color Coding System
36
-
37
- Each process is represented as a computational flowchart with standardized color coding:
38
-
39
- | Color Category | Biology | Chemistry | Computer Science | Physics | Mathematics |
40
- |----------------|---------|-----------|------------------|---------|-------------|
41
- | 🔴 **Red** - Triggers & Inputs | Environmental signals, Nutrient availability | Reactant supply, Temperature | Input data, User commands | Energy input, Force application | Axioms, Given conditions |
42
- | 🟡 **Yellow** - Structures & Objects | Enzymes, Receptor proteins | Catalysts, Reaction vessels | Data structures, Algorithms | Fields, Particles | Theorems, Methods |
43
- | 🟢 **Green** - Processing & Operations | Metabolic reactions, Signal transduction | Chemical reactions, Equilibrium shifts | Algorithm execution, Data processing | Wave propagation, Quantum operations | Logical steps, Calculations |
44
- | 🔵 **Blue** - Intermediates & States | Metabolites, Signaling molecules | Reaction intermediates, Transition states | Variables, Memory states | Quantum states, Energy levels | Intermediate results, Sub-proofs |
45
- | 🟣 **Violet** - Products & Outputs | Biomolecules, Cellular responses | Final products, Reaction yields | Program outputs, Computed results | Measured quantities, Physical phenomena | Proven theorems, Mathematical results |
46
-
47
- **Note:** Yellow nodes use black text for optimal readability, while all other colors use white text.
48
-
49
- ## 📊 Dataset and Evidence Base
50
-
51
- We analyzed a comprehensive dataset of biological processes spanning multiple organisms and systems:
52
-
53
- - **110 processes** from *Saccharomyces cerevisiae* (yeast) covering DNA replication, cell cycle control, signal transduction, energy metabolism, and stress responses
54
- - **Multiple processes** from *Escherichia coli* including DNA replication, gene regulation, central metabolism, motility, and specialized systems like the lac operon
55
- - **Advanced systems** including photosynthesis, bacterial sporulation, circadian clocks, and viral decision switches
56
-
57
- **Total:** 297+ processes across 36 individual collections
58
-
59
- The complete dataset is publicly available through the [Genome Logic Modeling Project (GLMP)](https://huggingface.co/spaces/garywelz/glmp) Hugging Face Space.
60
-
61
- ## 🌟 Representative Applications
62
-
63
- ### Case Study: β-Galactosidase Analysis (2025)
64
- The β-galactosidase system represents one of the most well-characterized examples of genetic regulation in molecular biology. Using modern tools and AI assistance, we can now create sophisticated and detailed visualizations that demonstrate the full computational complexity of the lac operon system.
65
-
66
- **Key Features:**
67
- - Environmental inputs (lactose, glucose, energy status)
68
- - Regulatory logic gates
69
- - Gene expression control
70
- - Metabolic pathway integration
71
- - Feedback control mechanisms
72
-
73
- ### Case Study: Algorithm Execution Analysis
74
- To demonstrate the framework's applicability to computer science, we applied the methodology to algorithm execution, specifically sorting algorithms. This example shows how the same computational logic can be applied to fundamental computer science processes.
75
-
76
- **Key Features:**
77
- - Input data validation
78
- - Algorithm selection and execution
79
- - Performance analysis
80
- - Error handling mechanisms
81
- - Complexity analysis
82
-
83
- ### Case Study: Mathematical Proof Tree Analysis
84
- To demonstrate the framework's applicability to pure mathematics, we applied the methodology to mathematical proof construction, a fundamental process in mathematical logic.
85
-
86
- **Key Features:**
87
- - Axiom processing
88
- - Logical deduction steps
89
- - Theorem application
90
- - Proof validation
91
- - Mathematical rigor verification
92
-
93
- ## 🛠️ Technical Foundation
94
-
95
- The Programming Framework builds upon **Mermaid Markdown (MMD)**, a text-based diagram generation syntax developed by Knut Sveidqvist in 2014. MMD enables the creation of complex flowcharts and diagrams from simple text descriptions.
96
-
97
- **Key Capabilities:**
98
- - **Text-to-Diagram Conversion:** Process descriptions from scientific literature can be directly converted into visual representations
99
- - **Standardized Syntax:** Consistent formatting across different systems and domains
100
- - **Automated Generation:** LLMs can rapidly process text descriptions and generate MMD code
101
- - **Cross-Platform Compatibility:** MMD integrates with documentation platforms and can be rendered in multiple formats
102
- - **Automatic Color Coding:** Canvas automatically derives color categories from MMD syntax
103
-
104
- ## 📈 Historical Evolution: From 1995 to 2025
105
-
106
- The Programming Framework represents the culmination of a 30-year evolution in computational biology visualization:
107
-
108
- ### 1995: Manual Creation
109
- - Months of research and reading
110
- - Manual flowchart creation with Inspiration
111
- - Single process analysis
112
- - Community discussion on bionet.genome.chromosome
113
- - Foundation for computational biology
114
-
115
- ### 2025: AI-Assisted Analysis
116
- - Hours of AI-assisted processing
117
- - Automated Mermaid Markdown generation
118
- - Systematic analysis of 297+ processes
119
- - Cross-disciplinary pattern recognition
120
- - Universal computational framework
121
-
122
- ## 🚀 Getting Started
123
-
124
- ### Quick Start Guide
125
-
126
- 1. **Choose Your System:** Identify a biological, chemical, or physical system to analyze
127
- 2. **Apply the Framework:** Use the five-category color coding system
128
- 3. **Create Flowcharts:** Generate Mermaid Markdown representations
129
- 4. **Verify Logic:** Ensure computational logic is sound
130
- 5. **Compare Patterns:** Look for similarities across domains
131
-
132
- ### Sample Analysis Prompt
133
-
134
- ```
135
- "Analyze the [system name] using the Programming Framework methodology. Create a Mermaid Markdown file that will enable the creation in HTML of a computational flowchart showing how environmental inputs are processed through regulatory mechanisms to produce specific outputs. Use the universal color scheme: Red for triggers/inputs, Yellow for structures/catalysts, Green for processing operations, Blue for intermediates, and Violet for products. Include a discipline-specific color key beneath the flowchart."
136
- ```
137
-
138
- ## 📚 Applications
139
-
140
- ### Biological Systems
141
- - Gene regulation networks
142
- - Metabolic pathways
143
- - Signal transduction cascades
144
- - Cell cycle control systems
145
- - Stress response mechanisms
146
-
147
- ### Chemical Processes
148
- - Catalytic reactions
149
- - Equilibrium systems
150
- - Kinetic analysis
151
- - Industrial processes
152
- - Environmental chemistry
153
-
154
- ### Physical Systems
155
- - Quantum processes
156
- - Thermodynamic cycles
157
- - Wave phenomena
158
- - Energy transfer systems
159
- - Field interactions
160
-
161
- ### Computer Science
162
- - Algorithm analysis
163
- - Data structures
164
- - Computational complexity
165
- - Software architecture
166
- - System design
167
-
168
- ### Mathematical Systems
169
- - Proof construction
170
- - Logical frameworks
171
- - Theorem development
172
- - Computational mathematics
173
- - Formal systems
174
-
175
- ## 🎯 Key Applications
176
-
177
- - **Bio-inspired Computing:** Biological computational patterns can inspire revolutionary new computing paradigms
178
- - **Synthetic Biology:** Understanding cellular programming enables the design of programmable biological systems
179
- - **Medical Applications:** Diseases can be understood as software bugs that can be debugged and fixed
180
- - **Evolutionary Computation:** Evolution becomes visible as a programming process that optimizes biological software
181
-
182
- ## 📖 Documentation
183
-
184
- - **[Methodology Guide](methodology/)** - Detailed step-by-step framework application
185
- - **[Examples Gallery](examples/)** - Comprehensive collection of analyzed systems
186
- - **[Tools & Resources](tools/)** - Templates, guidelines, and educational materials
187
- - **[Case Studies](case-studies/)** - Deep dives into specific applications
188
-
189
- ## 🤝 Contributing
190
-
191
- We welcome contributions to expand the Programming Framework across new domains and applications. Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.
192
-
193
- ### How to Contribute
194
- 1. **Submit Examples:** Share your own system analyses using the framework
195
- 2. **Improve Documentation:** Help expand methodology guides and tutorials
196
- 3. **Develop Tools:** Create software tools for framework application
197
- 4. **Cross-Disciplinary Applications:** Apply the framework to new domains
198
-
199
- ## 📄 License
200
-
201
- This project is licensed under the Creative Commons Attribution 4.0 International License - see the [LICENSE](LICENSE) file for details.
202
-
203
- ## 👨‍🔬 Author
204
-
205
- **Gary Welz**
206
- - Retired Faculty Member, John Jay College, CUNY (Department of Mathematics and Computer Science)
207
- - Borough of Manhattan Community College, CUNY
208
- - CUNY Graduate Center (New Media Lab)
209
- - Email: gwelz@jjay.cuny.edu
210
-
211
- ## 🔗 Related Projects
212
-
213
- - **[Genome Logic Modeling Project (GLMP)](https://huggingface.co/spaces/garywelz/glmp)** - Comprehensive biological systems analysis
214
- - **[Programming Framework Examples](https://huggingface.co/spaces/garywelz/programming_framework_examples)** - Extended case studies and applications
215
-
216
- ## 📞 Contact
217
-
218
- For questions, suggestions, or collaborations:
219
- - **Email:** gwelz@jjay.cuny.edu
220
- - **Hugging Face:** [@garywelz](https://huggingface.co/garywelz)
221
- - **Issues:** Use the [GitHub Issues](https://github.com/garywelz/programming-framework/issues) page
222
-
223
- ---
224
-
225
- **The genome is indeed like a computer program—not as a metaphor, but as a fundamental reality of how biological systems operate. This analysis provides the empirical evidence to support this revolutionary understanding of biological complexity.**
226
-
227
- *We stand at the threshold of a new era in biology - one where we understand life itself as an information processing phenomenon.*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programming Framework for Systematic Analysis - a Hugging Face Space by garywelz.pdf DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:0af0c3d1c8c264739f0bf8c666bccc8348e174be8745cad0e92099bf551fa749
3
- size 180391
 
 
 
 
README.md CHANGED
@@ -1,275 +1,102 @@
1
  ---
2
- title: The Programming Framework
3
- emoji: 🛠️
4
- colorFrom: yellow
5
- colorTo: red
6
- sdk: static
7
- pinned: true
8
- license: mit
 
 
 
9
  ---
10
 
11
- # 🛠️ The Programming Framework
12
 
13
- A Universal Method for Process Analysis
14
 
15
- ## Summary
16
 
17
- The **Programming Framework** is a universal meta-tool for analyzing complex processes across any discipline by combining Large Language Models (LLMs) with visual flowchart representation. The Framework transforms textual process descriptions into structured, interactive Mermaid flowcharts stored as JSON, enabling systematic analysis, visualization, and integration with knowledge systems.
18
 
19
- Successfully demonstrated through GLMP (Genome Logic Modeling Project) with 50+ biological processes, and applied across Chemistry, Mathematics, Physics, and Computer Science. The Framework serves as the foundational methodology for the CopernicusAI Knowledge Engine, enabling domain-specific process visualization and analysis.
20
 
21
- ## 📚 Prior Work & Research Contributions
 
22
 
23
- ### Overview
24
- The Programming Framework represents **prior work** that demonstrates a novel methodology for analyzing complex processes by combining Large Language Models (LLMs) with visual flowchart representation. This research establishes a universal, domain-agnostic approach to process analysis that transforms textual descriptions into structured, interactive visualizations.
25
 
26
- ### 🔬 Research Contributions
27
- - **Universal Process Analysis:** Domain-agnostic methodology applicable across biology, chemistry, software engineering, business processes, and more
28
- - **LLM-Powered Extraction:** Automated extraction of process steps, decision points, and logic flows using Google Gemini 2.0 Flash
29
- - **Structured Visualization:** Mermaid.js-based flowchart generation encoded as JSON for programmatic access and integration
30
- - **Iterative Refinement:** Systematic approach enabling continuous improvement through visualization and LLM-assisted refinement
31
 
32
- ### ⚙️ Technical Achievements
33
- - **Meta-Tool Architecture:** Framework for creating specialized process analysis tools (demonstrated by GLMP)
34
- - **JSON-Based Storage:** Structured data format enabling version control, cross-referencing, and API integration
35
- - **Multi-Domain Application:** Successfully applied to biological processes (GLMP), with extensions planned for software, business, and engineering domains
36
- - **Integration Framework:** Designed for integration with knowledge engines, research databases, and collaborative platforms
37
 
38
- ### 🎯 Position Within CopernicusAI Knowledge Engine
39
- The Programming Framework serves as the **foundational meta-tool** of the CopernicusAI Knowledge Engine, providing the underlying methodology that enables specialized applications:
40
 
41
- - **GLMP (Genome Logic Modeling Project)** - First specialized application demonstrating biological process visualization
42
- - **CopernicusAI** - Main knowledge engine integrating Framework outputs with AI podcasts and research synthesis
43
- - **Research Tools Dashboard** (✅ Implemented December 2025) - Fully operational web interface with knowledge graph visualization, vector search, RAG queries, and content browsing. Processes from Chemistry, Physics, Mathematics, and Computer Science are accessible through the unified dashboard. Live at: https://copernicus-frontend-phzp4ie2sq-uc.a.run.app/knowledge-engine
44
- - **Public Project Interface** (✅ Implemented January 2025) - Comprehensive public-facing page providing access to all CopernicusAI Knowledge Engine components. Live at: https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/copernicusai-public-reviewer.html
45
- - **Research Papers Metadata Database** - Integration for linking processes to source literature (12,000+ papers indexed)
46
- - **Science Video Database** - Potential integration for multi-modal process explanations
47
 
48
- This work establishes a proof-of-concept for AI-assisted process analysis, demonstrating how LLMs can systematically extract and visualize complex logic from textual sources across diverse domains. The Knowledge Engine now provides a unified interface for exploring processes alongside research papers, podcasts, and other content types.
49
 
50
- ## 🎯 Overview
51
 
52
- The Programming Framework is a **meta-tool**—a tool for creating tools. It provides a systematic method for analyzing any complex process by combining the analytical power of Large Language Models with the clarity of visual flowcharts.
53
 
54
- ## 💡 The Core Idea
55
 
56
- **Problem:** Complex processes are difficult to understand because they involve many steps, decision points, and interactions. Traditional text descriptions are hard to follow.
 
 
 
 
57
 
58
- **Solution:** Use LLMs to extract process logic from literature, then encode it as Mermaid flowcharts stored in JSON. Result: Clear, interactive visualizations that reveal hidden patterns and enable systematic analysis.
59
 
60
- ## ⚙️ How It Works
61
 
62
- 1. **Input Process** - Provide scientific papers, documentation, or process descriptions
63
- 2. **LLM Analysis** - AI extracts steps, decisions, branches, and logic flow
64
- 3. **Generate Flowchart** - Create Mermaid diagram encoded as JSON structure
65
- 4. **Visualize & Iterate** - Interactive flowchart reveals insights and enables refinement
 
66
 
67
- ## 🌍 Core Principles
68
 
69
- ### Domain Agnostic
70
- Works across any field: biology, chemistry, software engineering, business processes, legal workflows, manufacturing, and beyond.
71
 
72
- ### Iterative Refinement
73
- Start with rough analysis, visualize, identify gaps, refine with LLM, repeat until the process logic is crystal clear.
 
 
 
 
 
74
 
75
- ### Structured Data
76
- JSON storage enables programmatic access, version control, cross-referencing, and integration with other tools and databases.
77
 
78
- ## 🚀 Applications
 
 
 
 
 
79
 
80
- ### 🧬 GLMP - Genome Logic Modeling (Live)
81
- First specialized application: visualizing biochemical processes like DNA replication, metabolic pathways, and cell signaling.
82
- - [Explore GLMP →](https://huggingface.co/spaces/garywelz/glmp)
83
 
84
- ## 📚 Process Diagram Collections
 
 
 
 
 
 
85
 
86
- The Programming Framework has been applied across multiple scientific disciplines. Explore interactive flowchart collections organized by domain:
87
 
88
- ### Process Database Statistics (As of January 2025)
89
 
90
- | Discipline | Processes | Subcategories | Status | Database Table |
91
- |------------|-----------|---------------|--------|----------------|
92
- | Biology | 52 | 8 | Complete | [View Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/biology-processes-database/biology-database-table.html) |
93
- | Chemistry | 91 | 14 | Complete | [View Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/chemistry-processes-database/chemistry-database-table.html) |
94
- | Physics | 21 | 7 | ✅ Complete | [View Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/physics-processes-database/physics-database-table.html) |
95
- | Computer Science | 21 | 7 | ✅ Complete | [View Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/computer-science-processes-database/computer-science-database-table.html) |
96
- | Mathematics | 20 | 7 | ✅ Complete | [View Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/mathematics-database-table.html) |
97
- | GLMP (Molecular Biology) | 108 | 10+ | ✅ Complete | [View Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/glmp-database-table.html) |
98
- | **Total** | **313** | **53+** | **✅ Operational** | **All databases publicly accessible** |
99
-
100
- **Note:** All processes include Mermaid flowcharts, source citations, and comprehensive metadata. See individual database tables for detailed statistics, complexity metrics, and process details. Statistics are dynamically updated - see [Public Project Interface](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/copernicusai-public-reviewer.html) for current counts.
101
-
102
- ### 🧬 Biology
103
- - [Biology Processes Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/biology-processes-database/biology-database-table.html) - Interactive database with 52 higher-level organismal processes across 8 categories (reproduction, development, behavior, defense, nutrition, sensory, transport, coordination)
104
- - [GLMP Database Table](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/glmp-database-table.html) - Genome Logic Modeling Project: Biochemical/molecular processes database (108 processes)
105
- - **Note:** Biology Processes Database focuses on organismal, developmental, behavioral, and ecological processes. GLMP focuses on molecular-level biochemical processes. Together they provide comprehensive biological process coverage.
106
-
107
- ### ⚗️ Chemistry
108
- - [Chemistry Database Table](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/chemistry-processes-database/chemistry-database-table.html) - Interactive database with 91 processes across 14 subcategories
109
-
110
- ### 🔢 Mathematics
111
- - [Mathematics Database Table](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/mathematics-database-table.html) - Interactive database with 20 processes across 7 subcategories
112
-
113
- ### ⚛️ Physics
114
- - [Physics Database Table](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/physics-processes-database/physics-database-table.html) - Interactive database with 21 processes across 7 subcategories
115
-
116
- ### 💻 Computer Science
117
- - [Computer Science Database Table](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/computer-science-processes-database/computer-science-database-table.html) - Interactive database with 21 processes across 7 subcategories
118
-
119
- ## ⚠️ Limitations & Future Directions
120
-
121
- ### Current Limitations
122
- - **Process Validation:** Flowcharts are LLM-generated and benefit from expert validation for domain-specific accuracy (validation process ongoing)
123
- - **Source Linking:** Not all processes yet linked to specific research papers (work in progress per Quality Standards)
124
- - **Scale:** Current database (313 processes) represents proof-of-concept; target is 1,000+ processes
125
- - **Domain Coverage:** Some disciplines better represented than others; actively expanding coverage
126
- - **LLM Dependency:** Framework requires LLM access (Google Gemini 2.0 Flash); alternative models may produce different results
127
- - **Complexity Limits:** Very complex processes (>100 nodes) may require manual refinement
128
-
129
- ### Future Work
130
- - **Expansion:** Scale to 1,000+ processes across all disciplines (see DISCIPLINE_DATABASES_PLAN.md)
131
- - **Validation:** Implement systematic peer review process for process flowcharts
132
- - **Source Integration:** Enhanced linking to research papers using vector search from 23,246+ indexed papers
133
- - **Automation:** Automated source paper suggestion and linking
134
- - **Quality Assurance:** Systematic validation framework for flowchart accuracy
135
- - **Multi-LLM Support:** Extend to support multiple LLM providers for comparison and validation
136
- - **Interactive Refinement:** User interface for iterative flowchart improvement
137
-
138
- ### Known Areas for Improvement
139
- - **Accuracy Validation:** Not all flowcharts yet validated by domain experts; systematic validation in progress
140
- - **Source Citations:** Some processes need additional source paper citations (work in progress)
141
- - **Cross-Discipline Links:** Enhanced cross-referencing between related processes across disciplines
142
-
143
- ## 🔧 Technical Architecture
144
-
145
- ### LLM Integration
146
- - **Primary Model:** Google Gemini 2.0 Flash for process analysis
147
- - **Deployment:** Vertex AI for enterprise-scale deployment
148
- - **Prompt Engineering:** Custom prompts optimized for process extraction and structured output
149
- - **Output Format:** Structured JSON with Mermaid flowchart syntax
150
- - **Version:** Framework tested with Gemini 2.0 Flash; compatible with other LLMs
151
-
152
- ### Visualization Stack
153
- - **Rendering Engine:** Mermaid.js for flowchart visualization
154
- - **Data Validation:** JSON schema for data validation and consistency
155
- - **Output Formats:** Interactive SVG output with export to PNG/PDF supported
156
- - **Color Schemes:** Discipline-based color coding following Programming Framework standards
157
-
158
- ### Data Storage
159
- - **Primary Storage:** Google Cloud Storage for JSON process files
160
- - **Metadata Indexing:** Firestore for metadata indexing and search
161
- - **Version Control:** Git for code and documentation versioning
162
- - **Cross-Referencing:** Integration with research papers database (23,246+ papers indexed)
163
-
164
- ### Integration Points
165
- - **GLMP:** Specialized biological process collections
166
- - **CopernicusAI:** Knowledge graph integration for unified exploration
167
- - **Research Papers Database:** Cross-linking with 23,246+ indexed papers
168
- - **API Endpoints:** Programmatic access for integration with other systems
169
- - **Research Tools Dashboard:** Unified interface for exploring processes alongside papers and other content
170
-
171
- ### How to Cite This Work
172
-
173
- #### BibTeX Format
174
- ```bibtex
175
- @article{welz2025programming,
176
- title={The Programming Framework: A General Method for Process Analysis Using LLMs and Mermaid Visualization},
177
- author={Welz, Gary},
178
- journal={Nature Communications},
179
- year={2025},
180
- note={Submitted},
181
- url={https://huggingface.co/spaces/garywelz/programming_framework},
182
- note={Preprint available upon publication}
183
- }
184
- ```
185
-
186
- #### Standard Citation Format
187
- Welz, G. (2024–2025). *The Programming Framework: A Universal Method for Process Analysis*.
188
- Hugging Face Spaces. https://huggingface.co/spaces/garywelz/programming_framework
189
-
190
- Welz, G. (2024). *From Inspiration to AI: Biology as Visual Programming*. Medium.
191
- https://medium.com/@garywelz_47126/from-inspiration-to-ai-biology-as-visual-programming-520ee523029a
192
-
193
- **Note:** When published, this citation will be updated with DOI and publication details from Nature Communications.
194
-
195
- This project serves as a foundational meta-tool for AI-assisted process analysis, enabling systematic extraction and visualization of complex logic from textual sources across diverse scientific and technical domains.
196
-
197
- The Programming Framework is designed as infrastructure for AI-assisted science, providing a universal methodology that can be specialized for domain-specific applications.
198
-
199
- ## 📊 Data Availability
200
-
201
- **Research Data:**
202
- - **Process Flowcharts:** All process flowcharts are publicly available in Google Cloud Storage with interactive database tables:
203
- - [Biology Processes Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/biology-processes-database/biology-database-table.html) - 52 processes across 8 subcategories
204
- - [Chemistry Processes Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/chemistry-processes-database/chemistry-database-table.html) - 91 processes across 14 subcategories
205
- - [Physics Processes Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/physics-processes-database/physics-database-table.html) - 21 processes across 7 subcategories
206
- - [Mathematics Processes Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/mathematics-database-table.html) - 20 processes across 7 subcategories
207
- - [Computer Science Processes Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/computer-science-processes-database/computer-science-database-table.html) - 21 processes across 7 subcategories
208
- - [GLMP Database](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/glmp-database-table.html) - 108+ molecular biology processes
209
- - **Process Metadata:** Each process includes JSON metadata with Mermaid flowchart syntax, source citations, complexity metrics, and related process links.
210
- - **Current Statistics:** Dynamically updated statistics available at [Public Project Interface](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/copernicusai-public-reviewer.html).
211
-
212
- **Source Code & Methodology:**
213
- - **Methodology:** Fully documented in this README and the Programming Framework paper (submitted to Nature Communications).
214
- - **Process Generation:** LLM-powered extraction using Google Gemini 2.0 Flash via Vertex AI, with custom prompts for process extraction and structured JSON output formatting.
215
- - **Visualization:** Mermaid.js-based flowchart generation with JSON schema for data validation.
216
- - **Data Format:** Standardized JSON structure documented in project files (see Technical Architecture section).
217
- - **Database Schemas:** Process database schemas and metadata structures documented in project documentation.
218
-
219
- **Access:**
220
- - **Public Access:** All process databases and database tables are publicly accessible (no authentication required).
221
- - **Individual Process Viewers:** Each process has a dedicated viewer accessible via links in database tables.
222
- - **Research Tools Dashboard:** Processes are integrated into the [Research Tools Dashboard](https://copernicus-frontend-phzp4ie2sq-uc.a.run.app/knowledge-engine) for unified exploration alongside research papers and other content.
223
- - **Hugging Face Spaces:** Framework documentation and examples available at [Programming Framework Space](https://huggingface.co/spaces/garywelz/programming_framework).
224
-
225
- **Reproducibility:**
226
- - All process flowcharts include source citations linking to research papers used to create each flowchart.
227
- - Methodology is fully documented and can be replicated using Google Gemini 2.0 Flash or compatible LLMs.
228
- - JSON schema and data structures are standardized and documented.
229
- - Process generation workflow is transparent: input (textual process description) → LLM analysis → Mermaid flowchart generation → JSON storage.
230
- - All components are publicly accessible for verification, reuse, and extension to other domains.
231
-
232
- **Process Database Statistics:**
233
- - **Total Processes:** 313+ validated processes across 6 databases
234
- - **Disciplines Covered:** Biology, Chemistry, Physics, Mathematics, Computer Science, Molecular Biology (GLMP)
235
- - **Validation:** 100% syntax accuracy, ≥85% metadata quality, all processes include source citations
236
- - **Format:** All processes stored as JSON files with Mermaid flowchart syntax, publicly accessible via Google Cloud Storage
237
-
238
- ## 🔗 Related Projects
239
-
240
- ### 🧬 GLMP - Genome Logic Modeling
241
- First specialized application of the Programming Framework to biochemical processes. 100+ biological pathways visualized.
242
- - [Visit GLMP →](https://huggingface.co/spaces/garywelz/glmp)
243
-
244
- ### 🔬 CopernicusAI
245
- Knowledge engine integrating the Programming Framework with AI podcasts, research papers, and knowledge graph for scientific discovery.
246
- - [Visit CopernicusAI →](https://huggingface.co/spaces/garywelz/copernicusai)
247
-
248
- ## 🎨 Interactive Demo
249
-
250
- The space includes interactive examples showing the framework applied to:
251
- - Scientific Method
252
- - Software Deployment Pipeline
253
- - Customer Support Workflow
254
- - Research Paper Publication
255
-
256
- Each example demonstrates how LLMs extract process logic and encode it as visual flowcharts.
257
-
258
- ## 💻 Technology Stack
259
-
260
- - **LLM**: Google Gemini 2.0 Flash, Vertex AI
261
- - **Visualization**: Mermaid.js
262
- - **Storage**: Google Cloud Storage, Firestore
263
- - **Format**: JSON with Mermaid syntax
264
- - **Frontend**: Static HTML + Tailwind CSS
265
-
266
- ## 🌟 Vision
267
-
268
- As AI systems become more capable of understanding complex processes, the Programming Framework provides the bridge between human comprehension and machine analysis. It's a tool for truth-seeking—transforming complexity into clarity.
269
-
270
- ---
271
-
272
- **A Universal Method for Process Analysis**
273
-
274
- © 2025 Gary Welz. All rights reserved.
275
 
 
 
1
  ---
2
+ title: "Programming Framework for Systematic Analysis"
3
+ emoji: "🎨"
4
+ colorFrom: "blue"
5
+ colorTo: "green"
6
+ sdk: "static"
7
+ sdk_version: "latest"
8
+ app_file: "index.html"
9
+ pinned: false
10
+ author: "garywelz"
11
+ short_description: Mermaid flowcharts + links to math and biology databases
12
  ---
13
 
14
+ ## Programming Framework
15
 
16
+ A systematic visualization methodology for analyzing complex systems across disciplines using Mermaid Markdown and a universal five-color code.
17
 
18
+ **Source & backup:** [github.com/garywelz/progframe](https://github.com/garywelz/progframe)
19
 
20
+ ### Interactive databases (hosted on Google Cloud Storage)
21
 
22
+ Browse searchable tables and open individual process charts:
23
 
24
+ - **Mathematics** [Algorithms & axiomatic theories table](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/mathematics-database-table.html) · [Named collections (mathematicians & theorems)](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/collections/index.html) · [Whole of mathematics graph](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/mathematics-processes-database/whole-of-mathematics.html)
25
+ - **Biology** — [Pathways, mechanisms & lab protocols table](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/biology-processes-database/biology-database-table.html) · [Theme collections](https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/biology-processes-database/collections/index.html)
26
 
27
+ Complex systems across biology, chemistry, and physics exhibit remarkable similarities in their organizational principles despite operating at vastly different scales and domains. Traditional analysis methods often remain siloed within specific disciplines, limiting our ability to identify common patterns and computational logic that govern system behavior. Here, we present the Programming Framework, a systematic methodology that translates complex system dynamics into standardized computational representations using Mermaid Markdown syntax and LLM processing.
 
28
 
29
+ ### Purpose and Goals
 
 
 
 
30
 
31
+ The Programming Framework project aims to advance the use of Mermaid Markdown syntax and Large Language Models (LLMs) to create standardized, color-coded flowcharts representing complex processes across all academic disciplines. By providing a universal methodology for translating system dynamics into computational representations, this framework enables systematic comparison and pattern recognition across traditionally separate fields including biology, chemistry, physics, computer science, and mathematics. The project builds upon three decades of computational biology research and demonstrates how modern AI tools can democratize complex system analysis, making sophisticated visualization accessible to researchers, educators, and students worldwide.
 
 
 
 
32
 
33
+ ### Technical Foundation: Mermaid Markdown
 
34
 
35
+ #### The Invention of Mermaid
 
 
 
 
 
36
 
37
+ **Knut Sveidqvist** invented the Mermaid markdown format. He created Mermaid, a JavaScript-based diagramming and charting tool, to simplify diagram creation in documentation workflows. The project was inspired by his experience trying to update a diagram in a document, which was difficult due to the file format.
38
 
39
+ Sveidqvist's innovation revolutionized how diagrams are created and maintained in documentation by providing a text-based syntax that can be version-controlled, easily edited, and automatically rendered into visual diagrams. This approach eliminates the need for external diagramming tools and ensures diagrams stay synchronized with their documentation.
40
 
41
+ #### Mermaid Markdown (.mmd) Format
42
 
43
+ The Programming Framework leverages Mermaid's `.mmd` file format, which provides:
44
 
45
+ - **Text-based syntax** for creating complex flowcharts and diagrams
46
+ - **Version control compatibility** - diagrams can be tracked in Git repositories
47
+ - **LLM-friendly format** - AI systems can generate and modify diagram code
48
+ - **Cross-platform compatibility** - works in any environment that supports JavaScript
49
+ - **Embeddable rendering** - diagrams can be displayed in HTML, Markdown, and other formats
50
 
51
+ #### LLM Integration and Workflow
52
 
53
+ Our methodology uses Large Language Models to:
54
 
55
+ 1. **Generate .mmd files** - LLMs create detailed Mermaid syntax for complex processes
56
+ 2. **Apply color coding** - Systematic application of the 5-category color system
57
+ 3. **Ensure consistency** - Standardized node naming and connection patterns
58
+ 4. **Embed in HTML** - .mmd files are embedded in HTML for web display
59
+ 5. **Maintain quality** - LLMs can validate and optimize diagram structure
60
 
61
+ This workflow enables rapid creation of sophisticated visualizations that would be impractical to create manually, while maintaining the flexibility and editability of text-based formats.
62
 
63
+ ### Universal Color Coding Table
 
64
 
65
+ | Color | Hex | Biology | Chemistry | Computer Science | Physics | Mathematics |
66
+ | --- | --- | --- | --- | --- | --- | --- |
67
+ | Red | `#ff6b6b` | Environmental signals, nutrients | Reactant supply, temperature | Input data, user commands | Energy input, force | Axioms, givens |
68
+ | Yellow | `#ffd43b` | Enzymes, receptors | Catalysts, vessels | Data structures, algorithms | Fields, particles | Theorems, methods |
69
+ | Green | `#51cf66` | Metabolic reactions | Chemical reactions | Algorithm execution | Quantum/force operations | Calculations, deductions |
70
+ | Blue | `#74c0fc` | Metabolites, states | Intermediates, streams | Variables, memory states | States, measurement results | Intermediate results |
71
+ | Violet | `#b197fc` | Biomolecules, responses | Final products | Program outputs | Phenomena, measured quantities | Proven results |
72
 
73
+ ### Explore the Space
 
74
 
75
+ - Biology evidence base: [GLMP Space](https://huggingface.co/spaces/garywelz/glmp) (Hugging Face) and repo
76
+ - Chemistry processes: [chemistry_processes.html](chemistry_processes.html)
77
+ - Computer Science: [computer_science_processes.html](computer_science_processes.html)
78
+ - Physics: [physics_processes.html](physics_processes.html)
79
+ - Mathematics: [mathematics_processes.html](mathematics_processes.html)
80
+ - Full article: [programming_framework_article.html](programming_framework_article.html)
81
 
82
+ ### Experimental Validation
 
 
83
 
84
+ - **Validation Paper**: [experimental_validation_paper.html](experimental_validation_paper.html) — comprehensive experimental protocols and validation methodology
85
+ - **Core validation flowcharts** (under `validation_flowcharts/`):
86
+ - [catalytic_hydrogenation_optimization.html](validation_flowcharts/catalytic_hydrogenation_optimization.html) — Experiment 1: catalytic hydrogenation
87
+ - [raft_polymerization_mechanism.html](validation_flowcharts/raft_polymerization_mechanism.html) — Experiment 2: polymerization kinetics
88
+ - [surface_catalysis_mechanism.html](validation_flowcharts/surface_catalysis_mechanism.html) — Experiment 3: surface chemistry
89
+ - [electrochemical_oxygen_reduction.html](validation_flowcharts/electrochemical_oxygen_reduction.html) — Experiment 4: electrochemical process
90
+ - [quantum_chemistry_calculation.html](validation_flowcharts/quantum_chemistry_calculation.html) — Experiment 5: computational chemistry
91
 
92
+ ### Batch Architecture
93
 
94
+ The project now includes a comprehensive batch architecture for each discipline:
95
 
96
+ - **Mathematics**: 7 batches (21 processes) - Complete
97
+ - **Chemistry**: 14 batches (70 processes) - Complete ✅
98
+ - **Computer Science**: 7 batches (21 processes) - Complete
99
+ - **Physics**: 7 batches (21 processes) - Complete
100
+ - **Biology**: External GLMP Space - Complete
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
 
102
+ Each discipline has an index page (`*_index.html`) and individual batch files (`*_batch_*.html`) containing detailed process visualizations.
WHOLE_OF_MATHEMATICS_CHART_DESIGN.md ADDED
@@ -0,0 +1,374 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Whole of Mathematics — Interactive Zoomable Chart Design
2
+
3
+ ## Vision
4
+
5
+ A single, high-level interactive visualization that shows the **entire landscape of mathematics** as our collection understands it—with the ability to **zoom in** from broad domains down to individual processes, and to **click through** to the actual flowchart or dependency graph for any process.
6
+
7
+ Think of it as a "map of mathematics" that is:
8
+ - **Data-driven** — built from `metadata.json` and our hierarchy
9
+ - **Zoomable** — pan and zoom like a geographic map or Prezi
10
+ - **Drillable** — click a region to focus on it and see its children
11
+ - **Linked** — deepest level opens the existing process HTML page
12
+
13
+ ---
14
+
15
+ ## Domain Grouping: arXiv Math Taxonomy
16
+
17
+ Use the **arXiv Mathematics** taxonomy (math.XX) as the canonical domain structure. arXiv is widely recognized, stable, and aligns with how mathematicians categorize research.
18
+
19
+ ### arXiv Math Categories (math.XX)
20
+
21
+ | Code | Name |
22
+ |------|------|
23
+ | math.AC | Commutative Algebra |
24
+ | math.AG | Algebraic Geometry |
25
+ | math.AP | Analysis of PDEs |
26
+ | math.AT | Algebraic Topology |
27
+ | math.CA | Classical Analysis and ODEs |
28
+ | math.CO | Combinatorics |
29
+ | math.CT | Category Theory |
30
+ | math.CV | Complex Variables |
31
+ | math.DG | Differential Geometry |
32
+ | math.DS | Dynamical Systems |
33
+ | math.FA | Functional Analysis |
34
+ | math.GM | General Mathematics |
35
+ | math.GN | General Topology |
36
+ | math.GR | Group Theory |
37
+ | math.GT | Geometric Topology |
38
+ | math.HO | History and Overview |
39
+ | math.IT | Information Theory |
40
+ | math.KT | K-Theory and Homology |
41
+ | math.LO | Logic |
42
+ | math.MG | Metric Geometry |
43
+ | math.MP | Mathematical Physics |
44
+ | math.NA | Numerical Analysis |
45
+ | math.NT | Number Theory |
46
+ | math.OA | Operator Algebras |
47
+ | math.OC | Optimization and Control |
48
+ | math.PR | Probability |
49
+ | math.QA | Quantum Algebra |
50
+ | math.RA | Rings and Algebras |
51
+ | math.RT | Representation Theory |
52
+ | math.SG | Symplectic Geometry |
53
+ | math.SP | Spectral Theory |
54
+ | math.ST | Statistics Theory |
55
+
56
+ ### Mapping Our Subcategories → arXiv
57
+
58
+ | Our subcategory | arXiv code(s) |
59
+ |-----------------|---------------|
60
+ | abstract_algebra | math.GR, math.RA, math.AC |
61
+ | linear_algebra | math.RA |
62
+ | category_theory | math.CT |
63
+ | calculus_analysis | math.CA, math.CV, math.DS |
64
+ | geometry_topology | math.GN, math.GT, math.AT, math.DG, math.MG |
65
+ | number_theory | math.NT |
66
+ | discrete_mathematics | math.CO, math.LO |
67
+ | foundations | math.LO |
68
+ | bioinformatics | (applied; no direct math.XX; use math.GM or separate) |
69
+
70
+ *Wikipedia* math portal uses a flatter structure (Algebra, Analysis, Geometry, etc.)—can serve as a secondary grouping if we want a simpler top level.
71
+
72
+ ---
73
+
74
+ ## Hierarchy: What We're Mapping
75
+
76
+ ### Level 0 — Whole of Mathematics (root)
77
+ The entire collection. One view.
78
+
79
+ ### Level 1 — arXiv Math Domains (or grouped)
80
+ Either use arXiv codes directly (math.NT, math.AG, …) or group into ~6–8 broader areas for a simpler top level:
81
+
82
+ | Domain | arXiv codes | Our subcategories |
83
+ |--------|-------------|-------------------|
84
+ | **Algebra** | AC, AG, CT, GR, RA, RT, QA | abstract_algebra, linear_algebra, category_theory |
85
+ | **Analysis** | AP, CA, CV, FA, NA, SP | calculus_analysis, complex_analysis |
86
+ | **Geometry & Topology** | AT, DG, GN, GT, MG, SG | geometry_topology |
87
+ | **Number Theory** | NT | number_theory |
88
+ | **Discrete & Logic** | CO, LO | discrete_mathematics, foundations |
89
+ | **Dynamical Systems** | DS | (part of calculus_analysis) |
90
+ | **Probability & Statistics** | PR, ST | (future) |
91
+ | **Applied / Other** | GM, MP, OC, IT | bioinformatics |
92
+
93
+ ### Level 2 — Subcategories
94
+ e.g., within **Analysis**: Real Analysis, Complex Analysis, Complex Dynamics, Symbolic Dynamics.
95
+
96
+ ### Level 3 — Processes
97
+ Individual charts. Click → open process page.
98
+
99
+ ---
100
+
101
+ ## Force-Directed Graph: Deep Dive
102
+
103
+ ### Why It Aligns With Our Current Metaphor
104
+
105
+ Our existing process charts are **node–link diagrams**:
106
+ - **Axiomatic theories**: nodes = axioms, definitions, theorems; edges = "depends on"
107
+ - **Algorithms**: nodes = steps; edges = control flow
108
+
109
+ A force-directed graph is the same visual language at a higher level: **nodes and edges**. It extends the dependency-graph metaphor from *within* a process to *between* processes and domains.
110
+
111
+ ### Force-Directed vs. Treemap: Core Difference
112
+
113
+ | Aspect | Treemap | Force-Directed Graph |
114
+ |--------|---------|----------------------|
115
+ | **Structure** | Containment (parent *contains* children) | Links (nodes *connected* by edges) |
116
+ | **Relationships** | Implicit (nesting) | Explicit (edges) |
117
+ | **Hierarchy** | Strict tree; one parent per node | Can be tree, DAG, or general graph |
118
+ | **Cross-links** | Hard to show (a node lives in one place) | Natural (Galois ↔ Field Theory ↔ Group Theory) |
119
+ | **Layout** | Rectangles, area = weight | Organic; forces pull/push nodes |
120
+ | **Zoom** | Zoom into a region (geometric) | Pan/zoom canvas; click node to focus |
121
+
122
+ ### Force-Directed *Can* Be Hierarchical
123
+
124
+ You can use a force-directed layout with **hierarchical constraints**:
125
+ - **Parent–child links**: domain → subcategory → process (tree edges)
126
+ - **Cross-links**: `namedCollections` overlap, or explicit "related to" (e.g., Galois Theory ↔ Field Theory)
127
+ - **Collision / clustering**: Give nodes of the same domain a "gravity" toward each other so they cluster
128
+ - **Level-based y-position**: Fix y by depth (root at top, processes at bottom) for a tree-like flow
129
+
130
+ So you get: **hierarchy + relationships** in one view.
131
+
132
+ ### Zoom and Pan
133
+
134
+ Force-directed graphs support zoom and pan the same way as treemaps:
135
+ - Wrap the graph in an SVG `<g>` (group)
136
+ - Apply `d3.zoom()` to the SVG; transform the group on zoom/pan events
137
+ - **Geometric zoom**: scale + translate the whole canvas (simple)
138
+ - **Semantic zoom** (optional): at different zoom levels, show different detail (e.g., zoomed out = domains only; zoomed in = subcategories; further in = processes)
139
+
140
+ ### Ease of Use With Our Collection
141
+
142
+ **Data we have:**
143
+ - `subcategory` per process → gives hierarchy (domain → subcategory → process)
144
+ - `processType` (algorithm vs axiomatic_theory) → can style nodes differently
145
+ - Process IDs and names → node labels and links
146
+
147
+ **Data we can add:**
148
+ - `namedCollections` → cross-links: two processes in "fermat" get an edge
149
+ - Optional `dependsOn` or `relatedTo` → explicit edges between processes
150
+
151
+ **Graph structure:**
152
+ ```
153
+ Nodes: [Mathematics (root)] + [~8 domains] + [~10 subcategories] + [~98 processes]
154
+ Edges: Tree edges (parent→child) + optional cross-edges (namedCollections, relatedTo)
155
+ ```
156
+
157
+ ~120 nodes, ~100+ edges is well within D3 force layout comfort zone. No performance concerns.
158
+
159
+ ### Relationship to Other Types
160
+
161
+ - **Treemap**: Force-directed shows *links*; treemap shows *containment*. Different metaphors. Treemap is "zoom into a region"; force-directed is "follow the edges."
162
+ - **Sunburst**: Both can show hierarchy. Sunburst is radial containment; force-directed is node-link. Sunburst is more compact; force-directed shows relationships.
163
+ - **Map metaphor**: Could use force-directed *for layout* (position nodes), then draw "regions" (Voronoi, convex hulls) around domain clusters—hybrid approach.
164
+
165
+ ---
166
+
167
+ ## Technical Approaches (Summary)
168
+
169
+ ### Option A: D3 Zoomable Treemap
170
+ - Containment metaphor; area = count; no explicit edges.
171
+ - **Fit**: Pure hierarchy, no cross-links.
172
+
173
+ ### Option B: D3 Sunburst
174
+ - Radial containment; compact.
175
+ - **Fit**: Hierarchy; explore later.
176
+
177
+ ### Option C: Force-Directed Graph with Zoom ← **Primary choice**
178
+ - Node–link; explicit edges; aligns with our dependency-graph metaphor.
179
+ - **Fit**: Hierarchy + cross-links; zoom/pan; works with our collection.
180
+
181
+ ### Option D: Map Metaphor
182
+ - Geographic feel; Voronoi or custom.
183
+ - **Fit**: Explore later.
184
+
185
+ ### Option E: Hybrid
186
+ - Treemap + graph overlay.
187
+ - **Fit**: Explore later.
188
+
189
+ ---
190
+
191
+ ## Recommended: Force-Directed Graph (Option C) + Zoom + Breadcrumbs
192
+
193
+ **Why**: Aligns with our existing node–link dependency metaphor. Shows both hierarchy (domain → subcategory → process) and cross-links (e.g., via `namedCollections`). Zoom and pan are standard (D3 zoom on SVG group). ~120 nodes is trivial for D3 force. Breadcrumbs solve "where am I?" when zoomed.
194
+
195
+ **Data shape** (nodes + links for force-directed):
196
+
197
+ ```json
198
+ {
199
+ "nodes": [
200
+ { "id": "root", "name": "Mathematics", "level": 0 },
201
+ { "id": "algebra", "name": "Algebra", "level": 1 },
202
+ { "id": "analysis", "name": "Analysis", "level": 1 },
203
+ { "id": "abstract_algebra", "name": "Abstract Algebra", "level": 2 },
204
+ { "id": "abstract_algebra-group-theory", "name": "Group Theory", "level": 3, "processId": "abstract_algebra-group-theory",
205
+ "subcategory": "abstract_algebra", "url": "processes/abstract_algebra/abstract_algebra-group-theory.html" }
206
+ ],
207
+ "links": [
208
+ { "source": "root", "target": "algebra" },
209
+ { "source": "algebra", "target": "abstract_algebra" },
210
+ { "source": "abstract_algebra", "target": "abstract_algebra-group-theory" },
211
+ { "source": "abstract_algebra-field-theory", "target": "abstract_algebra-group-theory" }
212
+ ]
213
+ }
214
+ ```
215
+
216
+ `level` drives hierarchy. `links` include tree edges (parent→child) and optional cross-edges (e.g., Field Theory → Group Theory). `processId` and `url` at leaves for linking.
217
+
218
+ ---
219
+
220
+ ## Metadata Extensions for the Chart
221
+
222
+ ### 1. Domain Mapping (arXiv-Based)
223
+
224
+ Add to `metadata.json`:
225
+
226
+ ```json
227
+ {
228
+ "domainHierarchy": {
229
+ "algebra": {
230
+ "name": "Algebra",
231
+ "arxiv": ["math.AC", "math.AG", "math.CT", "math.GR", "math.RA", "math.RT", "math.QA"],
232
+ "subcategories": ["abstract_algebra", "linear_algebra", "category_theory"]
233
+ },
234
+ "analysis": {
235
+ "name": "Analysis",
236
+ "arxiv": ["math.AP", "math.CA", "math.CV", "math.FA", "math.NA", "math.SP"],
237
+ "subcategories": ["calculus_analysis", "complex_analysis"]
238
+ },
239
+ "geometry_topology": {
240
+ "name": "Geometry & Topology",
241
+ "arxiv": ["math.AT", "math.DG", "math.GN", "math.GT", "math.MG", "math.SG"],
242
+ "subcategories": ["geometry_topology"]
243
+ },
244
+ "number_theory": {
245
+ "name": "Number Theory",
246
+ "arxiv": ["math.NT"],
247
+ "subcategories": ["number_theory"]
248
+ },
249
+ "discrete_logic": {
250
+ "name": "Discrete & Logic",
251
+ "arxiv": ["math.CO", "math.LO"],
252
+ "subcategories": ["discrete_mathematics", "foundations"]
253
+ },
254
+ "dynamical_systems": {
255
+ "name": "Dynamical Systems",
256
+ "arxiv": ["math.DS"],
257
+ "subcategories": []
258
+ },
259
+ "applied": {
260
+ "name": "Applied & Other",
261
+ "arxiv": ["math.GM", "math.MP", "math.OC", "math.PR", "math.ST"],
262
+ "subcategories": ["bioinformatics"]
263
+ }
264
+ },
265
+ "subcategoryToArxiv": {
266
+ "abstract_algebra": "math.GR",
267
+ "calculus_analysis": "math.CA",
268
+ "geometry_topology": "math.GT"
269
+ }
270
+ }
271
+ ```
272
+
273
+ ### 2. Optional: Process-Level "Domain" Override
274
+
275
+ For processes that span domains (e.g., Category Theory), allow:
276
+
277
+ ```json
278
+ { "id": "...", "domain": "algebra", "subcategory": "category_theory" }
279
+ ```
280
+
281
+ Default: derive domain from subcategory via `domainHierarchy`.
282
+
283
+ ---
284
+
285
+ ## Interaction Design
286
+
287
+ ### Zoom & Pan
288
+ - **Scroll** or **pinch**: zoom in/out
289
+ - **Drag**: pan
290
+ - **Double-click** a region: zoom to fit that region (focus)
291
+ - **Breadcrumb click**: jump back to that level
292
+
293
+ ### Click Behavior
294
+ - **Level 1–2** (domain, subcategory): zoom in to show children
295
+ - **Level 3** (process): open process page in new tab (or same tab with back)
296
+
297
+ ### Visual Feedback
298
+ - **Hover**: highlight region, show tooltip (name + count)
299
+ - **Focus**: breadcrumb updates; optional sidebar with list of processes in current view
300
+ - **Cross-links**: if we add graph overlay, dim non-adjacent regions when hovering a node with many connections
301
+
302
+ ---
303
+
304
+ ## Responsive & Accessibility
305
+
306
+ - **Mobile**: Touch pan/zoom; larger hit targets for small regions; consider "list view" fallback when zoomed to a subcategory
307
+ - **Keyboard**: Tab through regions, Enter to zoom/select
308
+ - **Screen readers**: Breadcrumb + list of current level's items as text
309
+
310
+ ---
311
+
312
+ ## Implementation Phases
313
+
314
+ ### Phase 1: Static Hierarchy + Force-Directed Graph
315
+ - Add `domainHierarchy` (arXiv-based) to metadata
316
+ - Build nodes + links from processes (domain → subcategory → process)
317
+ - Single HTML page with D3 force-directed graph + zoom/pan
318
+ - **Deliverable**: Working "Whole of Mathematics" graph with our current 98 processes
319
+
320
+ ### Phase 2: Process Links
321
+ - Leaf nodes (processes) link to process HTML (using existing URL pattern)
322
+ - Breadcrumb navigation
323
+ - **Deliverable**: Full drill-down from root to process page
324
+
325
+ ### Phase 3: Polish
326
+ - Tooltips, legend (colors = domains or arXiv codes)
327
+ - Optional "list view" toggle for current level
328
+ - **Deliverable**: Production-ready interactive chart
329
+
330
+ ### Phase 4: Cross-Links (Optional)
331
+ - Use `namedCollections` to draw edges between related processes
332
+ - Or: "Related" panel when hovering a process
333
+ - **Deliverable**: Relationship-aware exploration
334
+
335
+ ---
336
+
337
+ ## Growing With the Collection
338
+
339
+ As we add:
340
+ - **New subcategories** (complex_analysis, landmark_theorems, formal_verification, ai_mathematics): extend `domainHierarchy` and subcategory→arXiv mapping
341
+ - **New processes**: they appear automatically (nodes + links derived from metadata)
342
+ - **Named mathematicians** (`namedCollections`): cross-edges between processes in the same collection; or a *second* view—"By Mathematician"—same graph structure but nodes grouped by collection. Toggle: "By Topic" | "By Mathematician"
343
+ - **New arXiv codes**: add to `domainHierarchy`; graph reflows
344
+
345
+ The chart is **always generated from metadata**—no manual diagram maintenance.
346
+
347
+ ---
348
+
349
+ ## Alternative: "Map" Metaphor (Future Enhancement)
350
+
351
+ For a more geographic feel:
352
+ - **Continents** = domains (irregular shapes, not rectangles)
353
+ - **Countries** = subcategories
354
+ - **Cities** = processes (dots or small regions)
355
+ - Layout: Voronoi tessellation or force-directed placement with "gravity" to keep siblings near each other
356
+ - Could use **MapLibre** or **Leaflet** with a custom "projection" that maps our hierarchy to 2D—playful and memorable
357
+
358
+ ---
359
+
360
+ ## Summary
361
+
362
+ | Aspect | Choice |
363
+ |--------|--------|
364
+ | **Visualization** | D3 force-directed graph (primary) |
365
+ | **Domain taxonomy** | arXiv math.XX (math.AC, math.NT, etc.) |
366
+ | **Data** | Nodes + links derived from metadata + `domainHierarchy` |
367
+ | **Levels** | 3: Domain → Subcategory → Process |
368
+ | **Edges** | Tree (parent→child) + optional cross-links (`namedCollections`) |
369
+ | **Interaction** | Zoom, pan, click-to-focus, breadcrumbs |
370
+ | **Leaf action** | Open process HTML page |
371
+ | **Growth** | Add to metadata; chart updates automatically |
372
+ | **Future** | Sunburst, map metaphor—explore later |
373
+
374
+ The "Whole of Mathematics" chart becomes the **entry point** to the database—a node–link visual index that matches our dependency-graph metaphor and scales with the collection.
biology_processes.html CHANGED
@@ -114,15 +114,15 @@
114
  <div class="container">
115
  <h1>Biology Processes - Programming Framework Analysis</h1>
116
 
117
- <div class="glmp-link" style="background: #e8f5e9; padding: 1.5rem; margin: 1.5rem 0; border-left: 4px solid #4caf50; border-radius: 5px;">
118
  <h3>🔗 GLMP (Genome Logic Modeling Project) Connection</h3>
119
- <p>This analysis is based on the comprehensive biological dataset from the <strong>Genome Logic Modeling Project (GLMP)</strong>, which contains 50+ analyzed biological processes across multiple organisms and systems.</p>
120
  <p><strong>GLMP Resources:</strong></p>
121
  <ul>
122
- <li><a href="https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/glmp-database-table.html" target="_blank" style="font-weight: bold; color: #1976d2;">🗄️ GLMP Database Table</a> - Interactive database with all biological processes (opens in new tab)</li>
123
- <li><a href="https://huggingface.co/spaces/garywelz/glmp" target="_blank">GLMP Hugging Face Space</a> - Live demonstration and evidence base (opens in new tab)</li>
124
  </ul>
125
- <p>The GLMP represents the first successful application of the Programming Framework to biological processes, demonstrating how biological systems function as sophisticated computational programs with complex regulatory logic, decision trees, and feedback mechanisms.</p>
126
  </div>
127
 
128
  <p>This document presents representative biological processes analyzed using the Programming Framework methodology. Each process is represented as a computational flowchart with standardized color coding: Red for triggers/inputs, Yellow for structures/objects, Green for processing/operations, Blue for intermediates/states, and Violet for products/outputs. Yellow nodes use black text for optimal readability, while all other colors use white text.</p>
 
114
  <div class="container">
115
  <h1>Biology Processes - Programming Framework Analysis</h1>
116
 
117
+ <div class="glmp-link">
118
  <h3>🔗 GLMP (Genome Logic Modeling Project) Connection</h3>
119
+ <p>This analysis is based on the comprehensive biological dataset from the <strong>Genome Logic Modeling Project (GLMP)</strong>, which contains 297+ analyzed biological processes across multiple organisms and systems.</p>
120
  <p><strong>GLMP Resources:</strong></p>
121
  <ul>
122
+ <li><a href="https://huggingface.co/spaces/garywelz/glmp" target="_blank">GLMP Hugging Face Space</a> - Live demonstration and evidence base</li>
123
+ <li><a href="https://github.com/garywelz/glmp" target="_blank">GLMP GitHub Repository</a> - Complete dataset and methodology</li>
124
  </ul>
125
+ <p>The GLMP represents the most comprehensive biological computing system analysis ever created, demonstrating how biological systems function as sophisticated computational programs with complex regulatory logic, decision trees, and feedback mechanisms.</p>
126
  </div>
127
 
128
  <p>This document presents representative biological processes analyzed using the Programming Framework methodology. Each process is represented as a computational flowchart with standardized color coding: Red for triggers/inputs, Yellow for structures/objects, Green for processing/operations, Blue for intermediates/states, and Violet for products/outputs. Yellow nodes use black text for optimal readability, while all other colors use white text.</p>
chemistry-database-table.html DELETED
@@ -1,545 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Chemistry Processes Database</title>
7
- <style>
8
- body {
9
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
10
- margin: 0;
11
- padding: 20px;
12
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
13
- min-height: 100vh;
14
- }
15
-
16
- .container {
17
- max-width: 1400px;
18
- margin: 0 auto;
19
- background: white;
20
- border-radius: 15px;
21
- box-shadow: 0 20px 40px rgba(0,0,0,0.1);
22
- overflow: hidden;
23
- }
24
-
25
- .header {
26
- background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
27
- color: white;
28
- padding: 30px;
29
- text-align: center;
30
- }
31
-
32
- .header h1 {
33
- margin: 0;
34
- font-size: 2.5em;
35
- font-weight: 300;
36
- }
37
-
38
- .header p {
39
- margin: 10px 0 0 0;
40
- opacity: 0.8;
41
- font-size: 1.1em;
42
- }
43
-
44
- .stats-grid {
45
- display: grid;
46
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
47
- gap: 20px;
48
- padding: 30px;
49
- background: #f8f9fa;
50
- }
51
-
52
- .stat-card {
53
- background: white;
54
- padding: 20px;
55
- border-radius: 10px;
56
- text-align: center;
57
- box-shadow: 0 5px 15px rgba(0,0,0,0.08);
58
- border-left: 4px solid #e74c3c;
59
- }
60
-
61
- .stat-number {
62
- font-size: 2.5em;
63
- font-weight: bold;
64
- color: #2c3e50;
65
- margin: 0;
66
- }
67
-
68
- .stat-label {
69
- color: #7f8c8d;
70
- font-size: 0.9em;
71
- margin: 5px 0 0 0;
72
- }
73
-
74
- .table-container {
75
- padding: 30px;
76
- overflow-x: auto;
77
- }
78
-
79
- .table-header {
80
- background: #c0392b;
81
- color: white;
82
- padding: 20px;
83
- margin: -30px -30px 20px -30px;
84
- }
85
-
86
- .table-header h2 {
87
- margin: 0;
88
- font-size: 1.8em;
89
- font-weight: 300;
90
- }
91
-
92
- table {
93
- width: 100%;
94
- border-collapse: collapse;
95
- margin-top: 20px;
96
- font-size: 0.9em;
97
- }
98
-
99
- th, td {
100
- padding: 12px 8px;
101
- text-align: left;
102
- border-bottom: 1px solid #ddd;
103
- }
104
-
105
- th {
106
- background: #ecf0f1;
107
- font-weight: 600;
108
- color: #2c3e50;
109
- position: sticky;
110
- top: 0;
111
- cursor: pointer;
112
- }
113
-
114
- th:hover {
115
- background: #d5dbdb;
116
- }
117
-
118
- tr:hover {
119
- background: #f8f9fa;
120
- }
121
-
122
- .process-name {
123
- font-weight: 600;
124
- color: #2c3e50;
125
- max-width: 300px;
126
- }
127
-
128
- .process-name a {
129
- color: #e74c3c;
130
- text-decoration: none;
131
- }
132
-
133
- .process-name a:hover {
134
- text-decoration: underline;
135
- }
136
-
137
- .subcategory {
138
- background: #fde8e8;
139
- padding: 4px 8px;
140
- border-radius: 4px;
141
- font-size: 0.8em;
142
- color: #c0392b;
143
- }
144
-
145
- .complexity {
146
- padding: 4px 8px;
147
- border-radius: 4px;
148
- font-size: 0.8em;
149
- font-weight: 600;
150
- }
151
-
152
- .complexity.low {
153
- background: #d5f4e6;
154
- color: #27ae60;
155
- }
156
-
157
- .complexity.medium {
158
- background: #fff3cd;
159
- color: #856404;
160
- }
161
-
162
- .complexity.detailed, .complexity.high {
163
- background: #fadbd8;
164
- color: #e74c3c;
165
- }
166
-
167
- .number {
168
- text-align: center;
169
- font-weight: 600;
170
- }
171
-
172
- .loading {
173
- text-align: center;
174
- padding: 50px;
175
- color: #7f8c8d;
176
- }
177
-
178
- .error {
179
- text-align: center;
180
- padding: 50px;
181
- color: #e74c3c;
182
- }
183
-
184
- .refresh-btn {
185
- background: #e74c3c;
186
- color: white;
187
- border: none;
188
- padding: 10px 20px;
189
- border-radius: 5px;
190
- cursor: pointer;
191
- font-size: 0.9em;
192
- margin: 10px;
193
- }
194
-
195
- .refresh-btn:hover {
196
- background: #c0392b;
197
- }
198
-
199
- .breakdown {
200
- padding: 30px;
201
- background: #f8f9fa;
202
- border-top: 1px solid #ecf0f1;
203
- }
204
-
205
- .breakdown h3 {
206
- color: #2c3e50;
207
- margin-bottom: 15px;
208
- }
209
-
210
- .breakdown-grid {
211
- display: grid;
212
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
213
- gap: 20px;
214
- }
215
-
216
- .breakdown-card {
217
- background: white;
218
- padding: 20px;
219
- border-radius: 8px;
220
- box-shadow: 0 2px 10px rgba(0,0,0,0.05);
221
- }
222
-
223
- .breakdown-item {
224
- display: flex;
225
- justify-content: space-between;
226
- padding: 8px 0;
227
- border-bottom: 1px solid #ecf0f1;
228
- }
229
-
230
- .breakdown-item:last-child {
231
- border-bottom: none;
232
- }
233
-
234
- .breakdown-label {
235
- color: #7f8c8d;
236
- }
237
-
238
- .breakdown-count {
239
- font-weight: 600;
240
- color: #2c3e50;
241
- }
242
-
243
- .color-legend {
244
- padding: 20px;
245
- background: #f8f9fa;
246
- border-top: 1px solid #ecf0f1;
247
- }
248
-
249
- .color-legend h3 {
250
- color: #2c3e50;
251
- margin-bottom: 15px;
252
- }
253
-
254
- .color-grid {
255
- display: grid;
256
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
257
- gap: 15px;
258
- }
259
-
260
- .color-item {
261
- display: flex;
262
- align-items: center;
263
- gap: 10px;
264
- padding: 10px;
265
- background: white;
266
- border-radius: 5px;
267
- }
268
-
269
- .color-box {
270
- width: 30px;
271
- height: 30px;
272
- border-radius: 4px;
273
- border: 1px solid #ddd;
274
- }
275
- </style>
276
- </head>
277
- <body>
278
- <div class="container">
279
- <div class="header">
280
- <h1>⚗️ Chemistry Processes Database</h1>
281
- <p>Programming Framework - Interactive Database Analysis</p>
282
- <button class="refresh-btn" onclick="loadData()">🔄 Refresh Data</button>
283
- </div>
284
-
285
- <div id="loading" class="loading">
286
- <h3>Loading chemistry processes database...</h3>
287
- <p>Fetching process data from metadata.json</p>
288
- </div>
289
-
290
- <div id="error" class="error" style="display: none;">
291
- <h3>❌ Error Loading Data</h3>
292
- <p>Could not fetch chemistry processes metadata. Please check your connection and try again.</p>
293
- </div>
294
-
295
- <div id="content" style="display: none;">
296
- <div class="stats-grid" id="statsGrid">
297
- <!-- Stats will be populated here -->
298
- </div>
299
-
300
- <div class="table-container">
301
- <div class="table-header">
302
- <h2>📊 Process Database Table</h2>
303
- <p style="margin: 10px 0 0 0; opacity: 0.8; font-size: 0.9em;">
304
- 💡 Click on any process name to view its interactive flowchart
305
- </p>
306
- </div>
307
- <table id="processTable">
308
- <thead>
309
- <tr>
310
- <th onclick="sortTable(0)">Process Name ↕</th>
311
- <th onclick="sortTable(1)">Subcategory ↕</th>
312
- <th onclick="sortTable(2)">Complexity ↕</th>
313
- <th onclick="sortTable(3)">Nodes ↕</th>
314
- <th onclick="sortTable(4)">Edges ↕</th>
315
- <th onclick="sortTable(5)">AND Gates ↕</th>
316
- <th onclick="sortTable(6)">OR Gates ↕</th>
317
- </tr>
318
- </thead>
319
- <tbody id="tableBody">
320
- <!-- Data will be populated here -->
321
- </tbody>
322
- </table>
323
- </div>
324
-
325
- <div class="breakdown">
326
- <h3>📈 Database Analysis</h3>
327
- <div class="breakdown-grid" id="breakdownGrid">
328
- <!-- Breakdown will be populated here -->
329
- </div>
330
- </div>
331
-
332
- <div class="color-legend">
333
- <h3>🎨 Color Scheme (5-Color System)</h3>
334
- <div class="color-grid">
335
- <div class="color-item">
336
- <div class="color-box" style="background: #ff6b6b;"></div>
337
- <div>
338
- <strong>Red</strong><br>
339
- <small>Triggers & Inputs</small>
340
- </div>
341
- </div>
342
- <div class="color-item">
343
- <div class="color-box" style="background: #ffd43b;"></div>
344
- <div>
345
- <strong>Yellow</strong><br>
346
- <small>Structures & Objects</small>
347
- </div>
348
- </div>
349
- <div class="color-item">
350
- <div class="color-box" style="background: #51cf66;"></div>
351
- <div>
352
- <strong>Green</strong><br>
353
- <small>Processing & Operations</small>
354
- </div>
355
- </div>
356
- <div class="color-item">
357
- <div class="color-box" style="background: #74c0fc;"></div>
358
- <div>
359
- <strong>Blue</strong><br>
360
- <small>Intermediates & States</small>
361
- </div>
362
- </div>
363
- <div class="color-item">
364
- <div class="color-box" style="background: #b197fc;"></div>
365
- <div>
366
- <strong>Violet</strong><br>
367
- <small>Products & Outputs</small>
368
- </div>
369
- </div>
370
- </div>
371
- </div>
372
- </div>
373
- </div>
374
-
375
- <script>
376
- // Determine metadata URL based on where this file is hosted
377
- const METADATA_URL = window.location.hostname.includes('storage.googleapis.com')
378
- ? 'https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/chemistry-processes-database/metadata.json'
379
- : (window.location.hostname.includes('huggingface.co'))
380
- ? './chemistry-processes-database/metadata.json'
381
- : './chemistry-processes-database/metadata.json';
382
-
383
- let currentSortColumn = -1;
384
- let sortDirection = 1;
385
- let processes = [];
386
-
387
- async function loadData() {
388
- console.log('🔄 Starting data load from:', METADATA_URL);
389
- document.getElementById('loading').style.display = 'block';
390
- document.getElementById('error').style.display = 'none';
391
- document.getElementById('content').style.display = 'none';
392
-
393
- try {
394
- const response = await fetch(METADATA_URL);
395
- if (!response.ok) {
396
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
397
- }
398
-
399
- const data = await response.json();
400
- console.log('✅ Data loaded successfully:', data.totalProcesses, 'processes');
401
-
402
- processes = data.processes || [];
403
- populateData(data);
404
-
405
- document.getElementById('loading').style.display = 'none';
406
- document.getElementById('content').style.display = 'block';
407
-
408
- } catch (error) {
409
- console.error('❌ Error loading data:', error);
410
- document.getElementById('loading').style.display = 'none';
411
- document.getElementById('error').style.display = 'block';
412
- document.getElementById('error').innerHTML = `
413
- <h3>❌ Error Loading Data</h3>
414
- <p>Could not fetch chemistry processes metadata.</p>
415
- <p style="font-size: 0.9em; color: #95a5a6; margin-top: 10px;">
416
- Error: ${error.message}
417
- </p>
418
- `;
419
- }
420
- }
421
-
422
- function populateData(data) {
423
- // Populate statistics
424
- const stats = data.statistics || {};
425
- document.getElementById('statsGrid').innerHTML = `
426
- <div class="stat-card">
427
- <div class="stat-number">${data.totalProcesses || 0}</div>
428
- <div class="stat-label">Total Processes</div>
429
- </div>
430
- <div class="stat-card">
431
- <div class="stat-number">${stats.totalNodes || 0}</div>
432
- <div class="stat-label">Total Nodes</div>
433
- </div>
434
- <div class="stat-card">
435
- <div class="stat-number">${stats.totalEdges || 0}</div>
436
- <div class="stat-label">Total Edges</div>
437
- </div>
438
- <div class="stat-card">
439
- <div class="stat-number">${data.subcategories || 0}</div>
440
- <div class="stat-label">Subcategories</div>
441
- </div>
442
- `;
443
-
444
- // Populate table
445
- const tableBody = document.getElementById('tableBody');
446
- tableBody.innerHTML = '';
447
-
448
- const processList = data.processes || [];
449
- processList.forEach(process => {
450
- const row = document.createElement('tr');
451
- // Determine viewer URL based on host
452
- const isGCS = window.location.hostname.includes('storage.googleapis.com');
453
- const isHF = window.location.hostname.includes('huggingface.co');
454
- const viewerUrl = isGCS
455
- ? `https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/chemistry-processes-database/processes/${process.subcategory}/${process.id}.html`
456
- : (isHF)
457
- ? `./chemistry-processes-database/processes/${process.subcategory}/${process.id}.html`
458
- : `./processes/${process.subcategory}/${process.id}.html`;
459
- row.innerHTML = `
460
- <td class="process-name">
461
- <a href="${viewerUrl}" target="_blank">${process.name}</a>
462
- </td>
463
- <td><span class="subcategory">${process.subcategory_name || process.subcategory}</span></td>
464
- <td><span class="complexity ${process.complexity}">${process.complexity}</span></td>
465
- <td class="number">${process.nodes}</td>
466
- <td class="number">${process.edges}</td>
467
- <td class="number">${process.andGates || 0}</td>
468
- <td class="number">${process.orGates || 0}</td>
469
- `;
470
- tableBody.appendChild(row);
471
- });
472
-
473
- // Populate breakdown
474
- const breakdown = {};
475
- processList.forEach(p => {
476
- const subcat = p.subcategory_name || p.subcategory;
477
- breakdown[subcat] = (breakdown[subcat] || 0) + 1;
478
- });
479
-
480
- let breakdownHTML = '<div class="breakdown-card"><h4>Processes by Subcategory</h4>';
481
- Object.entries(breakdown).sort((a, b) => b[1] - a[1]).forEach(([subcat, count]) => {
482
- breakdownHTML += `
483
- <div class="breakdown-item">
484
- <span class="breakdown-label">${subcat}</span>
485
- <span class="breakdown-count">${count}</span>
486
- </div>
487
- `;
488
- });
489
- breakdownHTML += '</div>';
490
-
491
- const complexityBreakdown = {};
492
- processList.forEach(p => {
493
- const comp = p.complexity || 'unknown';
494
- complexityBreakdown[comp] = (complexityBreakdown[comp] || 0) + 1;
495
- });
496
-
497
- breakdownHTML += '<div class="breakdown-card"><h4>Processes by Complexity</h4>';
498
- Object.entries(complexityBreakdown).sort((a, b) => b[1] - a[1]).forEach(([comp, count]) => {
499
- breakdownHTML += `
500
- <div class="breakdown-item">
501
- <span class="breakdown-label">${comp}</span>
502
- <span class="breakdown-count">${count}</span>
503
- </div>
504
- `;
505
- });
506
- breakdownHTML += '</div>';
507
-
508
- document.getElementById('breakdownGrid').innerHTML = breakdownHTML;
509
- }
510
-
511
- function sortTable(column) {
512
- const table = document.getElementById('processTable');
513
- const tbody = table.querySelector('tbody');
514
- const rows = Array.from(tbody.querySelectorAll('tr'));
515
-
516
- if (currentSortColumn === column) {
517
- sortDirection *= -1;
518
- } else {
519
- currentSortColumn = column;
520
- sortDirection = 1;
521
- }
522
-
523
- rows.sort((a, b) => {
524
- const aText = a.cells[column].textContent.trim();
525
- const bText = b.cells[column].textContent.trim();
526
-
527
- // Try to parse as number
528
- const aNum = parseFloat(aText);
529
- const bNum = parseFloat(bText);
530
-
531
- if (!isNaN(aNum) && !isNaN(bNum)) {
532
- return (aNum - bNum) * sortDirection;
533
- }
534
-
535
- return aText.localeCompare(bText) * sortDirection;
536
- });
537
-
538
- rows.forEach(row => tbody.appendChild(row));
539
- }
540
-
541
- // Load data on page load
542
- loadData();
543
- </script>
544
- </body>
545
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
chemistry_examples.html DELETED
@@ -1,609 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Chemistry Examples - Programming Framework Analysis</title>
7
- <style>
8
- body {
9
- font-family: 'Times New Roman', Times, serif, 'Arial Unicode MS';
10
- margin: 0;
11
- background: #ffffff;
12
- color: #000000;
13
- line-height: 1.6;
14
- font-size: 12pt;
15
- }
16
- .container {
17
- max-width: 1000px;
18
- margin: 0 auto;
19
- padding: 1.5rem;
20
- }
21
- h1, h2, h3 {
22
- color: #000000;
23
- margin-top: 1.5rem;
24
- margin-bottom: 0.75rem;
25
- }
26
- h1 {
27
- font-size: 18pt;
28
- text-align: center;
29
- }
30
- h2 {
31
- font-size: 16pt;
32
- border-bottom: 2px solid #000;
33
- padding-bottom: 0.5rem;
34
- }
35
- h3 {
36
- font-size: 14pt;
37
- }
38
- p {
39
- margin-bottom: 1rem;
40
- text-align: justify;
41
- }
42
- .figure {
43
- margin: 1rem 0;
44
- text-align: center;
45
- border: 1px solid #ccc;
46
- padding: 1rem;
47
- background: #f9f9f9;
48
- }
49
- .figure-caption {
50
- margin-top: 1rem;
51
- font-style: italic;
52
- text-align: left;
53
- }
54
- .mermaid {
55
- background: white;
56
- padding: 1rem;
57
- border-radius: 4px;
58
- }
59
- </style>
60
- <script src="https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.min.js"></script>
61
- <script>
62
- mermaid.initialize({
63
- startOnLoad: true,
64
- theme: 'default',
65
- flowchart: {
66
- useMaxWidth: false,
67
- htmlLabels: true,
68
- curve: 'linear',
69
- nodeSpacing: 50,
70
- rankSpacing: 50,
71
- padding: 20
72
- },
73
- themeVariables: {
74
- fontFamily: 'Arial Unicode MS, Arial, sans-serif'
75
- }
76
- });
77
- </script>
78
- </head>
79
- <body>
80
- <div class="container">
81
- <h1>Chemistry Examples - Programming Framework Analysis</h1>
82
-
83
- <p>This document presents chemistry processes analyzed using the Programming Framework methodology. Each process is represented as a computational flowchart with standardized color coding: Red for triggers/inputs, Yellow for structures/objects, Green for processing/operations, Blue for intermediates/states, and Violet for products/outputs. Yellow nodes use black text for optimal readability, while all other colors use white text.</p>
84
-
85
- <h2>1. Catalytic Hydrogenation Process</h2>
86
- <div class="figure">
87
- <div class="mermaid">
88
- graph TD
89
- A[Alkene Substrate] --> B[Substrate Analysis]
90
- C[Hydrogen Gas H₂] --> D[Gas Supply]
91
- E[Catalyst Pt/Pd/Ni] --> F[Catalyst Preparation]
92
-
93
- B --> G[Substrate Purity Check]
94
- D --> H[Gas Pressure Control]
95
- F --> I[Catalyst Activation]
96
-
97
- G --> J[Reaction Vessel Loading]
98
- H --> K[Pressure Regulation]
99
- I --> L[Catalyst Dispersion]
100
-
101
- J --> M[Substrate Adsorption]
102
- K --> N[Hydrogen Dissociation]
103
- L --> O[Active Site Formation]
104
-
105
- M --> P[π-Bond Activation]
106
- N --> Q[H• Radical Formation]
107
- O --> R[Catalytic Surface]
108
-
109
- P --> S[First H Addition]
110
- Q --> T[Hydrogen Transfer]
111
- R --> U[Surface Complex]
112
-
113
- S --> V[Alkyl Intermediate]
114
- T --> W[Second H Addition]
115
- U --> X[Product Desorption]
116
-
117
- V --> Y[Alkane Product]
118
- W --> Z[Complete Hydrogenation]
119
- X --> AA[Catalyst Recovery]
120
-
121
- %% Red: Reactants & Inputs
122
- style A fill:#ff6b6b,color:#fff
123
- style C fill:#ff6b6b,color:#fff
124
- style E fill:#ff6b6b,color:#fff
125
-
126
- %% Yellow: Catalysts & Equipment
127
- style B fill:#ffd43b,color:#000
128
- style D fill:#ffd43b,color:#000
129
- style F fill:#ffd43b,color:#000
130
- style G fill:#ffd43b,color:#000
131
- style H fill:#ffd43b,color:#000
132
- style I fill:#ffd43b,color:#000
133
- style J fill:#ffd43b,color:#000
134
- style K fill:#ffd43b,color:#000
135
- style L fill:#ffd43b,color:#000
136
-
137
- %% Green: Chemical Reactions
138
- style M fill:#51cf66,color:#fff
139
- style N fill:#51cf66,color:#fff
140
- style O fill:#51cf66,color:#fff
141
- style P fill:#51cf66,color:#fff
142
- style Q fill:#51cf66,color:#fff
143
- style R fill:#51cf66,color:#fff
144
- style S fill:#51cf66,color:#fff
145
- style T fill:#51cf66,color:#fff
146
- style U fill:#51cf66,color:#fff
147
- style W fill:#51cf66,color:#fff
148
- style X fill:#51cf66,color:#fff
149
-
150
- %% Blue: Intermediates & States
151
- style V fill:#74c0fc,color:#fff
152
-
153
- %% Violet: Final Products
154
- style Y fill:#b197fc,color:#fff
155
- style Z fill:#b197fc,color:#fff
156
- style AA fill:#b197fc,color:#fff
157
- </div>
158
-
159
- <div style="margin-top: 1rem; display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center;">
160
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
161
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ff6b6b;"></span>Reactants & Catalysts
162
- </div>
163
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
164
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ffd43b;"></span>Reaction Vessels & Equipment
165
- </div>
166
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
167
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#51cf66;"></span>Chemical Reactions & Transformations
168
- </div>
169
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
170
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#74c0fc;"></span>Intermediates
171
- </div>
172
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
173
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#b197fc;"></span>Products
174
- </div>
175
- </div>
176
-
177
- <div class="figure-caption">
178
- <strong>Figure 1.</strong> Catalytic Hydrogenation Process. This chemistry process visualization demonstrates catalytic reaction mechanisms. The flowchart shows reactant inputs, reaction vessels and equipment, chemical reactions and transformations, intermediate species, and final products.
179
- </div>
180
- </div>
181
-
182
- <h2>2. Polymerization Process</h2>
183
- <div class="figure">
184
- <div class="mermaid">
185
- graph TD
186
- %% Initial Setup
187
- %% Input Conditions
188
- A2[Monomers] --> B2[Monomer Analysis]
189
- C2[Initiator] --> D2[Initiator Preparation]
190
- E2[Solvent/Medium] --> F2[Reaction Medium]
191
- %% Reaction Setup
192
- B2 --> G2[Monomer Purity Check]
193
- D2 --> H2[Initiator Activation]
194
- F2 --> I2[Medium Preparation]
195
- %% Initiation
196
- G2 --> J2[Monomer Solution]
197
- H2 --> K2[Radical Formation]
198
- I2 --> L2[Temperature Control]
199
- %% Polymerization Initiation
200
- J2 --> M2[Monomer Concentration]
201
- K2 --> N2[Initiator Decomposition]
202
- L2 --> O2[Reaction Conditions]
203
- %% Propagation
204
- M2 --> P2[Radical Addition]
205
- N2 --> Q2[Chain Initiation]
206
- O2 --> R2[Chain Growth]
207
- %% Chain Growth
208
- P2 --> S2[Monomer Addition]
209
- Q2 --> T2[Active Chain End]
210
- R2 --> U2[Polymer Chain]
211
- %% Termination
212
- S2 --> V2[Chain Propagation]
213
- T2 --> W2[Chain Transfer]
214
- U2 --> X2[Chain Termination]
215
- %% Final Products
216
- V2 --> Y2[Polymer Formation]
217
- W2 --> Z2[Molecular Weight Control]
218
- X2 --> AA2[Reaction Quenching]
219
- %% Process Control
220
- Y2 --> BB2[Polymer Characterization]
221
- Z2 --> CC2[Molecular Weight Analysis]
222
- AA2 --> DD2[Product Isolation]
223
- %% Output
224
- BB2 --> EE2[Polymerization Complete]
225
- CC2 --> FF2[Quality Control]
226
- DD2 --> GG2[Product Recovery]
227
- %% Styling - Chemistry Color Scheme
228
- %% Styling - Biological Color Scheme
229
- style A2 fill:#ff6b6b,color:#fff
230
- style C2 fill:#ff6b6b,color:#fff
231
- style E2 fill:#ff6b6b,color:#fff
232
- style G2 fill:#ffd43b,color:#000
233
- style H2 fill:#ffd43b,color:#000
234
- style I2 fill:#ffd43b,color:#000
235
- style J2 fill:#ffd43b,color:#000
236
- style K2 fill:#ffd43b,color:#000
237
- style L2 fill:#ffd43b,color:#000
238
- style M2 fill:#51cf66,color:#fff
239
- style N2 fill:#51cf66,color:#fff
240
- style O2 fill:#51cf66,color:#fff
241
- style P2 fill:#51cf66,color:#fff
242
- style Q2 fill:#51cf66,color:#fff
243
- style R2 fill:#51cf66,color:#fff
244
- style S2 fill:#51cf66,color:#fff
245
- style T2 fill:#51cf66,color:#fff
246
- style U2 fill:#51cf66,color:#fff
247
- style V2 fill:#51cf66,color:#fff
248
- style W2 fill:#51cf66,color:#fff
249
- style X2 fill:#51cf66,color:#fff
250
- style B2 fill:#74c0fc,color:#fff
251
- style D2 fill:#74c0fc,color:#fff
252
- style F2 fill:#74c0fc,color:#fff
253
- style Y2 fill:#74c0fc,color:#fff
254
- style Z2 fill:#74c0fc,color:#fff
255
- style AA2 fill:#74c0fc,color:#fff
256
- style BB2 fill:#74c0fc,color:#fff
257
- style CC2 fill:#74c0fc,color:#fff
258
- style DD2 fill:#74c0fc,color:#fff
259
- style EE2 fill:#b197fc,color:#fff
260
- style FF2 fill:#b197fc,color:#fff
261
- style GG2 fill:#b197fc,color:#fff
262
- </div>
263
-
264
- <div style="margin-top: 1rem; display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center;">
265
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
266
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ff6b6b;"></span>Reactants & Initiators
267
- </div>
268
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
269
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ffd43b;"></span>Reaction Vessels & Equipment
270
- </div>
271
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
272
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#51cf66;"></span>Polymerization Reactions
273
- </div>
274
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
275
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#74c0fc;"></span>Intermediates
276
- </div>
277
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
278
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#b197fc;"></span>Products
279
- </div>
280
- </div>
281
-
282
- <div class="figure-caption">
283
- <strong>Figure 2.</strong> Polymerization Process. This chemistry process visualization demonstrates polymer synthesis mechanisms. The flowchart shows monomer inputs, reaction vessels and equipment, polymerization reactions, intermediate species, and final polymer products.
284
- </div>
285
- </div>
286
-
287
- <h2>3. Acid-Base Titration Process</h2>
288
- <div class="figure">
289
- <div class="mermaid">
290
- graph TD
291
- %% Initial Setup
292
- %% Input Conditions
293
- A3[Acid Solution] --> B3[Acid Analysis]
294
- C3[Base Solution] --> D3[Base Analysis]
295
- E3[Indicator] --> F3[Indicator Selection]
296
- %% Solution Preparation
297
- B3 --> G3[Acid Concentration]
298
- D3 --> H3[Base Concentration]
299
- F3 --> I3[Indicator Preparation]
300
- %% Titration Setup
301
- G3 --> J3[Acid in Burette]
302
- H3 --> K3[Base in Flask]
303
- I3 --> L3[Indicator Addition]
304
- %% Titration Process
305
- J3 --> M3[Initial pH Measurement]
306
- K3 --> N3[Base Volume Measurement]
307
- L3 --> O3[Color Change Detection]
308
- %% Acid-Base Reaction
309
- M3 --> P3[Acid Addition]
310
- N3 --> Q3[Base Consumption]
311
- O3 --> R3[Equivalence Point]
312
- %% pH Changes
313
- P3 --> S3[H⁺ + OH⁻ → H₂O]
314
- Q3 --> T3[Neutralization Reaction]
315
- R3 --> U3[Stoichiometric Point]
316
- %% Endpoint Detection
317
- S3 --> V3[pH Monitoring]
318
- T3 --> W3[Conductivity Changes]
319
- U3 --> X3[Indicator Color Change]
320
- %% Final Results
321
- V3 --> Y3[Equivalence Point pH]
322
- W3 --> Z3[Conductivity Minimum]
323
- X3 --> AA3[Endpoint Detection]
324
- %% Calculations
325
- Y3 --> BB3[Concentration Calculation]
326
- Z3 --> CC3[Volume Measurement]
327
- AA3 --> DD3[Stoichiometric Analysis]
328
- %% Output
329
- BB3 --> EE3[Titration Complete]
330
- CC3 --> FF3[Concentration Determined]
331
- DD3 --> GG3[Analysis Results]
332
- %% Styling - Chemistry Color Scheme
333
- %% Styling - Biological Color Scheme
334
- style A3 fill:#ff6b6b,color:#fff
335
- style C3 fill:#ff6b6b,color:#fff
336
- style E3 fill:#ff6b6b,color:#fff
337
- style G3 fill:#ffd43b,color:#000
338
- style H3 fill:#ffd43b,color:#000
339
- style I3 fill:#ffd43b,color:#000
340
- style J3 fill:#ffd43b,color:#000
341
- style K3 fill:#ffd43b,color:#000
342
- style L3 fill:#ffd43b,color:#000
343
- style M3 fill:#51cf66,color:#fff
344
- style N3 fill:#51cf66,color:#fff
345
- style O3 fill:#51cf66,color:#fff
346
- style P3 fill:#51cf66,color:#fff
347
- style Q3 fill:#51cf66,color:#fff
348
- style R3 fill:#51cf66,color:#fff
349
- style S3 fill:#51cf66,color:#fff
350
- style T3 fill:#51cf66,color:#fff
351
- style U3 fill:#51cf66,color:#fff
352
- style V3 fill:#51cf66,color:#fff
353
- style W3 fill:#51cf66,color:#fff
354
- style X3 fill:#51cf66,color:#fff
355
- style B3 fill:#74c0fc,color:#fff
356
- style D3 fill:#74c0fc,color:#fff
357
- style F3 fill:#74c0fc,color:#fff
358
- style Y3 fill:#74c0fc,color:#fff
359
- style Z3 fill:#74c0fc,color:#fff
360
- style AA3 fill:#74c0fc,color:#fff
361
- style BB3 fill:#74c0fc,color:#fff
362
- style CC3 fill:#74c0fc,color:#fff
363
- style DD3 fill:#74c0fc,color:#fff
364
- style EE3 fill:#b197fc,color:#fff
365
- style FF3 fill:#b197fc,color:#fff
366
- style GG3 fill:#b197fc,color:#fff
367
- </div>
368
-
369
- <div style="margin-top: 1rem; display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center;">
370
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
371
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ff6b6b;"></span>Reactants & Indicators
372
- </div>
373
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
374
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ffd43b;"></span>Titration Equipment
375
- </div>
376
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
377
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#51cf66;"></span>Neutralization Reactions
378
- </div>
379
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
380
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#74c0fc;"></span>Intermediates
381
- </div>
382
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
383
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#b197fc;"></span>Products
384
- </div>
385
- </div>
386
-
387
- <div class="figure-caption">
388
- <strong>Figure 3.</strong> Acid-Base Titration Process. This chemistry process visualization demonstrates analytical chemistry procedures. The flowchart shows reactant inputs, titration equipment, neutralization reactions, intermediate measurements, and final analytical results.
389
- </div>
390
- </div>
391
-
392
- <h2>4. Electrochemical Cell Process</h2>
393
- <div class="figure">
394
- <div class="mermaid">
395
- graph TD
396
- %% Initial Setup
397
- %% Input Conditions
398
- A4[Anode Material] --> B4[Anode Analysis]
399
- C4[Cathode Material] --> D4[Cathode Analysis]
400
- E4[Electrolyte] --> F4[Electrolyte Preparation]
401
- %% Cell Setup
402
- B4 --> G4[Anode Preparation]
403
- D4 --> H4[Cathode Preparation]
404
- F4 --> I4[Electrolyte Solution]
405
- %% Electrochemical Setup
406
- G4 --> J4[Anode Oxidation]
407
- H4 --> K4[Cathode Reduction]
408
- I4 --> L4[Ion Conduction]
409
- %% Redox Reactions
410
- J4 --> M4[Electron Release]
411
- K4 --> N4[Electron Acceptance]
412
- L4 --> O4[Ion Transport]
413
- %% Current Flow
414
- M4 --> P4[Oxidation Half-Reaction]
415
- N4 --> Q4[Reduction Half-Reaction]
416
- O4 --> R4[Salt Bridge]
417
- %% Cell Operation
418
- P4 --> S4[Anode → Cathode]
419
- Q4 --> T4[Electron Flow]
420
- R4 --> U4[Ion Migration]
421
- %% Energy Production
422
- S4 --> V4[Cell Potential]
423
- T4 --> W4[Current Generation]
424
- U4 --> X4[Charge Balance]
425
- %% Performance
426
- V4 --> Y4[Voltage Measurement]
427
- W4 --> Z4[Current Measurement]
428
- X4 --> AA4[Efficiency Calculation]
429
- %% Output
430
- Y4 --> BB4[Cell Performance]
431
- Z4 --> CC4[Power Output]
432
- AA4 --> DD4[Energy Conversion]
433
- %% Final Results
434
- BB4 --> EE4[Electrochemical Cell Active]
435
- CC4 --> FF4[Electrical Energy Produced]
436
- DD4 --> GG4[Conversion Efficiency]
437
- %% Styling - Chemistry Color Scheme
438
- %% Styling - Biological Color Scheme
439
- style A4 fill:#ff6b6b,color:#fff
440
- style C4 fill:#ff6b6b,color:#fff
441
- style E4 fill:#ff6b6b,color:#fff
442
- style G4 fill:#ffd43b,color:#000
443
- style H4 fill:#ffd43b,color:#000
444
- style I4 fill:#ffd43b,color:#000
445
- style J4 fill:#ffd43b,color:#000
446
- style K4 fill:#ffd43b,color:#000
447
- style L4 fill:#ffd43b,color:#000
448
- style M4 fill:#51cf66,color:#fff
449
- style N4 fill:#51cf66,color:#fff
450
- style O4 fill:#51cf66,color:#fff
451
- style P4 fill:#51cf66,color:#fff
452
- style Q4 fill:#51cf66,color:#fff
453
- style R4 fill:#51cf66,color:#fff
454
- style S4 fill:#51cf66,color:#fff
455
- style T4 fill:#51cf66,color:#fff
456
- style U4 fill:#51cf66,color:#fff
457
- style V4 fill:#51cf66,color:#fff
458
- style W4 fill:#51cf66,color:#fff
459
- style X4 fill:#51cf66,color:#fff
460
- style B4 fill:#74c0fc,color:#fff
461
- style D4 fill:#74c0fc,color:#fff
462
- style F4 fill:#74c0fc,color:#fff
463
- style Y4 fill:#74c0fc,color:#fff
464
- style Z4 fill:#74c0fc,color:#fff
465
- style AA4 fill:#74c0fc,color:#fff
466
- style BB4 fill:#74c0fc,color:#fff
467
- style CC4 fill:#74c0fc,color:#fff
468
- style DD4 fill:#74c0fc,color:#fff
469
- style EE4 fill:#b197fc,color:#fff
470
- style FF4 fill:#b197fc,color:#fff
471
- style GG4 fill:#b197fc,color:#fff
472
- </div>
473
-
474
- <div style="margin-top: 1rem; display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center;">
475
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
476
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ff6b6b;"></span>Electrodes & Electrolyte
477
- </div>
478
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
479
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ffd43b;"></span>Cell Components
480
- </div>
481
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
482
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#51cf66;"></span>Redox Reactions
483
- </div>
484
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
485
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#74c0fc;"></span>Intermediates
486
- </div>
487
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
488
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#b197fc;"></span>Products
489
- </div>
490
- </div>
491
-
492
- <div class="figure-caption">
493
- <strong>Figure 4.</strong> Electrochemical Cell Process. This chemistry process visualization demonstrates electrochemical energy conversion. The flowchart shows electrode inputs, cell components, redox reactions, intermediate processes, and final electrical energy output.
494
- </div>
495
- </div>
496
-
497
- <h2>5. Distillation Process</h2>
498
- <div class="figure">
499
- <div class="mermaid">
500
- graph TD
501
- %% Initial Setup
502
- %% Input Conditions
503
- A5[Mixture] --> B5[Mixture Analysis]
504
- C5[Heat Source] --> D5[Heat Supply]
505
- E5[Distillation Apparatus] --> F5[Equipment Setup]
506
- %% Process Setup
507
- B5 --> G5[Component Analysis]
508
- D5 --> H5[Temperature Control]
509
- F5 --> I5[Apparatus Assembly]
510
- %% Heating Process
511
- G5 --> J5[Mixture Loading]
512
- H5 --> K5[Heat Application]
513
- I5 --> L5[Vapor Formation]
514
- %% Vaporization
515
- J5 --> M5[Component Separation]
516
- K5 --> N5[Boiling Point Differences]
517
- L5 --> O5[Vapor Phase]
518
- %% Distillation
519
- M5 --> P5[Fractional Distillation]
520
- N5 --> Q5[Temperature Gradient]
521
- O5 --> R5[Condensation]
522
- %% Separation
523
- P5 --> S5[Component Collection]
524
- Q5 --> T5[Fraction Separation]
525
- R5 --> U5[Liquid Recovery]
526
- %% Product Collection
527
- S5 --> V5[High Boiling Point]
528
- T5 --> W5[Medium Boiling Point]
529
- U5 --> X5[Low Boiling Point]
530
- %% Process Control
531
- V5 --> Y5[Fraction Analysis]
532
- W5 --> Z5[Purity Check]
533
- X5 --> AA5[Yield Calculation]
534
- %% Output
535
- Y5 --> BB5[Distillation Complete]
536
- Z5 --> CC5[Component Separation]
537
- AA5 --> DD5[Process Efficiency]
538
- %% Final Results
539
- BB5 --> EE5[Purified Components]
540
- CC5 --> FF5[Separation Achieved]
541
- DD5 --> GG5[Process Optimization]
542
- %% Styling - Chemistry Color Scheme
543
- %% Styling - Biological Color Scheme
544
- style A5 fill:#ff6b6b,color:#fff
545
- style C5 fill:#ff6b6b,color:#fff
546
- style E5 fill:#ff6b6b,color:#fff
547
- style G5 fill:#ffd43b,color:#000
548
- style H5 fill:#ffd43b,color:#000
549
- style I5 fill:#ffd43b,color:#000
550
- style J5 fill:#ffd43b,color:#000
551
- style K5 fill:#ffd43b,color:#000
552
- style L5 fill:#ffd43b,color:#000
553
- style M5 fill:#51cf66,color:#fff
554
- style N5 fill:#51cf66,color:#fff
555
- style O5 fill:#51cf66,color:#fff
556
- style P5 fill:#51cf66,color:#fff
557
- style Q5 fill:#51cf66,color:#fff
558
- style R5 fill:#51cf66,color:#fff
559
- style S5 fill:#51cf66,color:#fff
560
- style T5 fill:#51cf66,color:#fff
561
- style U5 fill:#51cf66,color:#fff
562
- style V5 fill:#51cf66,color:#fff
563
- style W5 fill:#51cf66,color:#fff
564
- style X5 fill:#51cf66,color:#fff
565
- style B5 fill:#74c0fc,color:#fff
566
- style D5 fill:#74c0fc,color:#fff
567
- style F5 fill:#74c0fc,color:#fff
568
- style Y5 fill:#74c0fc,color:#fff
569
- style Z5 fill:#74c0fc,color:#fff
570
- style AA5 fill:#74c0fc,color:#fff
571
- style BB5 fill:#74c0fc,color:#fff
572
- style CC5 fill:#74c0fc,color:#fff
573
- style DD5 fill:#74c0fc,color:#fff
574
- style EE5 fill:#b197fc,color:#fff
575
- style FF5 fill:#b197fc,color:#fff
576
- style GG5 fill:#b197fc,color:#fff
577
- </div>
578
-
579
- <div style="margin-top: 1rem; display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center;">
580
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
581
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ff6b6b;"></span>Mixture & Heat Source
582
- </div>
583
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
584
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#ffd43b;"></span>Distillation Equipment
585
- </div>
586
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
587
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#51cf66;"></span>Phase Separation Processes
588
- </div>
589
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
590
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#74c0fc;"></span>Intermediates
591
- </div>
592
- <div style="display:inline-flex; align-items:center; gap:.5rem; padding:.25rem .5rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.08); background:#fff;">
593
- <span style="width: 12px; height: 12px; border-radius: 2px; border:1px solid rgba(0,0,0,.15); background:#b197fc;"></span>Products
594
- </div>
595
- </div>
596
-
597
- <div class="figure-caption">
598
- <strong>Figure 5.</strong> Distillation Process. This chemistry process visualization demonstrates separation techniques. The flowchart shows mixture inputs, distillation equipment, phase separation processes, intermediate fractions, and final purified components.
599
- </div>
600
- </div>
601
-
602
- <p><strong>Generated using the Programming Framework methodology</strong></p>
603
-
604
- <p>This collection demonstrates the computational nature of chemical processes and systems</p>
605
-
606
- <p>Each flowchart preserves maximum detail through optimized Mermaid configuration</p>
607
- </div>
608
- </body>
609
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
computer-science-database-table.html DELETED
@@ -1,543 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Computer Science Processes Database</title>
7
- <style>
8
- body {
9
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
10
- margin: 0;
11
- padding: 20px;
12
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
13
- min-height: 100vh;
14
- }
15
-
16
- .container {
17
- max-width: 1400px;
18
- margin: 0 auto;
19
- background: white;
20
- border-radius: 15px;
21
- box-shadow: 0 20px 40px rgba(0,0,0,0.1);
22
- overflow: hidden;
23
- }
24
-
25
- .header {
26
- background: linear-gradient(135deg, #9b59b6 0%, #9b59b6 100%);
27
- color: white;
28
- padding: 30px;
29
- text-align: center;
30
- }
31
-
32
- .header h1 {
33
- margin: 0;
34
- font-size: 2.5em;
35
- font-weight: 300;
36
- }
37
-
38
- .header p {
39
- margin: 10px 0 0 0;
40
- opacity: 0.8;
41
- font-size: 1.1em;
42
- }
43
-
44
- .stats-grid {
45
- display: grid;
46
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
47
- gap: 20px;
48
- padding: 30px;
49
- background: #f8f9fa;
50
- }
51
-
52
- .stat-card {
53
- background: white;
54
- padding: 20px;
55
- border-radius: 10px;
56
- text-align: center;
57
- box-shadow: 0 5px 15px rgba(0,0,0,0.08);
58
- border-left: 4px solid #9b59b6;
59
- }
60
-
61
- .stat-number {
62
- font-size: 2.5em;
63
- font-weight: bold;
64
- color: #2c3e50;
65
- margin: 0;
66
- }
67
-
68
- .stat-label {
69
- color: #7f8c8d;
70
- font-size: 0.9em;
71
- margin: 5px 0 0 0;
72
- }
73
-
74
- .table-container {
75
- padding: 30px;
76
- overflow-x: auto;
77
- }
78
-
79
- .table-header {
80
- background: #9b59b6;
81
- color: white;
82
- padding: 20px;
83
- margin: -30px -30px 20px -30px;
84
- }
85
-
86
- .table-header h2 {
87
- margin: 0;
88
- font-size: 1.8em;
89
- font-weight: 300;
90
- }
91
-
92
- table {
93
- width: 100%;
94
- border-collapse: collapse;
95
- margin-top: 20px;
96
- font-size: 0.9em;
97
- }
98
-
99
- th, td {
100
- padding: 12px 8px;
101
- text-align: left;
102
- border-bottom: 1px solid #ddd;
103
- }
104
-
105
- th {
106
- background: #ecf0f1;
107
- font-weight: 600;
108
- color: #2c3e50;
109
- position: sticky;
110
- top: 0;
111
- cursor: pointer;
112
- }
113
-
114
- th:hover {
115
- background: #d5dbdb;
116
- }
117
-
118
- tr:hover {
119
- background: #f8f9fa;
120
- }
121
-
122
- .process-name {
123
- font-weight: 600;
124
- color: #2c3e50;
125
- max-width: 300px;
126
- }
127
-
128
- .process-name a {
129
- color: #9b59b6;
130
- text-decoration: none;
131
- }
132
-
133
- .process-name a:hover {
134
- text-decoration: underline;
135
- }
136
-
137
- .subcategory {
138
- background: #fde8e8;
139
- padding: 4px 8px;
140
- border-radius: 4px;
141
- font-size: 0.8em;
142
- color: #9b59b6;
143
- }
144
-
145
- .complexity {
146
- padding: 4px 8px;
147
- border-radius: 4px;
148
- font-size: 0.8em;
149
- font-weight: 600;
150
- }
151
-
152
- .complexity.low {
153
- background: #d5f4e6;
154
- color: #27ae60;
155
- }
156
-
157
- .complexity.medium {
158
- background: #fff3cd;
159
- color: #856404;
160
- }
161
-
162
- .complexity.detailed, .complexity.high {
163
- background: #fadbd8;
164
- color: #9b59b6;
165
- }
166
-
167
- .number {
168
- text-align: center;
169
- font-weight: 600;
170
- }
171
-
172
- .loading {
173
- text-align: center;
174
- padding: 50px;
175
- color: #7f8c8d;
176
- }
177
-
178
- .error {
179
- text-align: center;
180
- padding: 50px;
181
- color: #9b59b6;
182
- }
183
-
184
- .refresh-btn {
185
- background: #9b59b6;
186
- color: white;
187
- border: none;
188
- padding: 10px 20px;
189
- border-radius: 5px;
190
- cursor: pointer;
191
- font-size: 0.9em;
192
- margin: 10px;
193
- }
194
-
195
- .refresh-btn:hover {
196
- background: #9b59b6;
197
- }
198
-
199
- .breakdown {
200
- padding: 30px;
201
- background: #f8f9fa;
202
- border-top: 1px solid #ecf0f1;
203
- }
204
-
205
- .breakdown h3 {
206
- color: #2c3e50;
207
- margin-bottom: 15px;
208
- }
209
-
210
- .breakdown-grid {
211
- display: grid;
212
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
213
- gap: 20px;
214
- }
215
-
216
- .breakdown-card {
217
- background: white;
218
- padding: 20px;
219
- border-radius: 8px;
220
- box-shadow: 0 2px 10px rgba(0,0,0,0.05);
221
- }
222
-
223
- .breakdown-item {
224
- display: flex;
225
- justify-content: space-between;
226
- padding: 8px 0;
227
- border-bottom: 1px solid #ecf0f1;
228
- }
229
-
230
- .breakdown-item:last-child {
231
- border-bottom: none;
232
- }
233
-
234
- .breakdown-label {
235
- color: #7f8c8d;
236
- }
237
-
238
- .breakdown-count {
239
- font-weight: 600;
240
- color: #2c3e50;
241
- }
242
-
243
- .color-legend {
244
- padding: 20px;
245
- background: #f8f9fa;
246
- border-top: 1px solid #ecf0f1;
247
- }
248
-
249
- .color-legend h3 {
250
- color: #2c3e50;
251
- margin-bottom: 15px;
252
- }
253
-
254
- .color-grid {
255
- display: grid;
256
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
257
- gap: 15px;
258
- }
259
-
260
- .color-item {
261
- display: flex;
262
- align-items: center;
263
- gap: 10px;
264
- padding: 10px;
265
- background: white;
266
- border-radius: 5px;
267
- }
268
-
269
- .color-box {
270
- width: 30px;
271
- height: 30px;
272
- border-radius: 4px;
273
- border: 1px solid #ddd;
274
- }
275
- </style>
276
- </head>
277
- <body>
278
- <div class="container">
279
- <div class="header">
280
- <h1>💻 Computer Science Processes Database</h1>
281
- <p>Programming Framework - Interactive Database Analysis</p>
282
- <button class="refresh-btn" onclick="loadData()">🔄 Refresh Data</button>
283
- </div>
284
-
285
- <div id="loading" class="loading">
286
- <h3>Loading computer_science processes database...</h3>
287
- <p>Fetching process data from metadata.json</p>
288
- </div>
289
-
290
- <div id="error" class="error" style="display: none;">
291
- <h3>❌ Error Loading Data</h3>
292
- <p>Could not fetch computer_science processes metadata. Please check your connection and try again.</p>
293
- </div>
294
-
295
- <div id="content" style="display: none;">
296
- <div class="stats-grid" id="statsGrid">
297
- <!-- Stats will be populated here -->
298
- </div>
299
-
300
- <div class="table-container">
301
- <div class="table-header">
302
- <h2>📊 Process Database Table</h2>
303
- <p style="margin: 10px 0 0 0; opacity: 0.8; font-size: 0.9em;">
304
- 💡 Click on any process name to view its interactive flowchart
305
- </p>
306
- </div>
307
- <table id="processTable">
308
- <thead>
309
- <tr>
310
- <th onclick="sortTable(0)">Process Name ↕</th>
311
- <th onclick="sortTable(1)">Subcategory ↕</th>
312
- <th onclick="sortTable(2)">Complexity ↕</th>
313
- <th onclick="sortTable(3)">Nodes ↕</th>
314
- <th onclick="sortTable(4)">Edges ↕</th>
315
- <th onclick="sortTable(5)">AND Gates ↕</th>
316
- <th onclick="sortTable(6)">OR Gates ↕</th>
317
- </tr>
318
- </thead>
319
- <tbody id="tableBody">
320
- <!-- Data will be populated here -->
321
- </tbody>
322
- </table>
323
- </div>
324
-
325
- <div class="breakdown">
326
- <h3>📈 Database Analysis</h3>
327
- <div class="breakdown-grid" id="breakdownGrid">
328
- <!-- Breakdown will be populated here -->
329
- </div>
330
- </div>
331
-
332
- <div class="color-legend">
333
- <h3>🎨 Color Scheme (5-Color System)</h3>
334
- <div class="color-grid">
335
- <div class="color-item">
336
- <div class="color-box" style="background: #ff6b6b;"></div>
337
- <div>
338
- <strong>Red</strong><br>
339
- <small>Triggers & Inputs</small>
340
- </div>
341
- </div>
342
- <div class="color-item">
343
- <div class="color-box" style="background: #ffd43b;"></div>
344
- <div>
345
- <strong>Yellow</strong><br>
346
- <small>Structures & Objects</small>
347
- </div>
348
- </div>
349
- <div class="color-item">
350
- <div class="color-box" style="background: #51cf66;"></div>
351
- <div>
352
- <strong>Green</strong><br>
353
- <small>Processing & Operations</small>
354
- </div>
355
- </div>
356
- <div class="color-item">
357
- <div class="color-box" style="background: #74c0fc;"></div>
358
- <div>
359
- <strong>Blue</strong><br>
360
- <small>Intermediates & States</small>
361
- </div>
362
- </div>
363
- <div class="color-item">
364
- <div class="color-box" style="background: #b197fc;"></div>
365
- <div>
366
- <strong>Violet</strong><br>
367
- <small>Products & Outputs</small>
368
- </div>
369
- </div>
370
- </div>
371
- </div>
372
- </div>
373
- </div>
374
-
375
- <script>
376
- // Determine metadata URL based on where this file is hosted
377
- const METADATA_URL = window.location.hostname.includes('storage.googleapis.com')
378
- ? 'https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/computer-science-processes-database/metadata.json'
379
- : (window.location.hostname.includes('huggingface.co'))
380
- ? './computer-science-processes-database/metadata.json'
381
- : './metadata.json';
382
- let currentSortColumn = -1;
383
- let sortDirection = 1;
384
- let processes = [];
385
-
386
- async function loadData() {
387
- console.log('🔄 Starting data load from:', METADATA_URL);
388
- document.getElementById('loading').style.display = 'block';
389
- document.getElementById('error').style.display = 'none';
390
- document.getElementById('content').style.display = 'none';
391
-
392
- try {
393
- const response = await fetch(METADATA_URL);
394
- if (!response.ok) {
395
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
396
- }
397
-
398
- const data = await response.json();
399
- console.log('✅ Data loaded successfully:', data.totalProcesses, 'processes');
400
-
401
- processes = data.processes || [];
402
- populateData(data);
403
-
404
- document.getElementById('loading').style.display = 'none';
405
- document.getElementById('content').style.display = 'block';
406
-
407
- } catch (error) {
408
- console.error('❌ Error loading data:', error);
409
- document.getElementById('loading').style.display = 'none';
410
- document.getElementById('error').style.display = 'block';
411
- document.getElementById('error').innerHTML = `
412
- <h3>❌ Error Loading Data</h3>
413
- <p>Could not fetch computer_science processes metadata.</p>
414
- <p style="font-size: 0.9em; color: #95a5a6; margin-top: 10px;">
415
- Error: ${error.message}
416
- </p>
417
- `;
418
- }
419
- }
420
-
421
- function populateData(data) {
422
- // Populate statistics
423
- const stats = data.statistics || {};
424
- document.getElementById('statsGrid').innerHTML = `
425
- <div class="stat-card">
426
- <div class="stat-number">${data.totalProcesses || 0}</div>
427
- <div class="stat-label">Total Processes</div>
428
- </div>
429
- <div class="stat-card">
430
- <div class="stat-number">${stats.totalNodes || 0}</div>
431
- <div class="stat-label">Total Nodes</div>
432
- </div>
433
- <div class="stat-card">
434
- <div class="stat-number">${stats.totalEdges || 0}</div>
435
- <div class="stat-label">Total Edges</div>
436
- </div>
437
- <div class="stat-card">
438
- <div class="stat-number">${data.subcategories || 0}</div>
439
- <div class="stat-label">Subcategories</div>
440
- </div>
441
- `;
442
-
443
- // Populate table
444
- const tableBody = document.getElementById('tableBody');
445
- tableBody.innerHTML = '';
446
-
447
- const processList = data.processes || [];
448
- processList.forEach(process => {
449
- const row = document.createElement('tr');
450
- const isGCS = window.location.hostname.includes('storage.googleapis.com');
451
- const isHF = window.location.hostname.includes('huggingface.co');
452
- const viewerUrl = isGCS
453
- ? `https://storage.googleapis.com/regal-scholar-453620-r7-podcast-storage/computer-science-processes-database/processes/${process.subcategory}/${process.id}.html`
454
- : (isHF)
455
- ? `./computer-science-processes-database/processes/${process.subcategory}/${process.id}.html`
456
- : `./processes/${process.subcategory}/${process.id}.html`;
457
- row.innerHTML = `
458
- <td class="process-name">
459
- <a href="${viewerUrl}" target="_blank">${process.name}</a>
460
- </td>
461
- <td><span class="subcategory">${process.subcategory_name || process.subcategory}</span></td>
462
- <td><span class="complexity ${process.complexity}">${process.complexity}</span></td>
463
- <td class="number">${process.nodes}</td>
464
- <td class="number">${process.edges}</td>
465
- <td class="number">${process.andGates || 0}</td>
466
- <td class="number">${process.orGates || 0}</td>
467
- `;
468
- tableBody.appendChild(row);
469
- });
470
-
471
- // Populate breakdown
472
- const breakdown = {};
473
- processList.forEach(p => {
474
- const subcat = p.subcategory_name || p.subcategory;
475
- breakdown[subcat] = (breakdown[subcat] || 0) + 1;
476
- });
477
-
478
- let breakdownHTML = '<div class="breakdown-card"><h4>Processes by Subcategory</h4>';
479
- Object.entries(breakdown).sort((a, b) => b[1] - a[1]).forEach(([subcat, count]) => {
480
- breakdownHTML += `
481
- <div class="breakdown-item">
482
- <span class="breakdown-label">${subcat}</span>
483
- <span class="breakdown-count">${count}</span>
484
- </div>
485
- `;
486
- });
487
- breakdownHTML += '</div>';
488
-
489
- const complexityBreakdown = {};
490
- processList.forEach(p => {
491
- const comp = p.complexity || 'unknown';
492
- complexityBreakdown[comp] = (complexityBreakdown[comp] || 0) + 1;
493
- });
494
-
495
- breakdownHTML += '<div class="breakdown-card"><h4>Processes by Complexity</h4>';
496
- Object.entries(complexityBreakdown).sort((a, b) => b[1] - a[1]).forEach(([comp, count]) => {
497
- breakdownHTML += `
498
- <div class="breakdown-item">
499
- <span class="breakdown-label">${comp}</span>
500
- <span class="breakdown-count">${count}</span>
501
- </div>
502
- `;
503
- });
504
- breakdownHTML += '</div>';
505
-
506
- document.getElementById('breakdownGrid').innerHTML = breakdownHTML;
507
- }
508
-
509
- function sortTable(column) {
510
- const table = document.getElementById('processTable');
511
- const tbody = table.querySelector('tbody');
512
- const rows = Array.from(tbody.querySelectorAll('tr'));
513
-
514
- if (currentSortColumn === column) {
515
- sortDirection *= -1;
516
- } else {
517
- currentSortColumn = column;
518
- sortDirection = 1;
519
- }
520
-
521
- rows.sort((a, b) => {
522
- const aText = a.cells[column].textContent.trim();
523
- const bText = b.cells[column].textContent.trim();
524
-
525
- // Try to parse as number
526
- const aNum = parseFloat(aText);
527
- const bNum = parseFloat(bText);
528
-
529
- if (!isNaN(aNum) && !isNaN(bNum)) {
530
- return (aNum - bNum) * sortDirection;
531
- }
532
-
533
- return aText.localeCompare(bText) * sortDirection;
534
- });
535
-
536
- rows.forEach(row => tbody.appendChild(row));
537
- }
538
-
539
- // Load data on page load
540
- loadData();
541
- </script>
542
- </body>
543
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
data/aristotle-syllogistic-figure-2.mmd ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefAEIO("DefAEIO Categorical forms")
3
+ DefFig("DefFig Figures 1,2,3")
4
+ Econv("Econv E-conversion")
5
+ Barbara("Barbara Barbara")
6
+ Celarent("Celarent Celarent")
7
+ Ferio("Ferio Ferio")
8
+ Cesare("Cesare Cesare")
9
+ Camestres("Camestres Camestres")
10
+ Festino("Festino Festino")
11
+ Baroco("Baroco Baroco")
12
+ DefAEIO --> Barbara
13
+ DefFig --> Barbara
14
+ DefAEIO --> Celarent
15
+ DefFig --> Celarent
16
+ DefAEIO --> Ferio
17
+ DefFig --> Ferio
18
+ Econv --> Cesare
19
+ Celarent --> Cesare
20
+ Econv --> Camestres
21
+ Celarent --> Camestres
22
+ Econv --> Festino
23
+ Ferio --> Festino
24
+ Barbara --> Baroco
25
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
26
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
27
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
28
+ class Econv,Barbara,Celarent,Ferio axiom
29
+ class DefAEIO,DefFig definition
30
+ class Cesare,Camestres,Festino,Baroco theorem
data/aristotle-syllogistic-figure-3.mmd ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefAEIO("DefAEIO Categorical forms")
3
+ DefFig("DefFig Figures 1,2,3")
4
+ Iconv("Iconv I-conversion")
5
+ Aconv("Aconv A-conversion")
6
+ Barbara("Barbara Barbara")
7
+ Darii("Darii Darii")
8
+ Ferio("Ferio Ferio")
9
+ Darapti("Darapti Darapti")
10
+ Felapton("Felapton Felapton")
11
+ Disamis("Disamis Disamis")
12
+ Datisi("Datisi Datisi")
13
+ Bocardo("Bocardo Bocardo")
14
+ Ferison("Ferison Ferison")
15
+ DefAEIO --> Barbara
16
+ DefFig --> Barbara
17
+ DefAEIO --> Darii
18
+ DefFig --> Darii
19
+ DefAEIO --> Ferio
20
+ DefFig --> Ferio
21
+ Aconv --> Darapti
22
+ Darii --> Darapti
23
+ Aconv --> Felapton
24
+ Ferio --> Felapton
25
+ Iconv --> Disamis
26
+ Darii --> Disamis
27
+ Aconv --> Datisi
28
+ Darii --> Datisi
29
+ Barbara --> Bocardo
30
+ Aconv --> Ferison
31
+ Ferio --> Ferison
32
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
33
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
34
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
35
+ class Iconv,Aconv,Barbara,Darii,Ferio axiom
36
+ class DefAEIO,DefFig definition
37
+ class Darapti,Felapton,Disamis,Datisi,Bocardo,Ferison theorem
data/aristotle-syllogistic-foundations-perfect.mmd ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefAEIO("DefAEIO Categorical forms")
3
+ DefFig("DefFig Figures 1,2,3")
4
+ Econv("Econv E-conversion")
5
+ Iconv("Iconv I-conversion")
6
+ Aconv("Aconv A-conversion")
7
+ Barbara("Barbara Barbara")
8
+ Celarent("Celarent Celarent")
9
+ Darii("Darii Darii")
10
+ Ferio("Ferio Ferio")
11
+ DefAEIO --> Barbara
12
+ DefFig --> Barbara
13
+ DefAEIO --> Celarent
14
+ DefFig --> Celarent
15
+ DefAEIO --> Darii
16
+ DefFig --> Darii
17
+ DefAEIO --> Ferio
18
+ DefFig --> Ferio
19
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
20
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
21
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
22
+ class Econv,Iconv,Aconv,Barbara,Celarent,Darii,Ferio axiom
23
+ class DefAEIO,DefFig definition
data/aristotle-syllogistic.json ADDED
@@ -0,0 +1,326 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "aristotle-syllogistic",
5
+ "name": "Aristotle Syllogistic Logic",
6
+ "subject": "logic",
7
+ "variant": "classical",
8
+ "description": "Aristotelian categorical syllogistic. Four perfect syllogisms (Barbara, Celarent, Darii, Ferio), three conversion rules, and ten imperfect syllogisms reduced to the perfect ones. Based on Prior Analytics.",
9
+ "structure": {
10
+ "axioms": 7,
11
+ "definitions": 2,
12
+ "theorems": 10
13
+ }
14
+ },
15
+ "metadata": {
16
+ "created": "2026-03-15",
17
+ "lastUpdated": "2026-03-15",
18
+ "version": "1.0.0",
19
+ "license": "CC BY 4.0",
20
+ "authors": [
21
+ "Welz, G."
22
+ ],
23
+ "methodology": "Programming Framework",
24
+ "citation": "Welz, G. (2026). Aristotle Syllogistic Dependency Graph. Programming Framework.",
25
+ "keywords": [
26
+ "Aristotle",
27
+ "syllogism",
28
+ "categorical logic",
29
+ "Prior Analytics",
30
+ "Barbara",
31
+ "Celarent"
32
+ ]
33
+ },
34
+ "sources": [
35
+ {
36
+ "id": "aristotle",
37
+ "type": "primary",
38
+ "authors": "Aristotle",
39
+ "title": "Prior Analytics",
40
+ "year": "c. 350 BCE",
41
+ "notes": "Syllogistic theory"
42
+ },
43
+ {
44
+ "id": "stanford",
45
+ "type": "secondary",
46
+ "authors": "Smith, R.",
47
+ "title": "Aristotle's Logic",
48
+ "url": "https://plato.stanford.edu/entries/aristotle-logic/",
49
+ "notes": "Stanford Encyclopedia"
50
+ }
51
+ ],
52
+ "nodes": [
53
+ {
54
+ "id": "DefAEIO",
55
+ "type": "definition",
56
+ "label": "A, E, I, O: All/No/Some/Some-not",
57
+ "shortLabel": "DefAEIO",
58
+ "short": "Categorical forms",
59
+ "colorClass": "definition"
60
+ },
61
+ {
62
+ "id": "DefFig",
63
+ "type": "definition",
64
+ "label": "Three figures: middle term position",
65
+ "shortLabel": "DefFig",
66
+ "short": "Figures 1,2,3",
67
+ "colorClass": "definition"
68
+ },
69
+ {
70
+ "id": "Econv",
71
+ "type": "axiom",
72
+ "label": "Eab implies Eba (No M is P implies No P is M)",
73
+ "shortLabel": "Econv",
74
+ "short": "E-conversion",
75
+ "colorClass": "axiom"
76
+ },
77
+ {
78
+ "id": "Iconv",
79
+ "type": "axiom",
80
+ "label": "Iab implies Iba (Some M is P implies Some P is M)",
81
+ "shortLabel": "Iconv",
82
+ "short": "I-conversion",
83
+ "colorClass": "axiom"
84
+ },
85
+ {
86
+ "id": "Aconv",
87
+ "type": "axiom",
88
+ "label": "Aab implies Iba (All M is P implies Some P is M)",
89
+ "shortLabel": "Aconv",
90
+ "short": "A-conversion",
91
+ "colorClass": "axiom"
92
+ },
93
+ {
94
+ "id": "Barbara",
95
+ "type": "axiom",
96
+ "label": "AAA-1: All M is P, All S is M therefore All S is P",
97
+ "shortLabel": "Barbara",
98
+ "short": "Barbara",
99
+ "colorClass": "axiom"
100
+ },
101
+ {
102
+ "id": "Celarent",
103
+ "type": "axiom",
104
+ "label": "EAE-1: No M is P, All S is M therefore No S is P",
105
+ "shortLabel": "Celarent",
106
+ "short": "Celarent",
107
+ "colorClass": "axiom"
108
+ },
109
+ {
110
+ "id": "Darii",
111
+ "type": "axiom",
112
+ "label": "AII-1: All M is P, Some S is M therefore Some S is P",
113
+ "shortLabel": "Darii",
114
+ "short": "Darii",
115
+ "colorClass": "axiom"
116
+ },
117
+ {
118
+ "id": "Ferio",
119
+ "type": "axiom",
120
+ "label": "EIO-1: No M is P, Some S is M therefore Some S is not P",
121
+ "shortLabel": "Ferio",
122
+ "short": "Ferio",
123
+ "colorClass": "axiom"
124
+ },
125
+ {
126
+ "id": "Cesare",
127
+ "type": "theorem",
128
+ "label": "EAE-2: No P is M, All S is M therefore No S is P",
129
+ "shortLabel": "Cesare",
130
+ "short": "Cesare",
131
+ "colorClass": "theorem"
132
+ },
133
+ {
134
+ "id": "Camestres",
135
+ "type": "theorem",
136
+ "label": "AEE-2: All P is M, No S is M therefore No S is P",
137
+ "shortLabel": "Camestres",
138
+ "short": "Camestres",
139
+ "colorClass": "theorem"
140
+ },
141
+ {
142
+ "id": "Festino",
143
+ "type": "theorem",
144
+ "label": "EIO-2: No P is M, Some S is M therefore Some S is not P",
145
+ "shortLabel": "Festino",
146
+ "short": "Festino",
147
+ "colorClass": "theorem"
148
+ },
149
+ {
150
+ "id": "Baroco",
151
+ "type": "theorem",
152
+ "label": "AOO-2: All P is M, Some S is not M therefore Some S is not P",
153
+ "shortLabel": "Baroco",
154
+ "short": "Baroco",
155
+ "colorClass": "theorem"
156
+ },
157
+ {
158
+ "id": "Darapti",
159
+ "type": "theorem",
160
+ "label": "AAI-3: All M is P, All M is S therefore Some S is P",
161
+ "shortLabel": "Darapti",
162
+ "short": "Darapti",
163
+ "colorClass": "theorem"
164
+ },
165
+ {
166
+ "id": "Felapton",
167
+ "type": "theorem",
168
+ "label": "EAO-3: No M is P, All M is S therefore Some S is not P",
169
+ "shortLabel": "Felapton",
170
+ "short": "Felapton",
171
+ "colorClass": "theorem"
172
+ },
173
+ {
174
+ "id": "Disamis",
175
+ "type": "theorem",
176
+ "label": "IAI-3: Some M is P, All M is S therefore Some S is P",
177
+ "shortLabel": "Disamis",
178
+ "short": "Disamis",
179
+ "colorClass": "theorem"
180
+ },
181
+ {
182
+ "id": "Datisi",
183
+ "type": "theorem",
184
+ "label": "AII-3: All M is P, Some M is S therefore Some S is P",
185
+ "shortLabel": "Datisi",
186
+ "short": "Datisi",
187
+ "colorClass": "theorem"
188
+ },
189
+ {
190
+ "id": "Bocardo",
191
+ "type": "theorem",
192
+ "label": "OAO-3: Some M is not P, All M is S therefore Some S is not P",
193
+ "shortLabel": "Bocardo",
194
+ "short": "Bocardo",
195
+ "colorClass": "theorem"
196
+ },
197
+ {
198
+ "id": "Ferison",
199
+ "type": "theorem",
200
+ "label": "EIO-3: No M is P, Some M is S therefore Some S is not P",
201
+ "shortLabel": "Ferison",
202
+ "short": "Ferison",
203
+ "colorClass": "theorem"
204
+ }
205
+ ],
206
+ "edges": [
207
+ {
208
+ "from": "DefAEIO",
209
+ "to": "Barbara"
210
+ },
211
+ {
212
+ "from": "DefFig",
213
+ "to": "Barbara"
214
+ },
215
+ {
216
+ "from": "DefAEIO",
217
+ "to": "Celarent"
218
+ },
219
+ {
220
+ "from": "DefFig",
221
+ "to": "Celarent"
222
+ },
223
+ {
224
+ "from": "DefAEIO",
225
+ "to": "Darii"
226
+ },
227
+ {
228
+ "from": "DefFig",
229
+ "to": "Darii"
230
+ },
231
+ {
232
+ "from": "DefAEIO",
233
+ "to": "Ferio"
234
+ },
235
+ {
236
+ "from": "DefFig",
237
+ "to": "Ferio"
238
+ },
239
+ {
240
+ "from": "Econv",
241
+ "to": "Cesare"
242
+ },
243
+ {
244
+ "from": "Celarent",
245
+ "to": "Cesare"
246
+ },
247
+ {
248
+ "from": "Econv",
249
+ "to": "Camestres"
250
+ },
251
+ {
252
+ "from": "Celarent",
253
+ "to": "Camestres"
254
+ },
255
+ {
256
+ "from": "Econv",
257
+ "to": "Festino"
258
+ },
259
+ {
260
+ "from": "Ferio",
261
+ "to": "Festino"
262
+ },
263
+ {
264
+ "from": "Barbara",
265
+ "to": "Baroco"
266
+ },
267
+ {
268
+ "from": "Aconv",
269
+ "to": "Darapti"
270
+ },
271
+ {
272
+ "from": "Darii",
273
+ "to": "Darapti"
274
+ },
275
+ {
276
+ "from": "Aconv",
277
+ "to": "Felapton"
278
+ },
279
+ {
280
+ "from": "Ferio",
281
+ "to": "Felapton"
282
+ },
283
+ {
284
+ "from": "Iconv",
285
+ "to": "Disamis"
286
+ },
287
+ {
288
+ "from": "Darii",
289
+ "to": "Disamis"
290
+ },
291
+ {
292
+ "from": "Aconv",
293
+ "to": "Datisi"
294
+ },
295
+ {
296
+ "from": "Darii",
297
+ "to": "Datisi"
298
+ },
299
+ {
300
+ "from": "Barbara",
301
+ "to": "Bocardo"
302
+ },
303
+ {
304
+ "from": "Aconv",
305
+ "to": "Ferison"
306
+ },
307
+ {
308
+ "from": "Ferio",
309
+ "to": "Ferison"
310
+ }
311
+ ],
312
+ "colorScheme": {
313
+ "axiom": {
314
+ "fill": "#e74c3c",
315
+ "stroke": "#c0392b"
316
+ },
317
+ "definition": {
318
+ "fill": "#3498db",
319
+ "stroke": "#2980b9"
320
+ },
321
+ "theorem": {
322
+ "fill": "#1abc9c",
323
+ "stroke": "#16a085"
324
+ }
325
+ }
326
+ }
data/aristotle-syllogistic.mmd ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefAEIO("DefAEIO Categorical forms")
3
+ DefFig("DefFig Figures 1,2,3")
4
+ Econv("Econv E-conversion")
5
+ Iconv("Iconv I-conversion")
6
+ Aconv("Aconv A-conversion")
7
+ Barbara("Barbara Barbara")
8
+ Celarent("Celarent Celarent")
9
+ Darii("Darii Darii")
10
+ Ferio("Ferio Ferio")
11
+ Cesare("Cesare Cesare")
12
+ Camestres("Camestres Camestres")
13
+ Festino("Festino Festino")
14
+ Baroco("Baroco Baroco")
15
+ Darapti("Darapti Darapti")
16
+ Felapton("Felapton Felapton")
17
+ Disamis("Disamis Disamis")
18
+ Datisi("Datisi Datisi")
19
+ Bocardo("Bocardo Bocardo")
20
+ Ferison("Ferison Ferison")
21
+ DefAEIO --> Barbara
22
+ DefFig --> Barbara
23
+ DefAEIO --> Celarent
24
+ DefFig --> Celarent
25
+ DefAEIO --> Darii
26
+ DefFig --> Darii
27
+ DefAEIO --> Ferio
28
+ DefFig --> Ferio
29
+ Econv --> Cesare
30
+ Celarent --> Cesare
31
+ Econv --> Camestres
32
+ Celarent --> Camestres
33
+ Econv --> Festino
34
+ Ferio --> Festino
35
+ Barbara --> Baroco
36
+ Aconv --> Darapti
37
+ Darii --> Darapti
38
+ Aconv --> Felapton
39
+ Ferio --> Felapton
40
+ Iconv --> Disamis
41
+ Darii --> Disamis
42
+ Aconv --> Datisi
43
+ Darii --> Datisi
44
+ Barbara --> Bocardo
45
+ Aconv --> Ferison
46
+ Ferio --> Ferison
47
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
48
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
49
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
50
+ class Econv,Iconv,Aconv,Barbara,Celarent,Darii,Ferio axiom
51
+ class DefAEIO,DefFig definition
52
+ class Cesare,Camestres,Festino,Baroco,Darapti,Felapton,Disamis,Datisi,Bocardo,Ferison theorem
data/combinatorics-advanced-counting.mmd ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefFact("DefFact Factorial")
3
+ DefSum("DefSum Sum principle")
4
+ DefProd("DefProd Product principle")
5
+ PermNoRep("PermNoRep Permutations no rep")
6
+ Pigeonhole("Pigeonhole Pigeonhole principle")
7
+ InclExcl("InclExcl Inclusion-exclusion")
8
+ InclExcl3("InclExcl3 Incl-excl 3 sets")
9
+ Derange("Derange Derangements")
10
+ Stirling2("Stirling2 Stirling numbers")
11
+ DefFact --> PermNoRep
12
+ DefProd --> PermNoRep
13
+ DefSum --> Pigeonhole
14
+ DefSum --> InclExcl
15
+ InclExcl --> InclExcl3
16
+ InclExcl --> Derange
17
+ PermNoRep --> Derange
18
+ DefSum --> Stirling2
19
+ DefProd --> Stirling2
20
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
21
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
22
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
23
+ class DefFact,DefSum,DefProd definition
24
+ class PermNoRep,Pigeonhole,InclExcl,InclExcl3,Derange,Stirling2 theorem
data/combinatorics-combinations-binomial.mmd ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefFact("DefFact Factorial")
3
+ DefProd("DefProd Product principle")
4
+ PermNoRep("PermNoRep Permutations no rep")
5
+ CombNoRep("CombNoRep Combinations")
6
+ CombRep("CombRep Combinations with rep")
7
+ BinomThm("BinomThm Binomial theorem")
8
+ Pascal("Pascal Pascal identity")
9
+ DefFact --> PermNoRep
10
+ DefProd --> PermNoRep
11
+ PermNoRep --> CombNoRep
12
+ DefFact --> CombNoRep
13
+ CombNoRep --> CombRep
14
+ CombNoRep --> BinomThm
15
+ CombNoRep --> Pascal
16
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
17
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
18
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
19
+ class DefFact,DefProd definition
20
+ class PermNoRep,CombNoRep,CombRep,BinomThm,Pascal theorem
data/combinatorics-principles-permutations.mmd ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefFact("DefFact Factorial")
3
+ DefSum("DefSum Sum principle")
4
+ DefProd("DefProd Product principle")
5
+ PermNoRep("PermNoRep Permutations no rep")
6
+ PermRep("PermRep Permutations with rep")
7
+ CombNoRep("CombNoRep Combinations")
8
+ DefFact --> PermNoRep
9
+ DefProd --> PermNoRep
10
+ DefProd --> PermRep
11
+ PermNoRep --> CombNoRep
12
+ DefFact --> CombNoRep
13
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
14
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
15
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
16
+ class DefFact,DefSum,DefProd definition
17
+ class PermNoRep,PermRep,CombNoRep theorem
data/combinatorics.json ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "combinatorics",
5
+ "name": "Combinatorics",
6
+ "subject": "discrete_mathematics",
7
+ "variant": "classical",
8
+ "description": "Counting principles: sum and product rules, permutations (with/without repetition), combinations, binomial theorem, pigeonhole principle, inclusion-exclusion, derangements.",
9
+ "structure": {
10
+ "axioms": 0,
11
+ "definitions": 3,
12
+ "theorems": 11
13
+ }
14
+ },
15
+ "metadata": {
16
+ "created": "2026-03-15",
17
+ "lastUpdated": "2026-03-15",
18
+ "version": "1.0.0",
19
+ "license": "CC BY 4.0",
20
+ "authors": [
21
+ "Welz, G."
22
+ ],
23
+ "methodology": "Programming Framework",
24
+ "citation": "Welz, G. (2026). Combinatorics Dependency Graph. Programming Framework.",
25
+ "keywords": [
26
+ "combinatorics",
27
+ "permutations",
28
+ "combinations",
29
+ "counting",
30
+ "binomial theorem"
31
+ ]
32
+ },
33
+ "sources": [
34
+ {
35
+ "id": "dmoi",
36
+ "type": "primary",
37
+ "title": "Discrete Mathematics: An Open Introduction",
38
+ "url": "https://discrete.openmathbooks.org/dmoi4/sec_counting-combperm.html",
39
+ "notes": "Counting principles"
40
+ },
41
+ {
42
+ "id": "mathisfun",
43
+ "type": "digital",
44
+ "title": "Combinations and Permutations",
45
+ "url": "https://www.mathsisfun.com/combinatorics/combinations-permutations.html",
46
+ "notes": "Formulas"
47
+ }
48
+ ],
49
+ "nodes": [
50
+ {
51
+ "id": "DefFact",
52
+ "type": "definition",
53
+ "label": "Factorial: n! = n(n-1)...1, 0!=1",
54
+ "shortLabel": "DefFact",
55
+ "short": "Factorial",
56
+ "colorClass": "definition"
57
+ },
58
+ {
59
+ "id": "DefSum",
60
+ "type": "definition",
61
+ "label": "Sum principle: disjoint choices add (OR)",
62
+ "shortLabel": "DefSum",
63
+ "short": "Sum principle",
64
+ "colorClass": "definition"
65
+ },
66
+ {
67
+ "id": "DefProd",
68
+ "type": "definition",
69
+ "label": "Product principle: sequential choices multiply (AND)",
70
+ "shortLabel": "DefProd",
71
+ "short": "Product principle",
72
+ "colorClass": "definition"
73
+ },
74
+ {
75
+ "id": "PermNoRep",
76
+ "type": "theorem",
77
+ "label": "P(n,r) = n!/(n-r)! arrangements of r from n",
78
+ "shortLabel": "PermNoRep",
79
+ "short": "Permutations no rep",
80
+ "colorClass": "theorem"
81
+ },
82
+ {
83
+ "id": "PermRep",
84
+ "type": "theorem",
85
+ "label": "n^r arrangements of r from n with repetition",
86
+ "shortLabel": "PermRep",
87
+ "short": "Permutations with rep",
88
+ "colorClass": "theorem"
89
+ },
90
+ {
91
+ "id": "CombNoRep",
92
+ "type": "theorem",
93
+ "label": "C(n,r) = n!/(r!(n-r)!) = P(n,r)/r!",
94
+ "shortLabel": "CombNoRep",
95
+ "short": "Combinations",
96
+ "colorClass": "theorem"
97
+ },
98
+ {
99
+ "id": "CombRep",
100
+ "type": "theorem",
101
+ "label": "C(n+r-1,r) ways to choose r from n with rep",
102
+ "shortLabel": "CombRep",
103
+ "short": "Combinations with rep",
104
+ "colorClass": "theorem"
105
+ },
106
+ {
107
+ "id": "BinomThm",
108
+ "type": "theorem",
109
+ "label": "(a+b)^n = sum C(n,k) a^k b^(n-k)",
110
+ "shortLabel": "BinomThm",
111
+ "short": "Binomial theorem",
112
+ "colorClass": "theorem"
113
+ },
114
+ {
115
+ "id": "Pascal",
116
+ "type": "theorem",
117
+ "label": "C(n,k) = C(n-1,k-1) + C(n-1,k)",
118
+ "shortLabel": "Pascal",
119
+ "short": "Pascal identity",
120
+ "colorClass": "theorem"
121
+ },
122
+ {
123
+ "id": "Pigeonhole",
124
+ "type": "theorem",
125
+ "label": "n+1 objects in n boxes implies one box has 2+",
126
+ "shortLabel": "Pigeonhole",
127
+ "short": "Pigeonhole principle",
128
+ "colorClass": "theorem"
129
+ },
130
+ {
131
+ "id": "InclExcl",
132
+ "type": "theorem",
133
+ "label": "|A union B| = |A| + |B| - |A intersect B|",
134
+ "shortLabel": "InclExcl",
135
+ "short": "Inclusion-exclusion",
136
+ "colorClass": "theorem"
137
+ },
138
+ {
139
+ "id": "InclExcl3",
140
+ "type": "theorem",
141
+ "label": "Inclusion-exclusion for 3 sets",
142
+ "shortLabel": "InclExcl3",
143
+ "short": "Incl-excl 3 sets",
144
+ "colorClass": "theorem"
145
+ },
146
+ {
147
+ "id": "Derange",
148
+ "type": "theorem",
149
+ "label": "D(n) = n! sum (-1)^k/k! derangements",
150
+ "shortLabel": "Derange",
151
+ "short": "Derangements",
152
+ "colorClass": "theorem"
153
+ },
154
+ {
155
+ "id": "Stirling2",
156
+ "type": "theorem",
157
+ "label": "S(n,k) = partitions of n into k nonempty sets",
158
+ "shortLabel": "Stirling2",
159
+ "short": "Stirling numbers",
160
+ "colorClass": "theorem"
161
+ }
162
+ ],
163
+ "edges": [
164
+ {
165
+ "from": "DefFact",
166
+ "to": "PermNoRep"
167
+ },
168
+ {
169
+ "from": "DefProd",
170
+ "to": "PermNoRep"
171
+ },
172
+ {
173
+ "from": "DefProd",
174
+ "to": "PermRep"
175
+ },
176
+ {
177
+ "from": "PermNoRep",
178
+ "to": "CombNoRep"
179
+ },
180
+ {
181
+ "from": "DefFact",
182
+ "to": "CombNoRep"
183
+ },
184
+ {
185
+ "from": "CombNoRep",
186
+ "to": "CombRep"
187
+ },
188
+ {
189
+ "from": "CombNoRep",
190
+ "to": "BinomThm"
191
+ },
192
+ {
193
+ "from": "CombNoRep",
194
+ "to": "Pascal"
195
+ },
196
+ {
197
+ "from": "DefSum",
198
+ "to": "Pigeonhole"
199
+ },
200
+ {
201
+ "from": "DefSum",
202
+ "to": "InclExcl"
203
+ },
204
+ {
205
+ "from": "InclExcl",
206
+ "to": "InclExcl3"
207
+ },
208
+ {
209
+ "from": "InclExcl",
210
+ "to": "Derange"
211
+ },
212
+ {
213
+ "from": "PermNoRep",
214
+ "to": "Derange"
215
+ },
216
+ {
217
+ "from": "DefSum",
218
+ "to": "Stirling2"
219
+ },
220
+ {
221
+ "from": "DefProd",
222
+ "to": "Stirling2"
223
+ }
224
+ ],
225
+ "colorScheme": {
226
+ "axiom": {
227
+ "fill": "#e74c3c",
228
+ "stroke": "#c0392b"
229
+ },
230
+ "definition": {
231
+ "fill": "#3498db",
232
+ "stroke": "#2980b9"
233
+ },
234
+ "theorem": {
235
+ "fill": "#1abc9c",
236
+ "stroke": "#16a085"
237
+ }
238
+ }
239
+ }
data/combinatorics.mmd ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ DefFact("DefFact Factorial")
3
+ DefSum("DefSum Sum principle")
4
+ DefProd("DefProd Product principle")
5
+ PermNoRep("PermNoRep Permutations no rep")
6
+ PermRep("PermRep Permutations with rep")
7
+ CombNoRep("CombNoRep Combinations")
8
+ CombRep("CombRep Combinations with rep")
9
+ BinomThm("BinomThm Binomial theorem")
10
+ Pascal("Pascal Pascal identity")
11
+ Pigeonhole("Pigeonhole Pigeonhole principle")
12
+ InclExcl("InclExcl Inclusion-exclusion")
13
+ InclExcl3("InclExcl3 Incl-excl 3 sets")
14
+ Derange("Derange Derangements")
15
+ Stirling2("Stirling2 Stirling numbers")
16
+ DefFact --> PermNoRep
17
+ DefProd --> PermNoRep
18
+ DefProd --> PermRep
19
+ PermNoRep --> CombNoRep
20
+ DefFact --> CombNoRep
21
+ CombNoRep --> CombRep
22
+ CombNoRep --> BinomThm
23
+ CombNoRep --> Pascal
24
+ DefSum --> Pigeonhole
25
+ DefSum --> InclExcl
26
+ InclExcl --> InclExcl3
27
+ InclExcl --> Derange
28
+ PermNoRep --> Derange
29
+ DefSum --> Stirling2
30
+ DefProd --> Stirling2
31
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
32
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
33
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
34
+ class DefFact,DefSum,DefProd definition
35
+ class PermNoRep,PermRep,CombNoRep,CombRep,BinomThm,Pascal,Pigeonhole,InclExcl,InclExcl3,Derange,Stirling2 theorem
data/euclid-elements-book-i-props-1-10.mmd ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ P1["Post. 1\nDraw a straight line from any po..."]
3
+ P2["Post. 2\nProduce a finite straight line c..."]
4
+ P3["Post. 3\nDescribe a circle with any cente..."]
5
+ P4["Post. 4\nAll right angles equal one another"]
6
+ P5["Post. 5\nParallel postulate: if interior ..."]
7
+ CN1["CN 1\nThings equal to the same thing a..."]
8
+ CN2["CN 2\nIf equals are added to equals, t..."]
9
+ CN3["CN 3\nIf equals are subtracted from eq..."]
10
+ CN4["CN 4\nThings coinciding with one anoth..."]
11
+ CN5["CN 5\nThe whole is greater than the part"]
12
+ Prop1["Prop. I.1\nEquilateral triangle on given line"]
13
+ Prop2["Prop. I.2\nPlace line equal to given at point"]
14
+ Prop3["Prop. I.3\nCut off from greater segment equal to less"]
15
+ Prop4["Prop. I.4\nSAS congruence"]
16
+ Prop5["Prop. I.5\nBase angles of isosceles equal"]
17
+ Prop6["Prop. I.6\nSides opposite equal angles equal"]
18
+ Prop7["Prop. I.7\nUniqueness of triangle from ends"]
19
+ Prop8["Prop. I.8\nSSS congruence"]
20
+ Prop9["Prop. I.9\nBisect angle"]
21
+ Prop10["Prop. I.10\nBisect line"]
22
+ P1 --> Prop1
23
+ P3 --> Prop1
24
+ Prop1 --> Prop2
25
+ P1 --> Prop2
26
+ P2 --> Prop2
27
+ P3 --> Prop2
28
+ Prop2 --> Prop3
29
+ P3 --> Prop3
30
+ CN4 --> Prop4
31
+ CN5 --> Prop4
32
+ Prop3 --> Prop5
33
+ Prop4 --> Prop5
34
+ Prop3 --> Prop6
35
+ Prop4 --> Prop6
36
+ Prop5 --> Prop7
37
+ Prop7 --> Prop8
38
+ Prop1 --> Prop9
39
+ Prop3 --> Prop9
40
+ Prop8 --> Prop9
41
+ Prop1 --> Prop10
42
+ Prop4 --> Prop10
43
+ Prop9 --> Prop10
44
+ classDef postulate fill:#e74c3c,color:#fff,stroke:#c0392b
45
+ classDef commonNotion fill:#9b59b6,color:#fff,stroke:#8e44ad
46
+ classDef proposition fill:#1abc9c,color:#fff,stroke:#16a085
47
+ class P1,P2,P3,P4,P5 postulate
48
+ class CN1,CN2,CN3,CN4,CN5 commonNotion
49
+ class Prop1,Prop2,Prop3,Prop4,Prop5,Prop6,Prop7,Prop8,Prop9,Prop10 proposition
data/euclid-elements-book-i-props-11-20.mmd ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ P1["Post. 1\nDraw a straight line from any po..."]
3
+ P2["Post. 2\nProduce a finite straight line c..."]
4
+ P3["Post. 3\nDescribe a circle with any cente..."]
5
+ P4["Post. 4\nAll right angles equal one another"]
6
+ P5["Post. 5\nParallel postulate: if interior ..."]
7
+ CN1["CN 1\nThings equal to the same thing a..."]
8
+ CN2["CN 2\nIf equals are added to equals, t..."]
9
+ CN3["CN 3\nIf equals are subtracted from eq..."]
10
+ CN4["CN 4\nThings coinciding with one anoth..."]
11
+ CN5["CN 5\nThe whole is greater than the part"]
12
+ Prop1["Prop. I.1\nEquilateral triangle on given line"]
13
+ Prop2["Prop. I.2\nPlace line equal to given at point"]
14
+ Prop3["Prop. I.3\nCut off from greater segment equal to less"]
15
+ Prop4["Prop. I.4\nSAS congruence"]
16
+ Prop5["Prop. I.5\nBase angles of isosceles equal"]
17
+ Prop7["Prop. I.7\nUniqueness of triangle from ends"]
18
+ Prop8["Prop. I.8\nSSS congruence"]
19
+ Prop9["Prop. I.9\nBisect angle"]
20
+ Prop10["Prop. I.10\nBisect line"]
21
+ Prop11["Prop. I.11\nPerpendicular from point on line"]
22
+ Prop12["Prop. I.12\nPerpendicular from point not on line"]
23
+ Prop13["Prop. I.13\nAngles on line sum to two right"]
24
+ Prop14["Prop. I.14\nIf angles sum to two right, straight line"]
25
+ Prop15["Prop. I.15\nVertical angles equal"]
26
+ Prop16["Prop. I.16\nExterior angle > interior opposite"]
27
+ Prop17["Prop. I.17\nSum of two angles < two right"]
28
+ Prop18["Prop. I.18\nAngle opposite greater side greater"]
29
+ Prop19["Prop. I.19\nSide opposite greater angle greater"]
30
+ Prop20["Prop. I.20\nTriangle inequality"]
31
+ P1 --> Prop1
32
+ P3 --> Prop1
33
+ Prop1 --> Prop2
34
+ P1 --> Prop2
35
+ P2 --> Prop2
36
+ P3 --> Prop2
37
+ Prop2 --> Prop3
38
+ P3 --> Prop3
39
+ CN4 --> Prop4
40
+ CN5 --> Prop4
41
+ Prop3 --> Prop5
42
+ Prop4 --> Prop5
43
+ Prop5 --> Prop7
44
+ Prop7 --> Prop8
45
+ Prop1 --> Prop9
46
+ Prop3 --> Prop9
47
+ Prop8 --> Prop9
48
+ Prop1 --> Prop10
49
+ Prop4 --> Prop10
50
+ Prop9 --> Prop10
51
+ Prop1 --> Prop11
52
+ Prop3 --> Prop11
53
+ Prop8 --> Prop11
54
+ Prop8 --> Prop12
55
+ Prop10 --> Prop12
56
+ Prop11 --> Prop13
57
+ Prop13 --> Prop14
58
+ Prop13 --> Prop15
59
+ Prop3 --> Prop16
60
+ Prop4 --> Prop16
61
+ Prop10 --> Prop16
62
+ Prop15 --> Prop16
63
+ Prop13 --> Prop17
64
+ Prop16 --> Prop17
65
+ Prop3 --> Prop18
66
+ Prop5 --> Prop18
67
+ Prop16 --> Prop18
68
+ Prop5 --> Prop19
69
+ Prop18 --> Prop19
70
+ Prop3 --> Prop20
71
+ Prop5 --> Prop20
72
+ Prop19 --> Prop20
73
+ classDef postulate fill:#e74c3c,color:#fff,stroke:#c0392b
74
+ classDef commonNotion fill:#9b59b6,color:#fff,stroke:#8e44ad
75
+ classDef proposition fill:#1abc9c,color:#fff,stroke:#16a085
76
+ class P1,P2,P3,P4,P5 postulate
77
+ class CN1,CN2,CN3,CN4,CN5 commonNotion
78
+ class Prop1,Prop2,Prop3,Prop4,Prop5,Prop7,Prop8,Prop9,Prop10,Prop11,Prop12,Prop13,Prop14,Prop15,Prop16,Prop17,Prop18,Prop19,Prop20 proposition
data/euclid-elements-book-i-props-21-30.mmd ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ P1["Post. 1\nDraw a straight line from any po..."]
3
+ P2["Post. 2\nProduce a finite straight line c..."]
4
+ P3["Post. 3\nDescribe a circle with any cente..."]
5
+ P4["Post. 4\nAll right angles equal one another"]
6
+ P5["Post. 5\nParallel postulate: if interior ..."]
7
+ CN1["CN 1\nThings equal to the same thing a..."]
8
+ CN2["CN 2\nIf equals are added to equals, t..."]
9
+ CN3["CN 3\nIf equals are subtracted from eq..."]
10
+ CN4["CN 4\nThings coinciding with one anoth..."]
11
+ CN5["CN 5\nThe whole is greater than the part"]
12
+ Prop1["Prop. I.1\nEquilateral triangle on given line"]
13
+ Prop2["Prop. I.2\nPlace line equal to given at point"]
14
+ Prop3["Prop. I.3\nCut off from greater segment equal to less"]
15
+ Prop4["Prop. I.4\nSAS congruence"]
16
+ Prop5["Prop. I.5\nBase angles of isosceles equal"]
17
+ Prop7["Prop. I.7\nUniqueness of triangle from ends"]
18
+ Prop8["Prop. I.8\nSSS congruence"]
19
+ Prop9["Prop. I.9\nBisect angle"]
20
+ Prop10["Prop. I.10\nBisect line"]
21
+ Prop11["Prop. I.11\nPerpendicular from point on line"]
22
+ Prop13["Prop. I.13\nAngles on line sum to two right"]
23
+ Prop15["Prop. I.15\nVertical angles equal"]
24
+ Prop16["Prop. I.16\nExterior angle > interior opposite"]
25
+ Prop18["Prop. I.18\nAngle opposite greater side greater"]
26
+ Prop19["Prop. I.19\nSide opposite greater angle greater"]
27
+ Prop20["Prop. I.20\nTriangle inequality"]
28
+ Prop21["Prop. I.21\nLines from ends within triangle"]
29
+ Prop22["Prop. I.22\nConstruct triangle from three lines"]
30
+ Prop23["Prop. I.23\nConstruct angle equal to given"]
31
+ Prop24["Prop. I.24\nSAS for greater angle => greater base"]
32
+ Prop25["Prop. I.25\nSAS for greater base => greater angle"]
33
+ Prop26["Prop. I.26\nAAS congruence"]
34
+ Prop27["Prop. I.27\nAlternate angles equal => parallel"]
35
+ Prop28["Prop. I.28\nExterior = interior opposite => parallel"]
36
+ Prop29["Prop. I.29\nParallel => alternate angles equal"]
37
+ Prop30["Prop. I.30\nTransitivity of parallel"]
38
+ P1 --> Prop1
39
+ P3 --> Prop1
40
+ Prop1 --> Prop2
41
+ P1 --> Prop2
42
+ P2 --> Prop2
43
+ P3 --> Prop2
44
+ Prop2 --> Prop3
45
+ P3 --> Prop3
46
+ CN4 --> Prop4
47
+ CN5 --> Prop4
48
+ Prop3 --> Prop5
49
+ Prop4 --> Prop5
50
+ Prop5 --> Prop7
51
+ Prop7 --> Prop8
52
+ Prop1 --> Prop9
53
+ Prop3 --> Prop9
54
+ Prop8 --> Prop9
55
+ Prop1 --> Prop10
56
+ Prop4 --> Prop10
57
+ Prop9 --> Prop10
58
+ Prop1 --> Prop11
59
+ Prop3 --> Prop11
60
+ Prop8 --> Prop11
61
+ Prop11 --> Prop13
62
+ Prop13 --> Prop15
63
+ Prop3 --> Prop16
64
+ Prop4 --> Prop16
65
+ Prop10 --> Prop16
66
+ Prop15 --> Prop16
67
+ Prop3 --> Prop18
68
+ Prop5 --> Prop18
69
+ Prop16 --> Prop18
70
+ Prop5 --> Prop19
71
+ Prop18 --> Prop19
72
+ Prop3 --> Prop20
73
+ Prop5 --> Prop20
74
+ Prop19 --> Prop20
75
+ Prop16 --> Prop21
76
+ Prop20 --> Prop21
77
+ Prop3 --> Prop22
78
+ Prop20 --> Prop22
79
+ Prop8 --> Prop23
80
+ Prop22 --> Prop23
81
+ Prop3 --> Prop24
82
+ Prop4 --> Prop24
83
+ Prop5 --> Prop24
84
+ Prop19 --> Prop24
85
+ Prop23 --> Prop24
86
+ Prop4 --> Prop25
87
+ Prop24 --> Prop25
88
+ Prop3 --> Prop26
89
+ Prop4 --> Prop26
90
+ Prop16 --> Prop26
91
+ Prop16 --> Prop27
92
+ Prop13 --> Prop28
93
+ Prop15 --> Prop28
94
+ Prop27 --> Prop28
95
+ Prop13 --> Prop29
96
+ Prop15 --> Prop29
97
+ Prop27 --> Prop29
98
+ P5 --> Prop29
99
+ Prop29 --> Prop30
100
+ classDef postulate fill:#e74c3c,color:#fff,stroke:#c0392b
101
+ classDef commonNotion fill:#9b59b6,color:#fff,stroke:#8e44ad
102
+ classDef proposition fill:#1abc9c,color:#fff,stroke:#16a085
103
+ class P1,P2,P3,P4,P5 postulate
104
+ class CN1,CN2,CN3,CN4,CN5 commonNotion
105
+ class Prop1,Prop2,Prop3,Prop4,Prop5,Prop7,Prop8,Prop9,Prop10,Prop11,Prop13,Prop15,Prop16,Prop18,Prop19,Prop20,Prop21,Prop22,Prop23,Prop24,Prop25,Prop26,Prop27,Prop28,Prop29,Prop30 proposition
data/euclid-elements-book-i-props-31-41.mmd ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ P1["Post. 1\nDraw a straight line from any po..."]
3
+ P2["Post. 2\nProduce a finite straight line c..."]
4
+ P3["Post. 3\nDescribe a circle with any cente..."]
5
+ P4["Post. 4\nAll right angles equal one another"]
6
+ P5["Post. 5\nParallel postulate: if interior ..."]
7
+ CN1["CN 1\nThings equal to the same thing a..."]
8
+ CN2["CN 2\nIf equals are added to equals, t..."]
9
+ CN3["CN 3\nIf equals are subtracted from eq..."]
10
+ CN4["CN 4\nThings coinciding with one anoth..."]
11
+ CN5["CN 5\nThe whole is greater than the part"]
12
+ Prop1["Prop. I.1\nEquilateral triangle on given line"]
13
+ Prop2["Prop. I.2\nPlace line equal to given at point"]
14
+ Prop3["Prop. I.3\nCut off from greater segment equal to less"]
15
+ Prop4["Prop. I.4\nSAS congruence"]
16
+ Prop5["Prop. I.5\nBase angles of isosceles equal"]
17
+ Prop7["Prop. I.7\nUniqueness of triangle from ends"]
18
+ Prop8["Prop. I.8\nSSS congruence"]
19
+ Prop9["Prop. I.9\nBisect angle"]
20
+ Prop10["Prop. I.10\nBisect line"]
21
+ Prop11["Prop. I.11\nPerpendicular from point on line"]
22
+ Prop13["Prop. I.13\nAngles on line sum to two right"]
23
+ Prop15["Prop. I.15\nVertical angles equal"]
24
+ Prop16["Prop. I.16\nExterior angle > interior opposite"]
25
+ Prop18["Prop. I.18\nAngle opposite greater side greater"]
26
+ Prop19["Prop. I.19\nSide opposite greater angle greater"]
27
+ Prop20["Prop. I.20\nTriangle inequality"]
28
+ Prop22["Prop. I.22\nConstruct triangle from three lines"]
29
+ Prop23["Prop. I.23\nConstruct angle equal to given"]
30
+ Prop26["Prop. I.26\nAAS congruence"]
31
+ Prop27["Prop. I.27\nAlternate angles equal => parallel"]
32
+ Prop29["Prop. I.29\nParallel => alternate angles equal"]
33
+ Prop31["Prop. I.31\nDraw parallel through point"]
34
+ Prop32["Prop. I.32\nExterior angle = sum interior opposite"]
35
+ Prop33["Prop. I.33\nJoining ends of equal parallel lines"]
36
+ Prop34["Prop. I.34\nParallelogram properties"]
37
+ Prop35["Prop. I.35\nParallelograms same base equal"]
38
+ Prop36["Prop. I.36\nParallelograms equal bases equal"]
39
+ Prop37["Prop. I.37\nTriangles same base equal"]
40
+ Prop38["Prop. I.38\nTriangles equal bases equal"]
41
+ Prop39["Prop. I.39\nEqual triangles same base same side"]
42
+ Prop40["Prop. I.40\nEqual triangles equal bases same side"]
43
+ Prop41["Prop. I.41\nParallelogram = 2× triangle"]
44
+ P1 --> Prop1
45
+ P3 --> Prop1
46
+ Prop1 --> Prop2
47
+ P1 --> Prop2
48
+ P2 --> Prop2
49
+ P3 --> Prop2
50
+ Prop2 --> Prop3
51
+ P3 --> Prop3
52
+ CN4 --> Prop4
53
+ CN5 --> Prop4
54
+ Prop3 --> Prop5
55
+ Prop4 --> Prop5
56
+ Prop5 --> Prop7
57
+ Prop7 --> Prop8
58
+ Prop1 --> Prop9
59
+ Prop3 --> Prop9
60
+ Prop8 --> Prop9
61
+ Prop1 --> Prop10
62
+ Prop4 --> Prop10
63
+ Prop9 --> Prop10
64
+ Prop1 --> Prop11
65
+ Prop3 --> Prop11
66
+ Prop8 --> Prop11
67
+ Prop11 --> Prop13
68
+ Prop13 --> Prop15
69
+ Prop3 --> Prop16
70
+ Prop4 --> Prop16
71
+ Prop10 --> Prop16
72
+ Prop15 --> Prop16
73
+ Prop3 --> Prop18
74
+ Prop5 --> Prop18
75
+ Prop16 --> Prop18
76
+ Prop5 --> Prop19
77
+ Prop18 --> Prop19
78
+ Prop3 --> Prop20
79
+ Prop5 --> Prop20
80
+ Prop19 --> Prop20
81
+ Prop3 --> Prop22
82
+ Prop20 --> Prop22
83
+ Prop8 --> Prop23
84
+ Prop22 --> Prop23
85
+ Prop3 --> Prop26
86
+ Prop4 --> Prop26
87
+ Prop16 --> Prop26
88
+ Prop16 --> Prop27
89
+ Prop13 --> Prop29
90
+ Prop15 --> Prop29
91
+ Prop27 --> Prop29
92
+ P5 --> Prop29
93
+ Prop23 --> Prop31
94
+ Prop27 --> Prop31
95
+ Prop13 --> Prop32
96
+ Prop29 --> Prop32
97
+ Prop31 --> Prop32
98
+ Prop4 --> Prop33
99
+ Prop27 --> Prop33
100
+ Prop29 --> Prop33
101
+ Prop4 --> Prop34
102
+ Prop26 --> Prop34
103
+ Prop29 --> Prop34
104
+ Prop4 --> Prop35
105
+ Prop29 --> Prop35
106
+ Prop34 --> Prop35
107
+ Prop33 --> Prop36
108
+ Prop34 --> Prop36
109
+ Prop35 --> Prop36
110
+ Prop31 --> Prop37
111
+ Prop34 --> Prop37
112
+ Prop35 --> Prop37
113
+ Prop31 --> Prop38
114
+ Prop34 --> Prop38
115
+ Prop36 --> Prop38
116
+ Prop31 --> Prop39
117
+ Prop37 --> Prop39
118
+ Prop31 --> Prop40
119
+ Prop38 --> Prop40
120
+ Prop34 --> Prop41
121
+ Prop37 --> Prop41
122
+ classDef postulate fill:#e74c3c,color:#fff,stroke:#c0392b
123
+ classDef commonNotion fill:#9b59b6,color:#fff,stroke:#8e44ad
124
+ classDef proposition fill:#1abc9c,color:#fff,stroke:#16a085
125
+ class P1,P2,P3,P4,P5 postulate
126
+ class CN1,CN2,CN3,CN4,CN5 commonNotion
127
+ class Prop1,Prop2,Prop3,Prop4,Prop5,Prop7,Prop8,Prop9,Prop10,Prop11,Prop13,Prop15,Prop16,Prop18,Prop19,Prop20,Prop22,Prop23,Prop26,Prop27,Prop29,Prop31,Prop32,Prop33,Prop34,Prop35,Prop36,Prop37,Prop38,Prop39,Prop40,Prop41 proposition
data/euclid-elements-book-i-props-42-48.mmd ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ P1["Post. 1\nDraw a straight line from any po..."]
3
+ P2["Post. 2\nProduce a finite straight line c..."]
4
+ P3["Post. 3\nDescribe a circle with any cente..."]
5
+ P4["Post. 4\nAll right angles equal one another"]
6
+ P5["Post. 5\nParallel postulate: if interior ..."]
7
+ CN1["CN 1\nThings equal to the same thing a..."]
8
+ CN2["CN 2\nIf equals are added to equals, t..."]
9
+ CN3["CN 3\nIf equals are subtracted from eq..."]
10
+ CN4["CN 4\nThings coinciding with one anoth..."]
11
+ CN5["CN 5\nThe whole is greater than the part"]
12
+ Prop1["Prop. I.1\nEquilateral triangle on given line"]
13
+ Prop2["Prop. I.2\nPlace line equal to given at point"]
14
+ Prop3["Prop. I.3\nCut off from greater segment equal to less"]
15
+ Prop4["Prop. I.4\nSAS congruence"]
16
+ Prop5["Prop. I.5\nBase angles of isosceles equal"]
17
+ Prop7["Prop. I.7\nUniqueness of triangle from ends"]
18
+ Prop8["Prop. I.8\nSSS congruence"]
19
+ Prop9["Prop. I.9\nBisect angle"]
20
+ Prop10["Prop. I.10\nBisect line"]
21
+ Prop11["Prop. I.11\nPerpendicular from point on line"]
22
+ Prop13["Prop. I.13\nAngles on line sum to two right"]
23
+ Prop14["Prop. I.14\nIf angles sum to two right, straight line"]
24
+ Prop15["Prop. I.15\nVertical angles equal"]
25
+ Prop16["Prop. I.16\nExterior angle > interior opposite"]
26
+ Prop18["Prop. I.18\nAngle opposite greater side greater"]
27
+ Prop19["Prop. I.19\nSide opposite greater angle greater"]
28
+ Prop20["Prop. I.20\nTriangle inequality"]
29
+ Prop22["Prop. I.22\nConstruct triangle from three lines"]
30
+ Prop23["Prop. I.23\nConstruct angle equal to given"]
31
+ Prop26["Prop. I.26\nAAS congruence"]
32
+ Prop27["Prop. I.27\nAlternate angles equal => parallel"]
33
+ Prop29["Prop. I.29\nParallel => alternate angles equal"]
34
+ Prop30["Prop. I.30\nTransitivity of parallel"]
35
+ Prop31["Prop. I.31\nDraw parallel through point"]
36
+ Prop33["Prop. I.33\nJoining ends of equal parallel lines"]
37
+ Prop34["Prop. I.34\nParallelogram properties"]
38
+ Prop35["Prop. I.35\nParallelograms same base equal"]
39
+ Prop36["Prop. I.36\nParallelograms equal bases equal"]
40
+ Prop37["Prop. I.37\nTriangles same base equal"]
41
+ Prop38["Prop. I.38\nTriangles equal bases equal"]
42
+ Prop41["Prop. I.41\nParallelogram = 2× triangle"]
43
+ Prop42["Prop. I.42\nConstruct parallelogram = triangle"]
44
+ Prop43["Prop. I.43\nComplements of parallelogram"]
45
+ Prop44["Prop. I.44\nApply parallelogram to line"]
46
+ Prop45["Prop. I.45\nConstruct parallelogram = rectilinear figure"]
47
+ Prop46["Prop. I.46\nConstruct square on line"]
48
+ Prop47["Prop. I.47\nPythagorean theorem"]
49
+ Prop48["Prop. I.48\nConverse Pythagorean"]
50
+ P1 --> Prop1
51
+ P3 --> Prop1
52
+ Prop1 --> Prop2
53
+ P1 --> Prop2
54
+ P2 --> Prop2
55
+ P3 --> Prop2
56
+ Prop2 --> Prop3
57
+ P3 --> Prop3
58
+ CN4 --> Prop4
59
+ CN5 --> Prop4
60
+ Prop3 --> Prop5
61
+ Prop4 --> Prop5
62
+ Prop5 --> Prop7
63
+ Prop7 --> Prop8
64
+ Prop1 --> Prop9
65
+ Prop3 --> Prop9
66
+ Prop8 --> Prop9
67
+ Prop1 --> Prop10
68
+ Prop4 --> Prop10
69
+ Prop9 --> Prop10
70
+ Prop1 --> Prop11
71
+ Prop3 --> Prop11
72
+ Prop8 --> Prop11
73
+ Prop11 --> Prop13
74
+ Prop13 --> Prop14
75
+ Prop13 --> Prop15
76
+ Prop3 --> Prop16
77
+ Prop4 --> Prop16
78
+ Prop10 --> Prop16
79
+ Prop15 --> Prop16
80
+ Prop3 --> Prop18
81
+ Prop5 --> Prop18
82
+ Prop16 --> Prop18
83
+ Prop5 --> Prop19
84
+ Prop18 --> Prop19
85
+ Prop3 --> Prop20
86
+ Prop5 --> Prop20
87
+ Prop19 --> Prop20
88
+ Prop3 --> Prop22
89
+ Prop20 --> Prop22
90
+ Prop8 --> Prop23
91
+ Prop22 --> Prop23
92
+ Prop3 --> Prop26
93
+ Prop4 --> Prop26
94
+ Prop16 --> Prop26
95
+ Prop16 --> Prop27
96
+ Prop13 --> Prop29
97
+ Prop15 --> Prop29
98
+ Prop27 --> Prop29
99
+ P5 --> Prop29
100
+ Prop29 --> Prop30
101
+ Prop23 --> Prop31
102
+ Prop27 --> Prop31
103
+ Prop4 --> Prop33
104
+ Prop27 --> Prop33
105
+ Prop29 --> Prop33
106
+ Prop4 --> Prop34
107
+ Prop26 --> Prop34
108
+ Prop29 --> Prop34
109
+ Prop4 --> Prop35
110
+ Prop29 --> Prop35
111
+ Prop34 --> Prop35
112
+ Prop33 --> Prop36
113
+ Prop34 --> Prop36
114
+ Prop35 --> Prop36
115
+ Prop31 --> Prop37
116
+ Prop34 --> Prop37
117
+ Prop35 --> Prop37
118
+ Prop31 --> Prop38
119
+ Prop34 --> Prop38
120
+ Prop36 --> Prop38
121
+ Prop34 --> Prop41
122
+ Prop37 --> Prop41
123
+ Prop10 --> Prop42
124
+ Prop23 --> Prop42
125
+ Prop31 --> Prop42
126
+ Prop38 --> Prop42
127
+ Prop41 --> Prop42
128
+ Prop34 --> Prop43
129
+ Prop15 --> Prop44
130
+ Prop29 --> Prop44
131
+ Prop31 --> Prop44
132
+ Prop42 --> Prop44
133
+ Prop43 --> Prop44
134
+ Prop14 --> Prop45
135
+ Prop29 --> Prop45
136
+ Prop30 --> Prop45
137
+ Prop33 --> Prop45
138
+ Prop34 --> Prop45
139
+ Prop42 --> Prop45
140
+ Prop44 --> Prop45
141
+ Prop3 --> Prop46
142
+ Prop11 --> Prop46
143
+ Prop29 --> Prop46
144
+ Prop31 --> Prop46
145
+ Prop34 --> Prop46
146
+ Prop4 --> Prop47
147
+ Prop14 --> Prop47
148
+ Prop31 --> Prop47
149
+ Prop41 --> Prop47
150
+ Prop46 --> Prop47
151
+ Prop3 --> Prop48
152
+ Prop8 --> Prop48
153
+ Prop11 --> Prop48
154
+ Prop47 --> Prop48
155
+ classDef postulate fill:#e74c3c,color:#fff,stroke:#c0392b
156
+ classDef commonNotion fill:#9b59b6,color:#fff,stroke:#8e44ad
157
+ classDef proposition fill:#1abc9c,color:#fff,stroke:#16a085
158
+ class P1,P2,P3,P4,P5 postulate
159
+ class CN1,CN2,CN3,CN4,CN5 commonNotion
160
+ class Prop1,Prop2,Prop3,Prop4,Prop5,Prop7,Prop8,Prop9,Prop10,Prop11,Prop13,Prop14,Prop15,Prop16,Prop18,Prop19,Prop20,Prop22,Prop23,Prop26,Prop27,Prop29,Prop30,Prop31,Prop33,Prop34,Prop35,Prop36,Prop37,Prop38,Prop41,Prop42,Prop43,Prop44,Prop45,Prop46,Prop47,Prop48 proposition
data/euclid-elements-book-i.json ADDED
@@ -0,0 +1,1167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-i",
5
+ "name": "Euclid's Elements, Book I",
6
+ "subject": "geometry",
7
+ "variant": "classical",
8
+ "description": "The 48 propositions of Book I with dependencies on postulates (P1–P5), common notions (CN1–CN5), and prior propositions. Source: David E. Joyce, Clark University.",
9
+ "structure": {
10
+ "books": 1,
11
+ "propositions": 48,
12
+ "foundationTypes": [
13
+ "postulate",
14
+ "commonNotion"
15
+ ]
16
+ }
17
+ },
18
+ "metadata": {
19
+ "created": "2026-03-15",
20
+ "lastUpdated": "2026-03-15",
21
+ "version": "1.0.0",
22
+ "license": "CC BY 4.0",
23
+ "authors": [
24
+ "Welz, G."
25
+ ],
26
+ "methodology": "Programming Framework",
27
+ "citation": "Welz, G. (2026). Euclid's Elements Book I Dependency Graph. Programming Framework.",
28
+ "keywords": [
29
+ "Euclid",
30
+ "Elements",
31
+ "Book I",
32
+ "plane geometry",
33
+ "constructions",
34
+ "Pythagorean theorem"
35
+ ]
36
+ },
37
+ "sources": [
38
+ {
39
+ "id": "joyce",
40
+ "type": "digital",
41
+ "authors": "Joyce, David E.",
42
+ "title": "Euclid's Elements, Book I",
43
+ "year": "1996",
44
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookI/bookI.html",
45
+ "notes": "Clark University; dependency table from Guide"
46
+ },
47
+ {
48
+ "id": "euclid-heath",
49
+ "type": "primary",
50
+ "authors": "Heath, T.L.",
51
+ "title": "The Thirteen Books of Euclid's Elements",
52
+ "year": "1908",
53
+ "edition": "2nd",
54
+ "publisher": "Cambridge University Press",
55
+ "url": "https://archive.org/details/euclidheath00heatiala",
56
+ "notes": "Standard English translation"
57
+ }
58
+ ],
59
+ "nodes": [
60
+ {
61
+ "id": "P1",
62
+ "type": "postulate",
63
+ "label": "Draw a straight line from any point to any point",
64
+ "shortLabel": "Post. 1",
65
+ "book": 1,
66
+ "number": 1,
67
+ "colorClass": "postulate"
68
+ },
69
+ {
70
+ "id": "P2",
71
+ "type": "postulate",
72
+ "label": "Produce a finite straight line continuously in a straight line",
73
+ "shortLabel": "Post. 2",
74
+ "book": 1,
75
+ "number": 2,
76
+ "colorClass": "postulate"
77
+ },
78
+ {
79
+ "id": "P3",
80
+ "type": "postulate",
81
+ "label": "Describe a circle with any center and radius",
82
+ "shortLabel": "Post. 3",
83
+ "book": 1,
84
+ "number": 3,
85
+ "colorClass": "postulate"
86
+ },
87
+ {
88
+ "id": "P4",
89
+ "type": "postulate",
90
+ "label": "All right angles equal one another",
91
+ "shortLabel": "Post. 4",
92
+ "book": 1,
93
+ "number": 4,
94
+ "colorClass": "postulate"
95
+ },
96
+ {
97
+ "id": "P5",
98
+ "type": "postulate",
99
+ "label": "Parallel postulate: if interior angles < two right, lines meet",
100
+ "shortLabel": "Post. 5",
101
+ "book": 1,
102
+ "number": 5,
103
+ "colorClass": "postulate"
104
+ },
105
+ {
106
+ "id": "CN1",
107
+ "type": "commonNotion",
108
+ "label": "Things equal to the same thing are equal to each other",
109
+ "shortLabel": "CN 1",
110
+ "book": 1,
111
+ "number": 1,
112
+ "colorClass": "commonNotion"
113
+ },
114
+ {
115
+ "id": "CN2",
116
+ "type": "commonNotion",
117
+ "label": "If equals are added to equals, the wholes are equal",
118
+ "shortLabel": "CN 2",
119
+ "book": 1,
120
+ "number": 2,
121
+ "colorClass": "commonNotion"
122
+ },
123
+ {
124
+ "id": "CN3",
125
+ "type": "commonNotion",
126
+ "label": "If equals are subtracted from equals, the remainders are equal",
127
+ "shortLabel": "CN 3",
128
+ "book": 1,
129
+ "number": 3,
130
+ "colorClass": "commonNotion"
131
+ },
132
+ {
133
+ "id": "CN4",
134
+ "type": "commonNotion",
135
+ "label": "Things coinciding with one another are equal",
136
+ "shortLabel": "CN 4",
137
+ "book": 1,
138
+ "number": 4,
139
+ "colorClass": "commonNotion"
140
+ },
141
+ {
142
+ "id": "CN5",
143
+ "type": "commonNotion",
144
+ "label": "The whole is greater than the part",
145
+ "shortLabel": "CN 5",
146
+ "book": 1,
147
+ "number": 5,
148
+ "colorClass": "commonNotion"
149
+ },
150
+ {
151
+ "id": "Prop1",
152
+ "type": "proposition",
153
+ "label": "To construct an equilateral triangle on a given finite straight line",
154
+ "shortLabel": "Prop. I.1",
155
+ "short": "Equilateral triangle on given line",
156
+ "book": 1,
157
+ "number": 1,
158
+ "colorClass": "proposition"
159
+ },
160
+ {
161
+ "id": "Prop2",
162
+ "type": "proposition",
163
+ "label": "To place a straight line equal to a given straight line with one end at a given point",
164
+ "shortLabel": "Prop. I.2",
165
+ "short": "Place line equal to given at point",
166
+ "book": 1,
167
+ "number": 2,
168
+ "colorClass": "proposition"
169
+ },
170
+ {
171
+ "id": "Prop3",
172
+ "type": "proposition",
173
+ "label": "To cut off from the greater of two given unequal straight lines a straight line equal to the less",
174
+ "shortLabel": "Prop. I.3",
175
+ "short": "Cut off from greater segment equal to less",
176
+ "book": 1,
177
+ "number": 3,
178
+ "colorClass": "proposition"
179
+ },
180
+ {
181
+ "id": "Prop4",
182
+ "type": "proposition",
183
+ "label": "If two triangles have two sides equal to two sides respectively, and the angles contained equal, then bases and remaining angles equal",
184
+ "shortLabel": "Prop. I.4",
185
+ "short": "SAS congruence",
186
+ "book": 1,
187
+ "number": 4,
188
+ "colorClass": "proposition"
189
+ },
190
+ {
191
+ "id": "Prop5",
192
+ "type": "proposition",
193
+ "label": "In isosceles triangles the angles at the base equal one another",
194
+ "shortLabel": "Prop. I.5",
195
+ "short": "Base angles of isosceles equal",
196
+ "book": 1,
197
+ "number": 5,
198
+ "colorClass": "proposition"
199
+ },
200
+ {
201
+ "id": "Prop6",
202
+ "type": "proposition",
203
+ "label": "If in a triangle two angles equal one another, then the sides opposite the equal angles also equal one another",
204
+ "shortLabel": "Prop. I.6",
205
+ "short": "Sides opposite equal angles equal",
206
+ "book": 1,
207
+ "number": 6,
208
+ "colorClass": "proposition"
209
+ },
210
+ {
211
+ "id": "Prop7",
212
+ "type": "proposition",
213
+ "label": "Given two lines from ends of a line meeting at a point, no other such pair from same ends on same side",
214
+ "shortLabel": "Prop. I.7",
215
+ "short": "Uniqueness of triangle from ends",
216
+ "book": 1,
217
+ "number": 7,
218
+ "colorClass": "proposition"
219
+ },
220
+ {
221
+ "id": "Prop8",
222
+ "type": "proposition",
223
+ "label": "If two triangles have two sides equal to two sides respectively, and the base equal to the base, then the angles contained are equal",
224
+ "shortLabel": "Prop. I.8",
225
+ "short": "SSS congruence",
226
+ "book": 1,
227
+ "number": 8,
228
+ "colorClass": "proposition"
229
+ },
230
+ {
231
+ "id": "Prop9",
232
+ "type": "proposition",
233
+ "label": "To bisect a given rectilinear angle",
234
+ "shortLabel": "Prop. I.9",
235
+ "short": "Bisect angle",
236
+ "book": 1,
237
+ "number": 9,
238
+ "colorClass": "proposition"
239
+ },
240
+ {
241
+ "id": "Prop10",
242
+ "type": "proposition",
243
+ "label": "To bisect a given finite straight line",
244
+ "shortLabel": "Prop. I.10",
245
+ "short": "Bisect line",
246
+ "book": 1,
247
+ "number": 10,
248
+ "colorClass": "proposition"
249
+ },
250
+ {
251
+ "id": "Prop11",
252
+ "type": "proposition",
253
+ "label": "To draw a straight line at right angles to a given straight line from a given point on it",
254
+ "shortLabel": "Prop. I.11",
255
+ "short": "Perpendicular from point on line",
256
+ "book": 1,
257
+ "number": 11,
258
+ "colorClass": "proposition"
259
+ },
260
+ {
261
+ "id": "Prop12",
262
+ "type": "proposition",
263
+ "label": "To draw a straight line perpendicular to a given infinite straight line from a given point not on it",
264
+ "shortLabel": "Prop. I.12",
265
+ "short": "Perpendicular from point not on line",
266
+ "book": 1,
267
+ "number": 12,
268
+ "colorClass": "proposition"
269
+ },
270
+ {
271
+ "id": "Prop13",
272
+ "type": "proposition",
273
+ "label": "If a straight line stands on a straight line, it makes either two right angles or angles whose sum equals two right angles",
274
+ "shortLabel": "Prop. I.13",
275
+ "short": "Angles on line sum to two right",
276
+ "book": 1,
277
+ "number": 13,
278
+ "colorClass": "proposition"
279
+ },
280
+ {
281
+ "id": "Prop14",
282
+ "type": "proposition",
283
+ "label": "If with any straight line, at a point, two lines not on same side make adjacent angles equal to two right, they are in a straight line",
284
+ "shortLabel": "Prop. I.14",
285
+ "short": "If angles sum to two right, straight line",
286
+ "book": 1,
287
+ "number": 14,
288
+ "colorClass": "proposition"
289
+ },
290
+ {
291
+ "id": "Prop15",
292
+ "type": "proposition",
293
+ "label": "If two straight lines cut one another, they make the vertical angles equal to one another",
294
+ "shortLabel": "Prop. I.15",
295
+ "short": "Vertical angles equal",
296
+ "book": 1,
297
+ "number": 15,
298
+ "colorClass": "proposition"
299
+ },
300
+ {
301
+ "id": "Prop16",
302
+ "type": "proposition",
303
+ "label": "In any triangle, if one side is produced, the exterior angle is greater than either interior opposite angle",
304
+ "shortLabel": "Prop. I.16",
305
+ "short": "Exterior angle > interior opposite",
306
+ "book": 1,
307
+ "number": 16,
308
+ "colorClass": "proposition"
309
+ },
310
+ {
311
+ "id": "Prop17",
312
+ "type": "proposition",
313
+ "label": "In any triangle the sum of any two angles is less than two right angles",
314
+ "shortLabel": "Prop. I.17",
315
+ "short": "Sum of two angles < two right",
316
+ "book": 1,
317
+ "number": 17,
318
+ "colorClass": "proposition"
319
+ },
320
+ {
321
+ "id": "Prop18",
322
+ "type": "proposition",
323
+ "label": "In any triangle the angle opposite the greater side is greater",
324
+ "shortLabel": "Prop. I.18",
325
+ "short": "Angle opposite greater side greater",
326
+ "book": 1,
327
+ "number": 18,
328
+ "colorClass": "proposition"
329
+ },
330
+ {
331
+ "id": "Prop19",
332
+ "type": "proposition",
333
+ "label": "In any triangle the side opposite the greater angle is greater",
334
+ "shortLabel": "Prop. I.19",
335
+ "short": "Side opposite greater angle greater",
336
+ "book": 1,
337
+ "number": 19,
338
+ "colorClass": "proposition"
339
+ },
340
+ {
341
+ "id": "Prop20",
342
+ "type": "proposition",
343
+ "label": "In any triangle the sum of any two sides is greater than the remaining one",
344
+ "shortLabel": "Prop. I.20",
345
+ "short": "Triangle inequality",
346
+ "book": 1,
347
+ "number": 20,
348
+ "colorClass": "proposition"
349
+ },
350
+ {
351
+ "id": "Prop21",
352
+ "type": "proposition",
353
+ "label": "If from ends of one side two lines meet within the triangle, their sum < sum of other two sides",
354
+ "shortLabel": "Prop. I.21",
355
+ "short": "Lines from ends within triangle",
356
+ "book": 1,
357
+ "number": 21,
358
+ "colorClass": "proposition"
359
+ },
360
+ {
361
+ "id": "Prop22",
362
+ "type": "proposition",
363
+ "label": "To construct a triangle out of three straight lines which equal three given straight lines",
364
+ "shortLabel": "Prop. I.22",
365
+ "short": "Construct triangle from three lines",
366
+ "book": 1,
367
+ "number": 22,
368
+ "colorClass": "proposition"
369
+ },
370
+ {
371
+ "id": "Prop23",
372
+ "type": "proposition",
373
+ "label": "To construct a rectilinear angle equal to a given rectilinear angle on a given straight line",
374
+ "shortLabel": "Prop. I.23",
375
+ "short": "Construct angle equal to given",
376
+ "book": 1,
377
+ "number": 23,
378
+ "colorClass": "proposition"
379
+ },
380
+ {
381
+ "id": "Prop24",
382
+ "type": "proposition",
383
+ "label": "If two triangles have two sides equal but one contained angle greater, the base is greater",
384
+ "shortLabel": "Prop. I.24",
385
+ "short": "SAS for greater angle => greater base",
386
+ "book": 1,
387
+ "number": 24,
388
+ "colorClass": "proposition"
389
+ },
390
+ {
391
+ "id": "Prop25",
392
+ "type": "proposition",
393
+ "label": "If two triangles have two sides equal but base greater, the contained angle is greater",
394
+ "shortLabel": "Prop. I.25",
395
+ "short": "SAS for greater base => greater angle",
396
+ "book": 1,
397
+ "number": 25,
398
+ "colorClass": "proposition"
399
+ },
400
+ {
401
+ "id": "Prop26",
402
+ "type": "proposition",
403
+ "label": "If two triangles have two angles equal and one side equal, the remaining sides and angle equal",
404
+ "shortLabel": "Prop. I.26",
405
+ "short": "AAS congruence",
406
+ "book": 1,
407
+ "number": 26,
408
+ "colorClass": "proposition"
409
+ },
410
+ {
411
+ "id": "Prop27",
412
+ "type": "proposition",
413
+ "label": "If a line falling on two lines makes alternate angles equal, the lines are parallel",
414
+ "shortLabel": "Prop. I.27",
415
+ "short": "Alternate angles equal => parallel",
416
+ "book": 1,
417
+ "number": 27,
418
+ "colorClass": "proposition"
419
+ },
420
+ {
421
+ "id": "Prop28",
422
+ "type": "proposition",
423
+ "label": "If exterior angle equals interior opposite, or interior same-side sum to two right, lines parallel",
424
+ "shortLabel": "Prop. I.28",
425
+ "short": "Exterior = interior opposite => parallel",
426
+ "book": 1,
427
+ "number": 28,
428
+ "colorClass": "proposition"
429
+ },
430
+ {
431
+ "id": "Prop29",
432
+ "type": "proposition",
433
+ "label": "A line falling on parallel lines makes alternate angles equal, exterior = interior opposite",
434
+ "shortLabel": "Prop. I.29",
435
+ "short": "Parallel => alternate angles equal",
436
+ "book": 1,
437
+ "number": 29,
438
+ "colorClass": "proposition"
439
+ },
440
+ {
441
+ "id": "Prop30",
442
+ "type": "proposition",
443
+ "label": "Straight lines parallel to the same straight line are also parallel to one another",
444
+ "shortLabel": "Prop. I.30",
445
+ "short": "Transitivity of parallel",
446
+ "book": 1,
447
+ "number": 30,
448
+ "colorClass": "proposition"
449
+ },
450
+ {
451
+ "id": "Prop31",
452
+ "type": "proposition",
453
+ "label": "To draw a straight line through a given point parallel to a given straight line",
454
+ "shortLabel": "Prop. I.31",
455
+ "short": "Draw parallel through point",
456
+ "book": 1,
457
+ "number": 31,
458
+ "colorClass": "proposition"
459
+ },
460
+ {
461
+ "id": "Prop32",
462
+ "type": "proposition",
463
+ "label": "In any triangle, exterior angle equals sum of two interior opposite; three angles = two right",
464
+ "shortLabel": "Prop. I.32",
465
+ "short": "Exterior angle = sum interior opposite",
466
+ "book": 1,
467
+ "number": 32,
468
+ "colorClass": "proposition"
469
+ },
470
+ {
471
+ "id": "Prop33",
472
+ "type": "proposition",
473
+ "label": "Straight lines which join the ends of equal and parallel straight lines in same directions are equal and parallel",
474
+ "shortLabel": "Prop. I.33",
475
+ "short": "Joining ends of equal parallel lines",
476
+ "book": 1,
477
+ "number": 33,
478
+ "colorClass": "proposition"
479
+ },
480
+ {
481
+ "id": "Prop34",
482
+ "type": "proposition",
483
+ "label": "In parallelogrammic areas the opposite sides and angles equal one another, diameter bisects",
484
+ "shortLabel": "Prop. I.34",
485
+ "short": "Parallelogram properties",
486
+ "book": 1,
487
+ "number": 34,
488
+ "colorClass": "proposition"
489
+ },
490
+ {
491
+ "id": "Prop35",
492
+ "type": "proposition",
493
+ "label": "Parallelograms which are on the same base and in the same parallels equal one another",
494
+ "shortLabel": "Prop. I.35",
495
+ "short": "Parallelograms same base equal",
496
+ "book": 1,
497
+ "number": 35,
498
+ "colorClass": "proposition"
499
+ },
500
+ {
501
+ "id": "Prop36",
502
+ "type": "proposition",
503
+ "label": "Parallelograms which are on equal bases and in the same parallels equal one another",
504
+ "shortLabel": "Prop. I.36",
505
+ "short": "Parallelograms equal bases equal",
506
+ "book": 1,
507
+ "number": 36,
508
+ "colorClass": "proposition"
509
+ },
510
+ {
511
+ "id": "Prop37",
512
+ "type": "proposition",
513
+ "label": "Triangles which are on the same base and in the same parallels equal one another",
514
+ "shortLabel": "Prop. I.37",
515
+ "short": "Triangles same base equal",
516
+ "book": 1,
517
+ "number": 37,
518
+ "colorClass": "proposition"
519
+ },
520
+ {
521
+ "id": "Prop38",
522
+ "type": "proposition",
523
+ "label": "Triangles which are on equal bases and in the same parallels equal one another",
524
+ "shortLabel": "Prop. I.38",
525
+ "short": "Triangles equal bases equal",
526
+ "book": 1,
527
+ "number": 38,
528
+ "colorClass": "proposition"
529
+ },
530
+ {
531
+ "id": "Prop39",
532
+ "type": "proposition",
533
+ "label": "Equal triangles on same base and same side are in the same parallels",
534
+ "shortLabel": "Prop. I.39",
535
+ "short": "Equal triangles same base same side",
536
+ "book": 1,
537
+ "number": 39,
538
+ "colorClass": "proposition"
539
+ },
540
+ {
541
+ "id": "Prop40",
542
+ "type": "proposition",
543
+ "label": "Equal triangles on equal bases and same side are in the same parallels",
544
+ "shortLabel": "Prop. I.40",
545
+ "short": "Equal triangles equal bases same side",
546
+ "book": 1,
547
+ "number": 40,
548
+ "colorClass": "proposition"
549
+ },
550
+ {
551
+ "id": "Prop41",
552
+ "type": "proposition",
553
+ "label": "If a parallelogram has same base with triangle and same parallels, parallelogram is double the triangle",
554
+ "shortLabel": "Prop. I.41",
555
+ "short": "Parallelogram = 2× triangle",
556
+ "book": 1,
557
+ "number": 41,
558
+ "colorClass": "proposition"
559
+ },
560
+ {
561
+ "id": "Prop42",
562
+ "type": "proposition",
563
+ "label": "To construct a parallelogram equal to a given triangle in a given rectilinear angle",
564
+ "shortLabel": "Prop. I.42",
565
+ "short": "Construct parallelogram = triangle",
566
+ "book": 1,
567
+ "number": 42,
568
+ "colorClass": "proposition"
569
+ },
570
+ {
571
+ "id": "Prop43",
572
+ "type": "proposition",
573
+ "label": "In any parallelogram the complements of the parallelograms about the diameter equal one another",
574
+ "shortLabel": "Prop. I.43",
575
+ "short": "Complements of parallelogram",
576
+ "book": 1,
577
+ "number": 43,
578
+ "colorClass": "proposition"
579
+ },
580
+ {
581
+ "id": "Prop44",
582
+ "type": "proposition",
583
+ "label": "To a given straight line in a given angle, to apply a parallelogram equal to a given triangle",
584
+ "shortLabel": "Prop. I.44",
585
+ "short": "Apply parallelogram to line",
586
+ "book": 1,
587
+ "number": 44,
588
+ "colorClass": "proposition"
589
+ },
590
+ {
591
+ "id": "Prop45",
592
+ "type": "proposition",
593
+ "label": "To construct a parallelogram equal to a given rectilinear figure in a given rectilinear angle",
594
+ "shortLabel": "Prop. I.45",
595
+ "short": "Construct parallelogram = rectilinear figure",
596
+ "book": 1,
597
+ "number": 45,
598
+ "colorClass": "proposition"
599
+ },
600
+ {
601
+ "id": "Prop46",
602
+ "type": "proposition",
603
+ "label": "To describe a square on a given straight line",
604
+ "shortLabel": "Prop. I.46",
605
+ "short": "Construct square on line",
606
+ "book": 1,
607
+ "number": 46,
608
+ "colorClass": "proposition"
609
+ },
610
+ {
611
+ "id": "Prop47",
612
+ "type": "proposition",
613
+ "label": "In right-angled triangles the square on the side opposite the right angle equals the sum of the squares on the sides containing the right angle",
614
+ "shortLabel": "Prop. I.47",
615
+ "short": "Pythagorean theorem",
616
+ "book": 1,
617
+ "number": 47,
618
+ "colorClass": "proposition"
619
+ },
620
+ {
621
+ "id": "Prop48",
622
+ "type": "proposition",
623
+ "label": "If in a triangle the square on one side equals the sum of squares on the other two, the angle contained by those sides is right",
624
+ "shortLabel": "Prop. I.48",
625
+ "short": "Converse Pythagorean",
626
+ "book": 1,
627
+ "number": 48,
628
+ "colorClass": "proposition"
629
+ }
630
+ ],
631
+ "edges": [
632
+ {
633
+ "from": "P1",
634
+ "to": "Prop1"
635
+ },
636
+ {
637
+ "from": "P3",
638
+ "to": "Prop1"
639
+ },
640
+ {
641
+ "from": "Prop1",
642
+ "to": "Prop2"
643
+ },
644
+ {
645
+ "from": "P1",
646
+ "to": "Prop2"
647
+ },
648
+ {
649
+ "from": "P2",
650
+ "to": "Prop2"
651
+ },
652
+ {
653
+ "from": "P3",
654
+ "to": "Prop2"
655
+ },
656
+ {
657
+ "from": "Prop2",
658
+ "to": "Prop3"
659
+ },
660
+ {
661
+ "from": "P3",
662
+ "to": "Prop3"
663
+ },
664
+ {
665
+ "from": "CN4",
666
+ "to": "Prop4"
667
+ },
668
+ {
669
+ "from": "CN5",
670
+ "to": "Prop4"
671
+ },
672
+ {
673
+ "from": "Prop3",
674
+ "to": "Prop5"
675
+ },
676
+ {
677
+ "from": "Prop4",
678
+ "to": "Prop5"
679
+ },
680
+ {
681
+ "from": "Prop3",
682
+ "to": "Prop6"
683
+ },
684
+ {
685
+ "from": "Prop4",
686
+ "to": "Prop6"
687
+ },
688
+ {
689
+ "from": "Prop5",
690
+ "to": "Prop7"
691
+ },
692
+ {
693
+ "from": "Prop7",
694
+ "to": "Prop8"
695
+ },
696
+ {
697
+ "from": "Prop1",
698
+ "to": "Prop9"
699
+ },
700
+ {
701
+ "from": "Prop3",
702
+ "to": "Prop9"
703
+ },
704
+ {
705
+ "from": "Prop8",
706
+ "to": "Prop9"
707
+ },
708
+ {
709
+ "from": "Prop1",
710
+ "to": "Prop10"
711
+ },
712
+ {
713
+ "from": "Prop4",
714
+ "to": "Prop10"
715
+ },
716
+ {
717
+ "from": "Prop9",
718
+ "to": "Prop10"
719
+ },
720
+ {
721
+ "from": "Prop1",
722
+ "to": "Prop11"
723
+ },
724
+ {
725
+ "from": "Prop3",
726
+ "to": "Prop11"
727
+ },
728
+ {
729
+ "from": "Prop8",
730
+ "to": "Prop11"
731
+ },
732
+ {
733
+ "from": "Prop8",
734
+ "to": "Prop12"
735
+ },
736
+ {
737
+ "from": "Prop10",
738
+ "to": "Prop12"
739
+ },
740
+ {
741
+ "from": "Prop11",
742
+ "to": "Prop13"
743
+ },
744
+ {
745
+ "from": "Prop13",
746
+ "to": "Prop14"
747
+ },
748
+ {
749
+ "from": "Prop13",
750
+ "to": "Prop15"
751
+ },
752
+ {
753
+ "from": "Prop3",
754
+ "to": "Prop16"
755
+ },
756
+ {
757
+ "from": "Prop4",
758
+ "to": "Prop16"
759
+ },
760
+ {
761
+ "from": "Prop10",
762
+ "to": "Prop16"
763
+ },
764
+ {
765
+ "from": "Prop15",
766
+ "to": "Prop16"
767
+ },
768
+ {
769
+ "from": "Prop13",
770
+ "to": "Prop17"
771
+ },
772
+ {
773
+ "from": "Prop16",
774
+ "to": "Prop17"
775
+ },
776
+ {
777
+ "from": "Prop3",
778
+ "to": "Prop18"
779
+ },
780
+ {
781
+ "from": "Prop5",
782
+ "to": "Prop18"
783
+ },
784
+ {
785
+ "from": "Prop16",
786
+ "to": "Prop18"
787
+ },
788
+ {
789
+ "from": "Prop5",
790
+ "to": "Prop19"
791
+ },
792
+ {
793
+ "from": "Prop18",
794
+ "to": "Prop19"
795
+ },
796
+ {
797
+ "from": "Prop3",
798
+ "to": "Prop20"
799
+ },
800
+ {
801
+ "from": "Prop5",
802
+ "to": "Prop20"
803
+ },
804
+ {
805
+ "from": "Prop19",
806
+ "to": "Prop20"
807
+ },
808
+ {
809
+ "from": "Prop16",
810
+ "to": "Prop21"
811
+ },
812
+ {
813
+ "from": "Prop20",
814
+ "to": "Prop21"
815
+ },
816
+ {
817
+ "from": "Prop3",
818
+ "to": "Prop22"
819
+ },
820
+ {
821
+ "from": "Prop20",
822
+ "to": "Prop22"
823
+ },
824
+ {
825
+ "from": "Prop8",
826
+ "to": "Prop23"
827
+ },
828
+ {
829
+ "from": "Prop22",
830
+ "to": "Prop23"
831
+ },
832
+ {
833
+ "from": "Prop3",
834
+ "to": "Prop24"
835
+ },
836
+ {
837
+ "from": "Prop4",
838
+ "to": "Prop24"
839
+ },
840
+ {
841
+ "from": "Prop5",
842
+ "to": "Prop24"
843
+ },
844
+ {
845
+ "from": "Prop19",
846
+ "to": "Prop24"
847
+ },
848
+ {
849
+ "from": "Prop23",
850
+ "to": "Prop24"
851
+ },
852
+ {
853
+ "from": "Prop4",
854
+ "to": "Prop25"
855
+ },
856
+ {
857
+ "from": "Prop24",
858
+ "to": "Prop25"
859
+ },
860
+ {
861
+ "from": "Prop3",
862
+ "to": "Prop26"
863
+ },
864
+ {
865
+ "from": "Prop4",
866
+ "to": "Prop26"
867
+ },
868
+ {
869
+ "from": "Prop16",
870
+ "to": "Prop26"
871
+ },
872
+ {
873
+ "from": "Prop16",
874
+ "to": "Prop27"
875
+ },
876
+ {
877
+ "from": "Prop13",
878
+ "to": "Prop28"
879
+ },
880
+ {
881
+ "from": "Prop15",
882
+ "to": "Prop28"
883
+ },
884
+ {
885
+ "from": "Prop27",
886
+ "to": "Prop28"
887
+ },
888
+ {
889
+ "from": "Prop13",
890
+ "to": "Prop29"
891
+ },
892
+ {
893
+ "from": "Prop15",
894
+ "to": "Prop29"
895
+ },
896
+ {
897
+ "from": "Prop27",
898
+ "to": "Prop29"
899
+ },
900
+ {
901
+ "from": "P5",
902
+ "to": "Prop29"
903
+ },
904
+ {
905
+ "from": "Prop29",
906
+ "to": "Prop30"
907
+ },
908
+ {
909
+ "from": "Prop23",
910
+ "to": "Prop31"
911
+ },
912
+ {
913
+ "from": "Prop27",
914
+ "to": "Prop31"
915
+ },
916
+ {
917
+ "from": "Prop13",
918
+ "to": "Prop32"
919
+ },
920
+ {
921
+ "from": "Prop29",
922
+ "to": "Prop32"
923
+ },
924
+ {
925
+ "from": "Prop31",
926
+ "to": "Prop32"
927
+ },
928
+ {
929
+ "from": "Prop4",
930
+ "to": "Prop33"
931
+ },
932
+ {
933
+ "from": "Prop27",
934
+ "to": "Prop33"
935
+ },
936
+ {
937
+ "from": "Prop29",
938
+ "to": "Prop33"
939
+ },
940
+ {
941
+ "from": "Prop4",
942
+ "to": "Prop34"
943
+ },
944
+ {
945
+ "from": "Prop26",
946
+ "to": "Prop34"
947
+ },
948
+ {
949
+ "from": "Prop29",
950
+ "to": "Prop34"
951
+ },
952
+ {
953
+ "from": "Prop4",
954
+ "to": "Prop35"
955
+ },
956
+ {
957
+ "from": "Prop29",
958
+ "to": "Prop35"
959
+ },
960
+ {
961
+ "from": "Prop34",
962
+ "to": "Prop35"
963
+ },
964
+ {
965
+ "from": "Prop33",
966
+ "to": "Prop36"
967
+ },
968
+ {
969
+ "from": "Prop34",
970
+ "to": "Prop36"
971
+ },
972
+ {
973
+ "from": "Prop35",
974
+ "to": "Prop36"
975
+ },
976
+ {
977
+ "from": "Prop31",
978
+ "to": "Prop37"
979
+ },
980
+ {
981
+ "from": "Prop34",
982
+ "to": "Prop37"
983
+ },
984
+ {
985
+ "from": "Prop35",
986
+ "to": "Prop37"
987
+ },
988
+ {
989
+ "from": "Prop31",
990
+ "to": "Prop38"
991
+ },
992
+ {
993
+ "from": "Prop34",
994
+ "to": "Prop38"
995
+ },
996
+ {
997
+ "from": "Prop36",
998
+ "to": "Prop38"
999
+ },
1000
+ {
1001
+ "from": "Prop31",
1002
+ "to": "Prop39"
1003
+ },
1004
+ {
1005
+ "from": "Prop37",
1006
+ "to": "Prop39"
1007
+ },
1008
+ {
1009
+ "from": "Prop31",
1010
+ "to": "Prop40"
1011
+ },
1012
+ {
1013
+ "from": "Prop38",
1014
+ "to": "Prop40"
1015
+ },
1016
+ {
1017
+ "from": "Prop34",
1018
+ "to": "Prop41"
1019
+ },
1020
+ {
1021
+ "from": "Prop37",
1022
+ "to": "Prop41"
1023
+ },
1024
+ {
1025
+ "from": "Prop10",
1026
+ "to": "Prop42"
1027
+ },
1028
+ {
1029
+ "from": "Prop23",
1030
+ "to": "Prop42"
1031
+ },
1032
+ {
1033
+ "from": "Prop31",
1034
+ "to": "Prop42"
1035
+ },
1036
+ {
1037
+ "from": "Prop38",
1038
+ "to": "Prop42"
1039
+ },
1040
+ {
1041
+ "from": "Prop41",
1042
+ "to": "Prop42"
1043
+ },
1044
+ {
1045
+ "from": "Prop34",
1046
+ "to": "Prop43"
1047
+ },
1048
+ {
1049
+ "from": "Prop15",
1050
+ "to": "Prop44"
1051
+ },
1052
+ {
1053
+ "from": "Prop29",
1054
+ "to": "Prop44"
1055
+ },
1056
+ {
1057
+ "from": "Prop31",
1058
+ "to": "Prop44"
1059
+ },
1060
+ {
1061
+ "from": "Prop42",
1062
+ "to": "Prop44"
1063
+ },
1064
+ {
1065
+ "from": "Prop43",
1066
+ "to": "Prop44"
1067
+ },
1068
+ {
1069
+ "from": "Prop14",
1070
+ "to": "Prop45"
1071
+ },
1072
+ {
1073
+ "from": "Prop29",
1074
+ "to": "Prop45"
1075
+ },
1076
+ {
1077
+ "from": "Prop30",
1078
+ "to": "Prop45"
1079
+ },
1080
+ {
1081
+ "from": "Prop33",
1082
+ "to": "Prop45"
1083
+ },
1084
+ {
1085
+ "from": "Prop34",
1086
+ "to": "Prop45"
1087
+ },
1088
+ {
1089
+ "from": "Prop42",
1090
+ "to": "Prop45"
1091
+ },
1092
+ {
1093
+ "from": "Prop44",
1094
+ "to": "Prop45"
1095
+ },
1096
+ {
1097
+ "from": "Prop3",
1098
+ "to": "Prop46"
1099
+ },
1100
+ {
1101
+ "from": "Prop11",
1102
+ "to": "Prop46"
1103
+ },
1104
+ {
1105
+ "from": "Prop29",
1106
+ "to": "Prop46"
1107
+ },
1108
+ {
1109
+ "from": "Prop31",
1110
+ "to": "Prop46"
1111
+ },
1112
+ {
1113
+ "from": "Prop34",
1114
+ "to": "Prop46"
1115
+ },
1116
+ {
1117
+ "from": "Prop4",
1118
+ "to": "Prop47"
1119
+ },
1120
+ {
1121
+ "from": "Prop14",
1122
+ "to": "Prop47"
1123
+ },
1124
+ {
1125
+ "from": "Prop31",
1126
+ "to": "Prop47"
1127
+ },
1128
+ {
1129
+ "from": "Prop41",
1130
+ "to": "Prop47"
1131
+ },
1132
+ {
1133
+ "from": "Prop46",
1134
+ "to": "Prop47"
1135
+ },
1136
+ {
1137
+ "from": "Prop3",
1138
+ "to": "Prop48"
1139
+ },
1140
+ {
1141
+ "from": "Prop8",
1142
+ "to": "Prop48"
1143
+ },
1144
+ {
1145
+ "from": "Prop11",
1146
+ "to": "Prop48"
1147
+ },
1148
+ {
1149
+ "from": "Prop47",
1150
+ "to": "Prop48"
1151
+ }
1152
+ ],
1153
+ "colorScheme": {
1154
+ "postulate": {
1155
+ "fill": "#e74c3c",
1156
+ "stroke": "#c0392b"
1157
+ },
1158
+ "commonNotion": {
1159
+ "fill": "#9b59b6",
1160
+ "stroke": "#8e44ad"
1161
+ },
1162
+ "proposition": {
1163
+ "fill": "#1abc9c",
1164
+ "stroke": "#16a085"
1165
+ }
1166
+ }
1167
+ }
data/euclid-elements-book-i.mmd ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ P1["Post. 1\nDraw a straight line from any po..."]
3
+ P2["Post. 2\nProduce a finite straight line c..."]
4
+ P3["Post. 3\nDescribe a circle with any cente..."]
5
+ P4["Post. 4\nAll right angles equal one another"]
6
+ P5["Post. 5\nParallel postulate: if interior ..."]
7
+ CN1["CN 1\nThings equal to the same thing a..."]
8
+ CN2["CN 2\nIf equals are added to equals, t..."]
9
+ CN3["CN 3\nIf equals are subtracted from eq..."]
10
+ CN4["CN 4\nThings coinciding with one anoth..."]
11
+ CN5["CN 5\nThe whole is greater than the part"]
12
+ Prop1["Prop. I.1\nEquilateral triangle on given line"]
13
+ Prop2["Prop. I.2\nPlace line equal to given at point"]
14
+ Prop3["Prop. I.3\nCut off from greater segment equal to less"]
15
+ Prop4["Prop. I.4\nSAS congruence"]
16
+ Prop5["Prop. I.5\nBase angles of isosceles equal"]
17
+ Prop6["Prop. I.6\nSides opposite equal angles equal"]
18
+ Prop7["Prop. I.7\nUniqueness of triangle from ends"]
19
+ Prop8["Prop. I.8\nSSS congruence"]
20
+ Prop9["Prop. I.9\nBisect angle"]
21
+ Prop10["Prop. I.10\nBisect line"]
22
+ Prop11["Prop. I.11\nPerpendicular from point on line"]
23
+ Prop12["Prop. I.12\nPerpendicular from point not on line"]
24
+ Prop13["Prop. I.13\nAngles on line sum to two right"]
25
+ Prop14["Prop. I.14\nIf angles sum to two right, straight line"]
26
+ Prop15["Prop. I.15\nVertical angles equal"]
27
+ Prop16["Prop. I.16\nExterior angle > interior opposite"]
28
+ Prop17["Prop. I.17\nSum of two angles < two right"]
29
+ Prop18["Prop. I.18\nAngle opposite greater side greater"]
30
+ Prop19["Prop. I.19\nSide opposite greater angle greater"]
31
+ Prop20["Prop. I.20\nTriangle inequality"]
32
+ Prop21["Prop. I.21\nLines from ends within triangle"]
33
+ Prop22["Prop. I.22\nConstruct triangle from three lines"]
34
+ Prop23["Prop. I.23\nConstruct angle equal to given"]
35
+ Prop24["Prop. I.24\nSAS for greater angle => greater base"]
36
+ Prop25["Prop. I.25\nSAS for greater base => greater angle"]
37
+ Prop26["Prop. I.26\nAAS congruence"]
38
+ Prop27["Prop. I.27\nAlternate angles equal => parallel"]
39
+ Prop28["Prop. I.28\nExterior = interior opposite => parallel"]
40
+ Prop29["Prop. I.29\nParallel => alternate angles equal"]
41
+ Prop30["Prop. I.30\nTransitivity of parallel"]
42
+ Prop31["Prop. I.31\nDraw parallel through point"]
43
+ Prop32["Prop. I.32\nExterior angle = sum interior opposite"]
44
+ Prop33["Prop. I.33\nJoining ends of equal parallel lines"]
45
+ Prop34["Prop. I.34\nParallelogram properties"]
46
+ Prop35["Prop. I.35\nParallelograms same base equal"]
47
+ Prop36["Prop. I.36\nParallelograms equal bases equal"]
48
+ Prop37["Prop. I.37\nTriangles same base equal"]
49
+ Prop38["Prop. I.38\nTriangles equal bases equal"]
50
+ Prop39["Prop. I.39\nEqual triangles same base same side"]
51
+ Prop40["Prop. I.40\nEqual triangles equal bases same side"]
52
+ Prop41["Prop. I.41\nParallelogram = 2× triangle"]
53
+ Prop42["Prop. I.42\nConstruct parallelogram = triangle"]
54
+ Prop43["Prop. I.43\nComplements of parallelogram"]
55
+ Prop44["Prop. I.44\nApply parallelogram to line"]
56
+ Prop45["Prop. I.45\nConstruct parallelogram = rectilinear figure"]
57
+ Prop46["Prop. I.46\nConstruct square on line"]
58
+ Prop47["Prop. I.47\nPythagorean theorem"]
59
+ Prop48["Prop. I.48\nConverse Pythagorean"]
60
+ P1 --> Prop1
61
+ P3 --> Prop1
62
+ Prop1 --> Prop2
63
+ P1 --> Prop2
64
+ P2 --> Prop2
65
+ P3 --> Prop2
66
+ Prop2 --> Prop3
67
+ P3 --> Prop3
68
+ CN4 --> Prop4
69
+ CN5 --> Prop4
70
+ Prop3 --> Prop5
71
+ Prop4 --> Prop5
72
+ Prop3 --> Prop6
73
+ Prop4 --> Prop6
74
+ Prop5 --> Prop7
75
+ Prop7 --> Prop8
76
+ Prop1 --> Prop9
77
+ Prop3 --> Prop9
78
+ Prop8 --> Prop9
79
+ Prop1 --> Prop10
80
+ Prop4 --> Prop10
81
+ Prop9 --> Prop10
82
+ Prop1 --> Prop11
83
+ Prop3 --> Prop11
84
+ Prop8 --> Prop11
85
+ Prop8 --> Prop12
86
+ Prop10 --> Prop12
87
+ Prop11 --> Prop13
88
+ Prop13 --> Prop14
89
+ Prop13 --> Prop15
90
+ Prop3 --> Prop16
91
+ Prop4 --> Prop16
92
+ Prop10 --> Prop16
93
+ Prop15 --> Prop16
94
+ Prop13 --> Prop17
95
+ Prop16 --> Prop17
96
+ Prop3 --> Prop18
97
+ Prop5 --> Prop18
98
+ Prop16 --> Prop18
99
+ Prop5 --> Prop19
100
+ Prop18 --> Prop19
101
+ Prop3 --> Prop20
102
+ Prop5 --> Prop20
103
+ Prop19 --> Prop20
104
+ Prop16 --> Prop21
105
+ Prop20 --> Prop21
106
+ Prop3 --> Prop22
107
+ Prop20 --> Prop22
108
+ Prop8 --> Prop23
109
+ Prop22 --> Prop23
110
+ Prop3 --> Prop24
111
+ Prop4 --> Prop24
112
+ Prop5 --> Prop24
113
+ Prop19 --> Prop24
114
+ Prop23 --> Prop24
115
+ Prop4 --> Prop25
116
+ Prop24 --> Prop25
117
+ Prop3 --> Prop26
118
+ Prop4 --> Prop26
119
+ Prop16 --> Prop26
120
+ Prop16 --> Prop27
121
+ Prop13 --> Prop28
122
+ Prop15 --> Prop28
123
+ Prop27 --> Prop28
124
+ Prop13 --> Prop29
125
+ Prop15 --> Prop29
126
+ Prop27 --> Prop29
127
+ P5 --> Prop29
128
+ Prop29 --> Prop30
129
+ Prop23 --> Prop31
130
+ Prop27 --> Prop31
131
+ Prop13 --> Prop32
132
+ Prop29 --> Prop32
133
+ Prop31 --> Prop32
134
+ Prop4 --> Prop33
135
+ Prop27 --> Prop33
136
+ Prop29 --> Prop33
137
+ Prop4 --> Prop34
138
+ Prop26 --> Prop34
139
+ Prop29 --> Prop34
140
+ Prop4 --> Prop35
141
+ Prop29 --> Prop35
142
+ Prop34 --> Prop35
143
+ Prop33 --> Prop36
144
+ Prop34 --> Prop36
145
+ Prop35 --> Prop36
146
+ Prop31 --> Prop37
147
+ Prop34 --> Prop37
148
+ Prop35 --> Prop37
149
+ Prop31 --> Prop38
150
+ Prop34 --> Prop38
151
+ Prop36 --> Prop38
152
+ Prop31 --> Prop39
153
+ Prop37 --> Prop39
154
+ Prop31 --> Prop40
155
+ Prop38 --> Prop40
156
+ Prop34 --> Prop41
157
+ Prop37 --> Prop41
158
+ Prop10 --> Prop42
159
+ Prop23 --> Prop42
160
+ Prop31 --> Prop42
161
+ Prop38 --> Prop42
162
+ Prop41 --> Prop42
163
+ Prop34 --> Prop43
164
+ Prop15 --> Prop44
165
+ Prop29 --> Prop44
166
+ Prop31 --> Prop44
167
+ Prop42 --> Prop44
168
+ Prop43 --> Prop44
169
+ Prop14 --> Prop45
170
+ Prop29 --> Prop45
171
+ Prop30 --> Prop45
172
+ Prop33 --> Prop45
173
+ Prop34 --> Prop45
174
+ Prop42 --> Prop45
175
+ Prop44 --> Prop45
176
+ Prop3 --> Prop46
177
+ Prop11 --> Prop46
178
+ Prop29 --> Prop46
179
+ Prop31 --> Prop46
180
+ Prop34 --> Prop46
181
+ Prop4 --> Prop47
182
+ Prop14 --> Prop47
183
+ Prop31 --> Prop47
184
+ Prop41 --> Prop47
185
+ Prop46 --> Prop47
186
+ Prop3 --> Prop48
187
+ Prop8 --> Prop48
188
+ Prop11 --> Prop48
189
+ Prop47 --> Prop48
190
+ classDef postulate fill:#e74c3c,color:#fff,stroke:#c0392b
191
+ classDef commonNotion fill:#9b59b6,color:#fff,stroke:#8e44ad
192
+ classDef proposition fill:#1abc9c,color:#fff,stroke:#16a085
193
+ class P1,P2,P3,P4,P5 postulate
194
+ class CN1,CN2,CN3,CN4,CN5 commonNotion
195
+ class Prop1,Prop2,Prop3,Prop4,Prop5,Prop6,Prop7,Prop8,Prop9,Prop10,Prop11,Prop12,Prop13,Prop14,Prop15,Prop16,Prop17,Prop18,Prop19,Prop20,Prop21,Prop22,Prop23,Prop24,Prop25,Prop26,Prop27,Prop28,Prop29,Prop30,Prop31,Prop32,Prop33,Prop34,Prop35,Prop36,Prop37,Prop38,Prop39,Prop40,Prop41,Prop42,Prop43,Prop44,Prop45,Prop46,Prop47,Prop48 proposition
data/euclid-elements-book-ii.json ADDED
@@ -0,0 +1,365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-ii",
5
+ "name": "Euclid's Elements, Book II",
6
+ "subject": "geometry",
7
+ "variant": "classical",
8
+ "description": "The 14 propositions of Book II on geometric algebra (rectangles, squares). Props 1-10 are logically independent within Book II; 11-14 depend on 6, 4, 7, 5. All depend on Book I. Source: David E. Joyce, Clark University.",
9
+ "structure": {
10
+ "books": 2,
11
+ "propositions": 14,
12
+ "foundationTypes": [
13
+ "definition"
14
+ ]
15
+ }
16
+ },
17
+ "metadata": {
18
+ "created": "2026-03-15",
19
+ "lastUpdated": "2026-03-15",
20
+ "version": "1.0.0",
21
+ "license": "CC BY 4.0",
22
+ "authors": [
23
+ "Welz, G."
24
+ ],
25
+ "methodology": "Programming Framework",
26
+ "citation": "Welz, G. (2026). Euclid's Elements Book II Dependency Graph. Programming Framework.",
27
+ "keywords": [
28
+ "Euclid",
29
+ "Elements",
30
+ "Book II",
31
+ "geometric algebra",
32
+ "rectangles",
33
+ "squares",
34
+ "golden section",
35
+ "quadrature"
36
+ ]
37
+ },
38
+ "sources": [
39
+ {
40
+ "id": "joyce",
41
+ "type": "digital",
42
+ "authors": "Joyce, David E.",
43
+ "title": "Euclid's Elements, Book II",
44
+ "year": "1996",
45
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookII/bookII.html",
46
+ "notes": "Clark University; dependency table from Logical structure"
47
+ },
48
+ {
49
+ "id": "euclid-heath",
50
+ "type": "primary",
51
+ "authors": "Heath, T.L.",
52
+ "title": "The Thirteen Books of Euclid's Elements",
53
+ "year": "1908",
54
+ "edition": "2nd",
55
+ "publisher": "Cambridge University Press",
56
+ "url": "https://archive.org/details/euclidheath00heatiala",
57
+ "notes": "Standard English translation"
58
+ }
59
+ ],
60
+ "nodes": [
61
+ {
62
+ "id": "BookI",
63
+ "type": "foundation",
64
+ "label": "Book I — Fundamentals of plane geometry",
65
+ "shortLabel": "Book I",
66
+ "short": "Foundation",
67
+ "book": 1,
68
+ "colorClass": "foundation"
69
+ },
70
+ {
71
+ "id": "Def1",
72
+ "type": "definition",
73
+ "label": "Rectangle contained by two straight lines containing the right angle",
74
+ "shortLabel": "Def. II.1",
75
+ "book": 2,
76
+ "number": 1,
77
+ "colorClass": "definition"
78
+ },
79
+ {
80
+ "id": "Def2",
81
+ "type": "definition",
82
+ "label": "Gnomon: parallelogram about diameter with two complements",
83
+ "shortLabel": "Def. II.2",
84
+ "book": 2,
85
+ "number": 2,
86
+ "colorClass": "definition"
87
+ },
88
+ {
89
+ "id": "Prop1",
90
+ "type": "proposition",
91
+ "label": "If one line is cut into segments, rectangle by whole equals sum of rectangles by each segment",
92
+ "shortLabel": "Prop. II.1",
93
+ "short": "Rectangle = sum of rectangles",
94
+ "book": 2,
95
+ "number": 1,
96
+ "colorClass": "proposition"
97
+ },
98
+ {
99
+ "id": "Prop2",
100
+ "type": "proposition",
101
+ "label": "If a line is cut at random, sum of rectangles by whole and each segment equals square on whole",
102
+ "shortLabel": "Prop. II.2",
103
+ "short": "Sum of rectangles = square on whole",
104
+ "book": 2,
105
+ "number": 2,
106
+ "colorClass": "proposition"
107
+ },
108
+ {
109
+ "id": "Prop3",
110
+ "type": "proposition",
111
+ "label": "If a line is cut at random, rectangle by whole and one segment equals rectangle by segments plus square on that segment",
112
+ "shortLabel": "Prop. II.3",
113
+ "short": "Rectangle = rectangle + square",
114
+ "book": 2,
115
+ "number": 3,
116
+ "colorClass": "proposition"
117
+ },
118
+ {
119
+ "id": "Prop4",
120
+ "type": "proposition",
121
+ "label": "If a line is cut at random, square on whole equals squares on segments plus twice rectangle contained by segments",
122
+ "shortLabel": "Prop. II.4",
123
+ "short": "Square on whole = squares + 2×rectangle",
124
+ "book": 2,
125
+ "number": 4,
126
+ "colorClass": "proposition"
127
+ },
128
+ {
129
+ "id": "Prop5",
130
+ "type": "proposition",
131
+ "label": "If a line cut into equal and unequal segments, rectangle by unequal segments plus square on difference equals square on half",
132
+ "shortLabel": "Prop. II.5",
133
+ "short": "Unequal segments: rectangle + square = square on half",
134
+ "book": 2,
135
+ "number": 5,
136
+ "colorClass": "proposition"
137
+ },
138
+ {
139
+ "id": "Prop6",
140
+ "type": "proposition",
141
+ "label": "If a line bisected and added to, rectangle by whole-with-added and added plus square on half equals square on half-plus-added",
142
+ "shortLabel": "Prop. II.6",
143
+ "short": "Bisected + added: rectangle + square = square",
144
+ "book": 2,
145
+ "number": 6,
146
+ "colorClass": "proposition"
147
+ },
148
+ {
149
+ "id": "Prop7",
150
+ "type": "proposition",
151
+ "label": "If a line cut at random, square on whole plus square on one segment equals twice rectangle by whole and segment plus square on remainder",
152
+ "shortLabel": "Prop. II.7",
153
+ "short": "Square on whole + square on segment",
154
+ "book": 2,
155
+ "number": 7,
156
+ "colorClass": "proposition"
157
+ },
158
+ {
159
+ "id": "Prop8",
160
+ "type": "proposition",
161
+ "label": "If a line cut at random, four times rectangle by whole and one segment plus square on remainder equals square on whole-plus-segment",
162
+ "shortLabel": "Prop. II.8",
163
+ "short": "Four times rectangle + square",
164
+ "book": 2,
165
+ "number": 8,
166
+ "colorClass": "proposition"
167
+ },
168
+ {
169
+ "id": "Prop9",
170
+ "type": "proposition",
171
+ "label": "If a line cut into equal and unequal segments, sum of squares on unequal segments is double sum of square on half and square on difference",
172
+ "shortLabel": "Prop. II.9",
173
+ "short": "Unequal segments: sum of squares",
174
+ "book": 2,
175
+ "number": 9,
176
+ "colorClass": "proposition"
177
+ },
178
+ {
179
+ "id": "Prop10",
180
+ "type": "proposition",
181
+ "label": "If a line bisected and added to, square on whole-with-added plus square on added equals double sum of square on half and square on half-plus-added",
182
+ "shortLabel": "Prop. II.10",
183
+ "short": "Bisected + added: sum of squares",
184
+ "book": 2,
185
+ "number": 10,
186
+ "colorClass": "proposition"
187
+ },
188
+ {
189
+ "id": "Prop11",
190
+ "type": "proposition",
191
+ "label": "To cut a given line so that rectangle by whole and one segment equals square on remaining segment",
192
+ "shortLabel": "Prop. II.11",
193
+ "short": "Cut line: rectangle = square (golden section)",
194
+ "book": 2,
195
+ "number": 11,
196
+ "colorClass": "proposition"
197
+ },
198
+ {
199
+ "id": "Prop12",
200
+ "type": "proposition",
201
+ "label": "In obtuse-angled triangles, square on side opposite obtuse angle greater than sum of squares on sides containing it",
202
+ "shortLabel": "Prop. II.12",
203
+ "short": "Obtuse triangle: law of cosines",
204
+ "book": 2,
205
+ "number": 12,
206
+ "colorClass": "proposition"
207
+ },
208
+ {
209
+ "id": "Prop13",
210
+ "type": "proposition",
211
+ "label": "In acute-angled triangles, square on side opposite acute angle less than sum of squares on sides containing it",
212
+ "shortLabel": "Prop. II.13",
213
+ "short": "Acute triangle: law of cosines",
214
+ "book": 2,
215
+ "number": 13,
216
+ "colorClass": "proposition"
217
+ },
218
+ {
219
+ "id": "Prop14",
220
+ "type": "proposition",
221
+ "label": "To construct a square equal to a given rectilinear figure",
222
+ "shortLabel": "Prop. II.14",
223
+ "short": "Construct square = rectilinear figure",
224
+ "book": 2,
225
+ "number": 14,
226
+ "colorClass": "proposition"
227
+ }
228
+ ],
229
+ "edges": [
230
+ {
231
+ "from": "BookI",
232
+ "to": "Prop1"
233
+ },
234
+ {
235
+ "from": "Def1",
236
+ "to": "Prop1"
237
+ },
238
+ {
239
+ "from": "BookI",
240
+ "to": "Prop2"
241
+ },
242
+ {
243
+ "from": "Def1",
244
+ "to": "Prop2"
245
+ },
246
+ {
247
+ "from": "BookI",
248
+ "to": "Prop3"
249
+ },
250
+ {
251
+ "from": "Def1",
252
+ "to": "Prop3"
253
+ },
254
+ {
255
+ "from": "BookI",
256
+ "to": "Prop4"
257
+ },
258
+ {
259
+ "from": "Def1",
260
+ "to": "Prop4"
261
+ },
262
+ {
263
+ "from": "BookI",
264
+ "to": "Prop5"
265
+ },
266
+ {
267
+ "from": "Def1",
268
+ "to": "Prop5"
269
+ },
270
+ {
271
+ "from": "Def2",
272
+ "to": "Prop5"
273
+ },
274
+ {
275
+ "from": "BookI",
276
+ "to": "Prop6"
277
+ },
278
+ {
279
+ "from": "Def1",
280
+ "to": "Prop6"
281
+ },
282
+ {
283
+ "from": "Def2",
284
+ "to": "Prop6"
285
+ },
286
+ {
287
+ "from": "BookI",
288
+ "to": "Prop7"
289
+ },
290
+ {
291
+ "from": "Def1",
292
+ "to": "Prop7"
293
+ },
294
+ {
295
+ "from": "BookI",
296
+ "to": "Prop8"
297
+ },
298
+ {
299
+ "from": "Def1",
300
+ "to": "Prop8"
301
+ },
302
+ {
303
+ "from": "BookI",
304
+ "to": "Prop9"
305
+ },
306
+ {
307
+ "from": "Def1",
308
+ "to": "Prop9"
309
+ },
310
+ {
311
+ "from": "BookI",
312
+ "to": "Prop10"
313
+ },
314
+ {
315
+ "from": "Def1",
316
+ "to": "Prop10"
317
+ },
318
+ {
319
+ "from": "BookI",
320
+ "to": "Prop11"
321
+ },
322
+ {
323
+ "from": "Prop6",
324
+ "to": "Prop11"
325
+ },
326
+ {
327
+ "from": "BookI",
328
+ "to": "Prop12"
329
+ },
330
+ {
331
+ "from": "Prop4",
332
+ "to": "Prop12"
333
+ },
334
+ {
335
+ "from": "BookI",
336
+ "to": "Prop13"
337
+ },
338
+ {
339
+ "from": "Prop7",
340
+ "to": "Prop13"
341
+ },
342
+ {
343
+ "from": "BookI",
344
+ "to": "Prop14"
345
+ },
346
+ {
347
+ "from": "Prop5",
348
+ "to": "Prop14"
349
+ }
350
+ ],
351
+ "colorScheme": {
352
+ "foundation": {
353
+ "fill": "#95a5a6",
354
+ "stroke": "#7f8c8d"
355
+ },
356
+ "definition": {
357
+ "fill": "#3498db",
358
+ "stroke": "#2980b9"
359
+ },
360
+ "proposition": {
361
+ "fill": "#1abc9c",
362
+ "stroke": "#16a085"
363
+ }
364
+ }
365
+ }
data/euclid-elements-book-ii.mmd ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ BookI["Book I\nFoundation"]
3
+ Def1["Def. II.1\nRectangle contained by two strai..."]
4
+ Def2["Def. II.2\nGnomon: parallelogram about diam..."]
5
+ Prop1["Prop. II.1\nRectangle = sum of rectangles"]
6
+ Prop2["Prop. II.2\nSum of rectangles = square on whole"]
7
+ Prop3["Prop. II.3\nRectangle = rectangle + square"]
8
+ Prop4["Prop. II.4\nSquare on whole = squares + 2×rectangle"]
9
+ Prop5["Prop. II.5\nUnequal segments: rectangle + square = square on half"]
10
+ Prop6["Prop. II.6\nBisected + added: rectangle + square = square"]
11
+ Prop7["Prop. II.7\nSquare on whole + square on segment"]
12
+ Prop8["Prop. II.8\nFour times rectangle + square"]
13
+ Prop9["Prop. II.9\nUnequal segments: sum of squares"]
14
+ Prop10["Prop. II.10\nBisected + added: sum of squares"]
15
+ Prop11["Prop. II.11\nCut line: rectangle = square (golden section)"]
16
+ Prop12["Prop. II.12\nObtuse triangle: law of cosines"]
17
+ Prop13["Prop. II.13\nAcute triangle: law of cosines"]
18
+ Prop14["Prop. II.14\nConstruct square = rectilinear figure"]
19
+ BookI --> Prop1
20
+ Def1 --> Prop1
21
+ BookI --> Prop2
22
+ Def1 --> Prop2
23
+ BookI --> Prop3
24
+ Def1 --> Prop3
25
+ BookI --> Prop4
26
+ Def1 --> Prop4
27
+ BookI --> Prop5
28
+ Def1 --> Prop5
29
+ Def2 --> Prop5
30
+ BookI --> Prop6
31
+ Def1 --> Prop6
32
+ Def2 --> Prop6
33
+ BookI --> Prop7
34
+ Def1 --> Prop7
35
+ BookI --> Prop8
36
+ Def1 --> Prop8
37
+ BookI --> Prop9
38
+ Def1 --> Prop9
39
+ BookI --> Prop10
40
+ Def1 --> Prop10
41
+ BookI --> Prop11
42
+ Prop6 --> Prop11
43
+ BookI --> Prop12
44
+ Prop4 --> Prop12
45
+ BookI --> Prop13
46
+ Prop7 --> Prop13
47
+ BookI --> Prop14
48
+ Prop5 --> Prop14
49
+ classDef foundation fill:#95a5a6,color:#fff,stroke:#7f8c8d
50
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
51
+ classDef proposition fill:#1abc9c,color:#fff,stroke:#16a085
52
+ class BookI foundation
53
+ class Def1,Def2 definition
54
+ class Prop1,Prop2,Prop3,Prop4,Prop5,Prop6,Prop7,Prop8,Prop9,Prop10,Prop11,Prop12,Prop13,Prop14 proposition
data/euclid-elements-book-iii.json ADDED
@@ -0,0 +1,885 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-iii",
5
+ "name": "Euclid's Elements, Book III",
6
+ "subject": "geometry",
7
+ "variant": "classical",
8
+ "description": "Theory of circles: 11 definitions, 37 propositions. All depend on Book I. III.35 uses II.5. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 3,
11
+ "definitions": 11,
12
+ "propositions": 37,
13
+ "foundationTypes": [
14
+ "definition",
15
+ "foundation"
16
+ ]
17
+ }
18
+ },
19
+ "metadata": {
20
+ "created": "2026-03-15",
21
+ "lastUpdated": "2026-03-15",
22
+ "version": "1.0.0",
23
+ "license": "CC BY 4.0",
24
+ "authors": [
25
+ "Welz, G."
26
+ ],
27
+ "methodology": "Programming Framework",
28
+ "citation": "Welz, G. (2026). Euclid's Elements Book III Dependency Graph. Programming Framework.",
29
+ "keywords": [
30
+ "Euclid",
31
+ "Elements",
32
+ "Book III",
33
+ "circles",
34
+ "chords",
35
+ "tangents"
36
+ ]
37
+ },
38
+ "sources": [
39
+ {
40
+ "id": "joyce",
41
+ "type": "digital",
42
+ "authors": "Joyce, David E.",
43
+ "title": "Euclid's Elements, Book III",
44
+ "year": "1996",
45
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookIII/bookIII.html",
46
+ "notes": "Clark University"
47
+ }
48
+ ],
49
+ "nodes": [
50
+ {
51
+ "id": "BookI",
52
+ "type": "foundation",
53
+ "label": "Book I — Fundamentals of plane geometry",
54
+ "shortLabel": "Book I",
55
+ "short": "Foundation",
56
+ "book": 1,
57
+ "colorClass": "foundation"
58
+ },
59
+ {
60
+ "id": "PropII5",
61
+ "type": "foundation",
62
+ "label": "Prop. II.5 — Rectangle + square = square on half",
63
+ "shortLabel": "Prop. II.5",
64
+ "short": "From Book II",
65
+ "book": 2,
66
+ "colorClass": "foundation"
67
+ },
68
+ {
69
+ "id": "Def1",
70
+ "type": "definition",
71
+ "label": "Equal circles are those with equal radii",
72
+ "shortLabel": "Def. III.1",
73
+ "short": "Equal circles",
74
+ "book": 3,
75
+ "number": 1,
76
+ "colorClass": "definition"
77
+ },
78
+ {
79
+ "id": "Def2",
80
+ "type": "definition",
81
+ "label": "A straight line touches a circle if it meets but does not cut it",
82
+ "shortLabel": "Def. III.2",
83
+ "short": "Tangent",
84
+ "book": 3,
85
+ "number": 2,
86
+ "colorClass": "definition"
87
+ },
88
+ {
89
+ "id": "Def3",
90
+ "type": "definition",
91
+ "label": "Circles touch one another if they meet but do not cut",
92
+ "shortLabel": "Def. III.3",
93
+ "short": "Circles touching",
94
+ "book": 3,
95
+ "number": 3,
96
+ "colorClass": "definition"
97
+ },
98
+ {
99
+ "id": "Def4",
100
+ "type": "definition",
101
+ "label": "Lines equally distant from center when perpendiculars from center equal",
102
+ "shortLabel": "Def. III.4",
103
+ "short": "Equally distant from center",
104
+ "book": 3,
105
+ "number": 4,
106
+ "colorClass": "definition"
107
+ },
108
+ {
109
+ "id": "Def5",
110
+ "type": "definition",
111
+ "label": "Greater distance when greater perpendicular falls",
112
+ "shortLabel": "Def. III.5",
113
+ "short": "Greater distance",
114
+ "book": 3,
115
+ "number": 5,
116
+ "colorClass": "definition"
117
+ },
118
+ {
119
+ "id": "Def6",
120
+ "type": "definition",
121
+ "label": "Segment of circle: figure contained by straight line and circumference",
122
+ "shortLabel": "Def. III.6",
123
+ "short": "Segment of circle",
124
+ "book": 3,
125
+ "number": 6,
126
+ "colorClass": "definition"
127
+ },
128
+ {
129
+ "id": "Def7",
130
+ "type": "definition",
131
+ "label": "Angle of segment: contained by straight line and circumference",
132
+ "shortLabel": "Def. III.7",
133
+ "short": "Angle of segment",
134
+ "book": 3,
135
+ "number": 7,
136
+ "colorClass": "definition"
137
+ },
138
+ {
139
+ "id": "Def8",
140
+ "type": "definition",
141
+ "label": "Angle in segment: contained by straight lines joining circumference",
142
+ "shortLabel": "Def. III.8",
143
+ "short": "Angle in segment",
144
+ "book": 3,
145
+ "number": 8,
146
+ "colorClass": "definition"
147
+ },
148
+ {
149
+ "id": "Def9",
150
+ "type": "definition",
151
+ "label": "Angle stands on circumference when lines cut off that circumference",
152
+ "shortLabel": "Def. III.9",
153
+ "short": "Angle stands on circumference",
154
+ "book": 3,
155
+ "number": 9,
156
+ "colorClass": "definition"
157
+ },
158
+ {
159
+ "id": "Def10",
160
+ "type": "definition",
161
+ "label": "Sector: figure contained by two radii and circumference between them",
162
+ "shortLabel": "Def. III.10",
163
+ "short": "Sector",
164
+ "book": 3,
165
+ "number": 10,
166
+ "colorClass": "definition"
167
+ },
168
+ {
169
+ "id": "Def11",
170
+ "type": "definition",
171
+ "label": "Similar segments are those which admit equal angles",
172
+ "shortLabel": "Def. III.11",
173
+ "short": "Similar segments",
174
+ "book": 3,
175
+ "number": 11,
176
+ "colorClass": "definition"
177
+ },
178
+ {
179
+ "id": "Prop1",
180
+ "type": "proposition",
181
+ "label": "To find the center of a given circle",
182
+ "shortLabel": "Prop. III.1",
183
+ "short": "Find center of circle",
184
+ "book": 3,
185
+ "number": 1,
186
+ "colorClass": "proposition"
187
+ },
188
+ {
189
+ "id": "Prop2",
190
+ "type": "proposition",
191
+ "label": "Straight line joining two points on circumference falls within circle",
192
+ "shortLabel": "Prop. III.2",
193
+ "short": "Chord falls within circle",
194
+ "book": 3,
195
+ "number": 2,
196
+ "colorClass": "proposition"
197
+ },
198
+ {
199
+ "id": "Prop3",
200
+ "type": "proposition",
201
+ "label": "If diameter bisects chord not through center, it cuts at right angles",
202
+ "shortLabel": "Prop. III.3",
203
+ "short": "Diameter bisects chord at right angles",
204
+ "book": 3,
205
+ "number": 3,
206
+ "colorClass": "proposition"
207
+ },
208
+ {
209
+ "id": "Prop4",
210
+ "type": "proposition",
211
+ "label": "Two non-diameters cutting one another do not bisect",
212
+ "shortLabel": "Prop. III.4",
213
+ "short": "Non-diameters do not bisect",
214
+ "book": 3,
215
+ "number": 4,
216
+ "colorClass": "proposition"
217
+ },
218
+ {
219
+ "id": "Prop5",
220
+ "type": "proposition",
221
+ "label": "If two circles cut one another, they do not have same center",
222
+ "shortLabel": "Prop. III.5",
223
+ "short": "Cutting circles do not share center",
224
+ "book": 3,
225
+ "number": 5,
226
+ "colorClass": "proposition"
227
+ },
228
+ {
229
+ "id": "Prop6",
230
+ "type": "proposition",
231
+ "label": "If two circles touch, they do not have same center",
232
+ "shortLabel": "Prop. III.6",
233
+ "short": "Touching circles do not share center",
234
+ "book": 3,
235
+ "number": 6,
236
+ "colorClass": "proposition"
237
+ },
238
+ {
239
+ "id": "Prop7",
240
+ "type": "proposition",
241
+ "label": "From point on diameter: greatest through center, least is remainder",
242
+ "shortLabel": "Prop. III.7",
243
+ "short": "Greatest/shortest from point on diameter",
244
+ "book": 3,
245
+ "number": 7,
246
+ "colorClass": "proposition"
247
+ },
248
+ {
249
+ "id": "Prop8",
250
+ "type": "proposition",
251
+ "label": "From point outside: through center greatest; between point and diameter least",
252
+ "shortLabel": "Prop. III.8",
253
+ "short": "Lines from point outside circle",
254
+ "book": 3,
255
+ "number": 8,
256
+ "colorClass": "proposition"
257
+ },
258
+ {
259
+ "id": "Prop9",
260
+ "type": "proposition",
261
+ "label": "If more than two equal lines fall from point on circle, point is center",
262
+ "shortLabel": "Prop. III.9",
263
+ "short": "Three equal lines imply center",
264
+ "book": 3,
265
+ "number": 9,
266
+ "colorClass": "proposition"
267
+ },
268
+ {
269
+ "id": "Prop10",
270
+ "type": "proposition",
271
+ "label": "A circle does not cut another at more than two points",
272
+ "shortLabel": "Prop. III.10",
273
+ "short": "Circles cut at most two points",
274
+ "book": 3,
275
+ "number": 10,
276
+ "colorClass": "proposition"
277
+ },
278
+ {
279
+ "id": "Prop11",
280
+ "type": "proposition",
281
+ "label": "Line joining centers of internally touching circles passes through contact",
282
+ "shortLabel": "Prop. III.11",
283
+ "short": "Internally touching circles",
284
+ "book": 3,
285
+ "number": 11,
286
+ "colorClass": "proposition"
287
+ },
288
+ {
289
+ "id": "Prop12",
290
+ "type": "proposition",
291
+ "label": "Line joining centers of externally touching circles passes through contact",
292
+ "shortLabel": "Prop. III.12",
293
+ "short": "Externally touching circles",
294
+ "book": 3,
295
+ "number": 12,
296
+ "colorClass": "proposition"
297
+ },
298
+ {
299
+ "id": "Prop13",
300
+ "type": "proposition",
301
+ "label": "Circle does not touch another at more than one point",
302
+ "shortLabel": "Prop. III.13",
303
+ "short": "Circles touch at most one point",
304
+ "book": 3,
305
+ "number": 13,
306
+ "colorClass": "proposition"
307
+ },
308
+ {
309
+ "id": "Prop14",
310
+ "type": "proposition",
311
+ "label": "Equal chords equally distant from center, and conversely",
312
+ "shortLabel": "Prop. III.14",
313
+ "short": "Equal chords equally distant",
314
+ "book": 3,
315
+ "number": 14,
316
+ "colorClass": "proposition"
317
+ },
318
+ {
319
+ "id": "Prop15",
320
+ "type": "proposition",
321
+ "label": "Diameter greatest; nearer to center greater than more remote",
322
+ "shortLabel": "Prop. III.15",
323
+ "short": "Diameter greatest",
324
+ "book": 3,
325
+ "number": 15,
326
+ "colorClass": "proposition"
327
+ },
328
+ {
329
+ "id": "Prop16",
330
+ "type": "proposition",
331
+ "label": "Perpendicular at end of diameter falls outside; horn angle",
332
+ "shortLabel": "Prop. III.16",
333
+ "short": "Tangent at end of diameter",
334
+ "book": 3,
335
+ "number": 16,
336
+ "colorClass": "proposition"
337
+ },
338
+ {
339
+ "id": "Prop17",
340
+ "type": "proposition",
341
+ "label": "From given point to draw straight line touching given circle",
342
+ "shortLabel": "Prop. III.17",
343
+ "short": "Draw tangent from point",
344
+ "book": 3,
345
+ "number": 17,
346
+ "colorClass": "proposition"
347
+ },
348
+ {
349
+ "id": "Prop18",
350
+ "type": "proposition",
351
+ "label": "Radius to point of contact perpendicular to tangent",
352
+ "shortLabel": "Prop. III.18",
353
+ "short": "Radius to tangent perpendicular",
354
+ "book": 3,
355
+ "number": 18,
356
+ "colorClass": "proposition"
357
+ },
358
+ {
359
+ "id": "Prop19",
360
+ "type": "proposition",
361
+ "label": "Perpendicular from contact to tangent passes through center",
362
+ "shortLabel": "Prop. III.19",
363
+ "short": "Perpendicular from contact to center",
364
+ "book": 3,
365
+ "number": 19,
366
+ "colorClass": "proposition"
367
+ },
368
+ {
369
+ "id": "Prop20",
370
+ "type": "proposition",
371
+ "label": "Angle at center double angle at circumference on same base",
372
+ "shortLabel": "Prop. III.20",
373
+ "short": "Angle at center double angle at circumference",
374
+ "book": 3,
375
+ "number": 20,
376
+ "colorClass": "proposition"
377
+ },
378
+ {
379
+ "id": "Prop21",
380
+ "type": "proposition",
381
+ "label": "In a circle angles in same segment equal one another",
382
+ "shortLabel": "Prop. III.21",
383
+ "short": "Angles in same segment equal",
384
+ "book": 3,
385
+ "number": 21,
386
+ "colorClass": "proposition"
387
+ },
388
+ {
389
+ "id": "Prop22",
390
+ "type": "proposition",
391
+ "label": "Sum of opposite angles of cyclic quadrilateral equals two right angles",
392
+ "shortLabel": "Prop. III.22",
393
+ "short": "Opposite angles of cyclic quadrilateral",
394
+ "book": 3,
395
+ "number": 22,
396
+ "colorClass": "proposition"
397
+ },
398
+ {
399
+ "id": "Prop23",
400
+ "type": "proposition",
401
+ "label": "On same line cannot construct two similar unequal segments on same side",
402
+ "shortLabel": "Prop. III.23",
403
+ "short": "Same line, two similar unequal segments",
404
+ "book": 3,
405
+ "number": 23,
406
+ "colorClass": "proposition"
407
+ },
408
+ {
409
+ "id": "Prop24",
410
+ "type": "proposition",
411
+ "label": "Similar segments on equal straight lines equal one another",
412
+ "shortLabel": "Prop. III.24",
413
+ "short": "Similar segments on equal lines equal",
414
+ "book": 3,
415
+ "number": 24,
416
+ "colorClass": "proposition"
417
+ },
418
+ {
419
+ "id": "Prop25",
420
+ "type": "proposition",
421
+ "label": "Given segment of circle, describe complete circle",
422
+ "shortLabel": "Prop. III.25",
423
+ "short": "Complete circle from segment",
424
+ "book": 3,
425
+ "number": 25,
426
+ "colorClass": "proposition"
427
+ },
428
+ {
429
+ "id": "Prop26",
430
+ "type": "proposition",
431
+ "label": "In equal circles equal angles stand on equal circumferences",
432
+ "shortLabel": "Prop. III.26",
433
+ "short": "Equal angles stand on equal arcs",
434
+ "book": 3,
435
+ "number": 26,
436
+ "colorClass": "proposition"
437
+ },
438
+ {
439
+ "id": "Prop27",
440
+ "type": "proposition",
441
+ "label": "In equal circles angles on equal circumferences equal one another",
442
+ "shortLabel": "Prop. III.27",
443
+ "short": "Equal arcs imply equal angles",
444
+ "book": 3,
445
+ "number": 27,
446
+ "colorClass": "proposition"
447
+ },
448
+ {
449
+ "id": "Prop28",
450
+ "type": "proposition",
451
+ "label": "In equal circles equal chords cut off equal circumferences",
452
+ "shortLabel": "Prop. III.28",
453
+ "short": "Equal chords cut off equal arcs",
454
+ "book": 3,
455
+ "number": 28,
456
+ "colorClass": "proposition"
457
+ },
458
+ {
459
+ "id": "Prop29",
460
+ "type": "proposition",
461
+ "label": "In equal circles chords cutting equal circumferences are equal",
462
+ "shortLabel": "Prop. III.29",
463
+ "short": "Equal arcs imply equal chords",
464
+ "book": 3,
465
+ "number": 29,
466
+ "colorClass": "proposition"
467
+ },
468
+ {
469
+ "id": "Prop30",
470
+ "type": "proposition",
471
+ "label": "To bisect a given circumference",
472
+ "shortLabel": "Prop. III.30",
473
+ "short": "Bisect given circumference",
474
+ "book": 3,
475
+ "number": 30,
476
+ "colorClass": "proposition"
477
+ },
478
+ {
479
+ "id": "Prop31",
480
+ "type": "proposition",
481
+ "label": "Angle in semicircle right; in greater segment less; in less greater",
482
+ "shortLabel": "Prop. III.31",
483
+ "short": "Angle in semicircle is right",
484
+ "book": 3,
485
+ "number": 31,
486
+ "colorClass": "proposition"
487
+ },
488
+ {
489
+ "id": "Prop32",
490
+ "type": "proposition",
491
+ "label": "Angle with tangent equals angle in alternate segment",
492
+ "shortLabel": "Prop. III.32",
493
+ "short": "Tangent-chord angle equals alternate segment",
494
+ "book": 3,
495
+ "number": 32,
496
+ "colorClass": "proposition"
497
+ },
498
+ {
499
+ "id": "Prop33",
500
+ "type": "proposition",
501
+ "label": "On given line describe segment admitting angle equal to given",
502
+ "shortLabel": "Prop. III.33",
503
+ "short": "Segment admitting given angle",
504
+ "book": 3,
505
+ "number": 33,
506
+ "colorClass": "proposition"
507
+ },
508
+ {
509
+ "id": "Prop34",
510
+ "type": "proposition",
511
+ "label": "From given circle cut off segment admitting given angle",
512
+ "shortLabel": "Prop. III.34",
513
+ "short": "Cut off segment admitting angle",
514
+ "book": 3,
515
+ "number": 34,
516
+ "colorClass": "proposition"
517
+ },
518
+ {
519
+ "id": "Prop35",
520
+ "type": "proposition",
521
+ "label": "If chords cut one another, rectangle by segments of one equals other",
522
+ "shortLabel": "Prop. III.35",
523
+ "short": "Rectangle from chord segments equal",
524
+ "book": 3,
525
+ "number": 35,
526
+ "colorClass": "proposition"
527
+ },
528
+ {
529
+ "id": "Prop36",
530
+ "type": "proposition",
531
+ "label": "From point outside: tangent squared = secant × external part",
532
+ "shortLabel": "Prop. III.36",
533
+ "short": "Tangent squared = secant × external",
534
+ "book": 3,
535
+ "number": 36,
536
+ "colorClass": "proposition"
537
+ },
538
+ {
539
+ "id": "Prop37",
540
+ "type": "proposition",
541
+ "label": "If rectangle equals square on line, that line touches circle",
542
+ "shortLabel": "Prop. III.37",
543
+ "short": "Converse: tangent if rectangle = square",
544
+ "book": 3,
545
+ "number": 37,
546
+ "colorClass": "proposition"
547
+ }
548
+ ],
549
+ "edges": [
550
+ {
551
+ "from": "BookI",
552
+ "to": "Def1"
553
+ },
554
+ {
555
+ "from": "BookI",
556
+ "to": "Def2"
557
+ },
558
+ {
559
+ "from": "BookI",
560
+ "to": "Def3"
561
+ },
562
+ {
563
+ "from": "BookI",
564
+ "to": "Def4"
565
+ },
566
+ {
567
+ "from": "BookI",
568
+ "to": "Def5"
569
+ },
570
+ {
571
+ "from": "BookI",
572
+ "to": "Def6"
573
+ },
574
+ {
575
+ "from": "BookI",
576
+ "to": "Def7"
577
+ },
578
+ {
579
+ "from": "BookI",
580
+ "to": "Def8"
581
+ },
582
+ {
583
+ "from": "BookI",
584
+ "to": "Def9"
585
+ },
586
+ {
587
+ "from": "BookI",
588
+ "to": "Def10"
589
+ },
590
+ {
591
+ "from": "BookI",
592
+ "to": "Def11"
593
+ },
594
+ {
595
+ "from": "BookI",
596
+ "to": "Prop1"
597
+ },
598
+ {
599
+ "from": "BookI",
600
+ "to": "Prop2"
601
+ },
602
+ {
603
+ "from": "Prop1",
604
+ "to": "Prop2"
605
+ },
606
+ {
607
+ "from": "BookI",
608
+ "to": "Prop3"
609
+ },
610
+ {
611
+ "from": "Prop1",
612
+ "to": "Prop3"
613
+ },
614
+ {
615
+ "from": "BookI",
616
+ "to": "Prop4"
617
+ },
618
+ {
619
+ "from": "Prop3",
620
+ "to": "Prop4"
621
+ },
622
+ {
623
+ "from": "BookI",
624
+ "to": "Prop5"
625
+ },
626
+ {
627
+ "from": "BookI",
628
+ "to": "Prop6"
629
+ },
630
+ {
631
+ "from": "BookI",
632
+ "to": "Prop7"
633
+ },
634
+ {
635
+ "from": "BookI",
636
+ "to": "Prop8"
637
+ },
638
+ {
639
+ "from": "BookI",
640
+ "to": "Prop9"
641
+ },
642
+ {
643
+ "from": "Prop1",
644
+ "to": "Prop9"
645
+ },
646
+ {
647
+ "from": "BookI",
648
+ "to": "Prop10"
649
+ },
650
+ {
651
+ "from": "Prop1",
652
+ "to": "Prop10"
653
+ },
654
+ {
655
+ "from": "BookI",
656
+ "to": "Prop11"
657
+ },
658
+ {
659
+ "from": "BookI",
660
+ "to": "Prop12"
661
+ },
662
+ {
663
+ "from": "BookI",
664
+ "to": "Prop13"
665
+ },
666
+ {
667
+ "from": "BookI",
668
+ "to": "Prop14"
669
+ },
670
+ {
671
+ "from": "Prop3",
672
+ "to": "Prop14"
673
+ },
674
+ {
675
+ "from": "BookI",
676
+ "to": "Prop15"
677
+ },
678
+ {
679
+ "from": "Prop3",
680
+ "to": "Prop15"
681
+ },
682
+ {
683
+ "from": "BookI",
684
+ "to": "Prop16"
685
+ },
686
+ {
687
+ "from": "BookI",
688
+ "to": "Prop17"
689
+ },
690
+ {
691
+ "from": "Prop16",
692
+ "to": "Prop17"
693
+ },
694
+ {
695
+ "from": "BookI",
696
+ "to": "Prop18"
697
+ },
698
+ {
699
+ "from": "Prop1",
700
+ "to": "Prop18"
701
+ },
702
+ {
703
+ "from": "BookI",
704
+ "to": "Prop19"
705
+ },
706
+ {
707
+ "from": "Prop18",
708
+ "to": "Prop19"
709
+ },
710
+ {
711
+ "from": "BookI",
712
+ "to": "Prop20"
713
+ },
714
+ {
715
+ "from": "Prop1",
716
+ "to": "Prop20"
717
+ },
718
+ {
719
+ "from": "BookI",
720
+ "to": "Prop21"
721
+ },
722
+ {
723
+ "from": "Prop20",
724
+ "to": "Prop21"
725
+ },
726
+ {
727
+ "from": "BookI",
728
+ "to": "Prop22"
729
+ },
730
+ {
731
+ "from": "Prop21",
732
+ "to": "Prop22"
733
+ },
734
+ {
735
+ "from": "BookI",
736
+ "to": "Prop23"
737
+ },
738
+ {
739
+ "from": "BookI",
740
+ "to": "Prop24"
741
+ },
742
+ {
743
+ "from": "Prop23",
744
+ "to": "Prop24"
745
+ },
746
+ {
747
+ "from": "BookI",
748
+ "to": "Prop25"
749
+ },
750
+ {
751
+ "from": "BookI",
752
+ "to": "Prop26"
753
+ },
754
+ {
755
+ "from": "BookI",
756
+ "to": "Prop27"
757
+ },
758
+ {
759
+ "from": "Prop26",
760
+ "to": "Prop27"
761
+ },
762
+ {
763
+ "from": "BookI",
764
+ "to": "Prop28"
765
+ },
766
+ {
767
+ "from": "Prop27",
768
+ "to": "Prop28"
769
+ },
770
+ {
771
+ "from": "BookI",
772
+ "to": "Prop29"
773
+ },
774
+ {
775
+ "from": "Prop28",
776
+ "to": "Prop29"
777
+ },
778
+ {
779
+ "from": "BookI",
780
+ "to": "Prop30"
781
+ },
782
+ {
783
+ "from": "BookI",
784
+ "to": "Prop31"
785
+ },
786
+ {
787
+ "from": "Prop20",
788
+ "to": "Prop31"
789
+ },
790
+ {
791
+ "from": "BookI",
792
+ "to": "Prop32"
793
+ },
794
+ {
795
+ "from": "Prop31",
796
+ "to": "Prop32"
797
+ },
798
+ {
799
+ "from": "BookI",
800
+ "to": "Prop33"
801
+ },
802
+ {
803
+ "from": "Prop16",
804
+ "to": "Prop33"
805
+ },
806
+ {
807
+ "from": "Prop32",
808
+ "to": "Prop33"
809
+ },
810
+ {
811
+ "from": "BookI",
812
+ "to": "Prop34"
813
+ },
814
+ {
815
+ "from": "Prop32",
816
+ "to": "Prop34"
817
+ },
818
+ {
819
+ "from": "BookI",
820
+ "to": "Prop35"
821
+ },
822
+ {
823
+ "from": "Prop1",
824
+ "to": "Prop35"
825
+ },
826
+ {
827
+ "from": "Prop3",
828
+ "to": "Prop35"
829
+ },
830
+ {
831
+ "from": "PropII5",
832
+ "to": "Prop35"
833
+ },
834
+ {
835
+ "from": "BookI",
836
+ "to": "Prop36"
837
+ },
838
+ {
839
+ "from": "Prop1",
840
+ "to": "Prop36"
841
+ },
842
+ {
843
+ "from": "Prop18",
844
+ "to": "Prop36"
845
+ },
846
+ {
847
+ "from": "Prop35",
848
+ "to": "Prop36"
849
+ },
850
+ {
851
+ "from": "BookI",
852
+ "to": "Prop37"
853
+ },
854
+ {
855
+ "from": "Prop1",
856
+ "to": "Prop37"
857
+ },
858
+ {
859
+ "from": "Prop16",
860
+ "to": "Prop37"
861
+ },
862
+ {
863
+ "from": "Prop32",
864
+ "to": "Prop37"
865
+ },
866
+ {
867
+ "from": "Prop36",
868
+ "to": "Prop37"
869
+ }
870
+ ],
871
+ "colorScheme": {
872
+ "foundation": {
873
+ "fill": "#95a5a6",
874
+ "stroke": "#7f8c8d"
875
+ },
876
+ "definition": {
877
+ "fill": "#3498db",
878
+ "stroke": "#2980b9"
879
+ },
880
+ "proposition": {
881
+ "fill": "#1abc9c",
882
+ "stroke": "#16a085"
883
+ }
884
+ }
885
+ }
data/euclid-elements-book-iv.json ADDED
@@ -0,0 +1,573 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-iv",
5
+ "name": "Euclid's Elements, Book IV",
6
+ "subject": "geometry",
7
+ "variant": "classical",
8
+ "description": "Inscribed and circumscribed figures: triangle, square, pentagon, hexagon, 15-gon. All depend on Books I and III. IV.10 uses II.11. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 4,
11
+ "definitions": 7,
12
+ "propositions": 16,
13
+ "foundationTypes": [
14
+ "definition",
15
+ "foundation"
16
+ ]
17
+ }
18
+ },
19
+ "metadata": {
20
+ "created": "2026-03-15",
21
+ "lastUpdated": "2026-03-15",
22
+ "version": "1.0.0",
23
+ "license": "CC BY 4.0",
24
+ "authors": [
25
+ "Welz, G."
26
+ ],
27
+ "methodology": "Programming Framework",
28
+ "citation": "Welz, G. (2026). Euclid's Elements Book IV Dependency Graph. Programming Framework.",
29
+ "keywords": [
30
+ "Euclid",
31
+ "Elements",
32
+ "Book IV",
33
+ "inscribed",
34
+ "circumscribed",
35
+ "pentagon",
36
+ "hexagon"
37
+ ]
38
+ },
39
+ "sources": [
40
+ {
41
+ "id": "joyce",
42
+ "type": "digital",
43
+ "authors": "Joyce, David E.",
44
+ "title": "Euclid's Elements, Book IV",
45
+ "year": "1996",
46
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookIV/bookIV.html",
47
+ "notes": "Clark University; Logical structure"
48
+ }
49
+ ],
50
+ "nodes": [
51
+ {
52
+ "id": "BookI",
53
+ "type": "foundation",
54
+ "label": "Book I — Fundamentals of plane geometry",
55
+ "shortLabel": "Book I",
56
+ "short": "Foundation",
57
+ "book": 1,
58
+ "colorClass": "foundation"
59
+ },
60
+ {
61
+ "id": "BookIII",
62
+ "type": "foundation",
63
+ "label": "Book III — Theory of circles",
64
+ "shortLabel": "Book III",
65
+ "short": "Foundation",
66
+ "book": 3,
67
+ "colorClass": "foundation"
68
+ },
69
+ {
70
+ "id": "PropII11",
71
+ "type": "foundation",
72
+ "label": "Prop. II.11 — Golden section",
73
+ "shortLabel": "Prop. II.11",
74
+ "short": "From Book II",
75
+ "book": 2,
76
+ "colorClass": "foundation"
77
+ },
78
+ {
79
+ "id": "Def1",
80
+ "type": "definition",
81
+ "label": "Rectilinear figure inscribed in circle when each vertex on circumference",
82
+ "shortLabel": "Def. IV.1",
83
+ "short": "Inscribe in circle",
84
+ "book": 4,
85
+ "number": 1,
86
+ "colorClass": "definition"
87
+ },
88
+ {
89
+ "id": "Def2",
90
+ "type": "definition",
91
+ "label": "Figure circumscribed about circle when each side touches circle",
92
+ "shortLabel": "Def. IV.2",
93
+ "short": "Circumscribe about circle",
94
+ "book": 4,
95
+ "number": 2,
96
+ "colorClass": "definition"
97
+ },
98
+ {
99
+ "id": "Def3",
100
+ "type": "definition",
101
+ "label": "Circle inscribed in figure when each side touches circle",
102
+ "shortLabel": "Def. IV.3",
103
+ "short": "Inscribe circle in figure",
104
+ "book": 4,
105
+ "number": 3,
106
+ "colorClass": "definition"
107
+ },
108
+ {
109
+ "id": "Def4",
110
+ "type": "definition",
111
+ "label": "Circle circumscribed about figure when each vertex on circumference",
112
+ "shortLabel": "Def. IV.4",
113
+ "short": "Circumscribe circle about figure",
114
+ "book": 4,
115
+ "number": 4,
116
+ "colorClass": "definition"
117
+ },
118
+ {
119
+ "id": "Def5",
120
+ "type": "definition",
121
+ "label": "Figure inscribed in figure when each vertex of inner on sides of outer",
122
+ "shortLabel": "Def. IV.5",
123
+ "short": "Inscribe in figure",
124
+ "book": 4,
125
+ "number": 5,
126
+ "colorClass": "definition"
127
+ },
128
+ {
129
+ "id": "Def6",
130
+ "type": "definition",
131
+ "label": "Figure circumscribed about figure when each side of outer touches inner",
132
+ "shortLabel": "Def. IV.6",
133
+ "short": "Circumscribe about figure",
134
+ "book": 4,
135
+ "number": 6,
136
+ "colorClass": "definition"
137
+ },
138
+ {
139
+ "id": "Def7",
140
+ "type": "definition",
141
+ "label": "Straight line inscribed in circle when its ends on circumference",
142
+ "shortLabel": "Def. IV.7",
143
+ "short": "Inscribe line in circle",
144
+ "book": 4,
145
+ "number": 7,
146
+ "colorClass": "definition"
147
+ },
148
+ {
149
+ "id": "Prop1",
150
+ "type": "proposition",
151
+ "label": "To fit into given circle a straight line equal to given, not greater than diameter",
152
+ "shortLabel": "Prop. IV.1",
153
+ "short": "Fit line in circle",
154
+ "book": 4,
155
+ "number": 1,
156
+ "colorClass": "proposition"
157
+ },
158
+ {
159
+ "id": "Prop2",
160
+ "type": "proposition",
161
+ "label": "To inscribe in given circle a triangle equiangular with given triangle",
162
+ "shortLabel": "Prop. IV.2",
163
+ "short": "Inscribe triangle in circle",
164
+ "book": 4,
165
+ "number": 2,
166
+ "colorClass": "proposition"
167
+ },
168
+ {
169
+ "id": "Prop3",
170
+ "type": "proposition",
171
+ "label": "To circumscribe about given circle a triangle equiangular with given",
172
+ "shortLabel": "Prop. IV.3",
173
+ "short": "Circumscribe triangle about circle",
174
+ "book": 4,
175
+ "number": 3,
176
+ "colorClass": "proposition"
177
+ },
178
+ {
179
+ "id": "Prop4",
180
+ "type": "proposition",
181
+ "label": "To inscribe a circle in a given triangle",
182
+ "shortLabel": "Prop. IV.4",
183
+ "short": "Inscribe circle in triangle",
184
+ "book": 4,
185
+ "number": 4,
186
+ "colorClass": "proposition"
187
+ },
188
+ {
189
+ "id": "Prop5",
190
+ "type": "proposition",
191
+ "label": "To circumscribe a circle about a given triangle",
192
+ "shortLabel": "Prop. IV.5",
193
+ "short": "Circumscribe circle about triangle",
194
+ "book": 4,
195
+ "number": 5,
196
+ "colorClass": "proposition"
197
+ },
198
+ {
199
+ "id": "Prop6",
200
+ "type": "proposition",
201
+ "label": "To inscribe a square in a given circle",
202
+ "shortLabel": "Prop. IV.6",
203
+ "short": "Inscribe square in circle",
204
+ "book": 4,
205
+ "number": 6,
206
+ "colorClass": "proposition"
207
+ },
208
+ {
209
+ "id": "Prop7",
210
+ "type": "proposition",
211
+ "label": "To circumscribe a square about a given circle",
212
+ "shortLabel": "Prop. IV.7",
213
+ "short": "Circumscribe square about circle",
214
+ "book": 4,
215
+ "number": 7,
216
+ "colorClass": "proposition"
217
+ },
218
+ {
219
+ "id": "Prop8",
220
+ "type": "proposition",
221
+ "label": "To inscribe a circle in a given square",
222
+ "shortLabel": "Prop. IV.8",
223
+ "short": "Inscribe circle in square",
224
+ "book": 4,
225
+ "number": 8,
226
+ "colorClass": "proposition"
227
+ },
228
+ {
229
+ "id": "Prop9",
230
+ "type": "proposition",
231
+ "label": "To circumscribe a circle about a given square",
232
+ "shortLabel": "Prop. IV.9",
233
+ "short": "Circumscribe circle about square",
234
+ "book": 4,
235
+ "number": 9,
236
+ "colorClass": "proposition"
237
+ },
238
+ {
239
+ "id": "Prop10",
240
+ "type": "proposition",
241
+ "label": "To construct isosceles triangle with each base angle double the remaining",
242
+ "shortLabel": "Prop. IV.10",
243
+ "short": "Isosceles triangle, base angles double",
244
+ "book": 4,
245
+ "number": 10,
246
+ "colorClass": "proposition"
247
+ },
248
+ {
249
+ "id": "Prop11",
250
+ "type": "proposition",
251
+ "label": "To inscribe an equilateral equiangular pentagon in a given circle",
252
+ "shortLabel": "Prop. IV.11",
253
+ "short": "Inscribe pentagon in circle",
254
+ "book": 4,
255
+ "number": 11,
256
+ "colorClass": "proposition"
257
+ },
258
+ {
259
+ "id": "Prop12",
260
+ "type": "proposition",
261
+ "label": "To circumscribe an equilateral equiangular pentagon about a given circle",
262
+ "shortLabel": "Prop. IV.12",
263
+ "short": "Circumscribe pentagon about circle",
264
+ "book": 4,
265
+ "number": 12,
266
+ "colorClass": "proposition"
267
+ },
268
+ {
269
+ "id": "Prop13",
270
+ "type": "proposition",
271
+ "label": "To inscribe a circle in a given equilateral equiangular pentagon",
272
+ "shortLabel": "Prop. IV.13",
273
+ "short": "Inscribe circle in pentagon",
274
+ "book": 4,
275
+ "number": 13,
276
+ "colorClass": "proposition"
277
+ },
278
+ {
279
+ "id": "Prop14",
280
+ "type": "proposition",
281
+ "label": "To circumscribe a circle about a given equilateral equiangular pentagon",
282
+ "shortLabel": "Prop. IV.14",
283
+ "short": "Circumscribe circle about pentagon",
284
+ "book": 4,
285
+ "number": 14,
286
+ "colorClass": "proposition"
287
+ },
288
+ {
289
+ "id": "Prop15",
290
+ "type": "proposition",
291
+ "label": "To inscribe an equilateral equiangular hexagon in a given circle",
292
+ "shortLabel": "Prop. IV.15",
293
+ "short": "Inscribe hexagon in circle",
294
+ "book": 4,
295
+ "number": 15,
296
+ "colorClass": "proposition"
297
+ },
298
+ {
299
+ "id": "Prop16",
300
+ "type": "proposition",
301
+ "label": "To inscribe an equilateral equiangular fifteen-angled figure in a given circle",
302
+ "shortLabel": "Prop. IV.16",
303
+ "short": "Inscribe 15-gon in circle",
304
+ "book": 4,
305
+ "number": 16,
306
+ "colorClass": "proposition"
307
+ }
308
+ ],
309
+ "edges": [
310
+ {
311
+ "from": "BookI",
312
+ "to": "Def1"
313
+ },
314
+ {
315
+ "from": "BookIII",
316
+ "to": "Def1"
317
+ },
318
+ {
319
+ "from": "BookI",
320
+ "to": "Def2"
321
+ },
322
+ {
323
+ "from": "BookIII",
324
+ "to": "Def2"
325
+ },
326
+ {
327
+ "from": "BookI",
328
+ "to": "Def3"
329
+ },
330
+ {
331
+ "from": "BookIII",
332
+ "to": "Def3"
333
+ },
334
+ {
335
+ "from": "BookI",
336
+ "to": "Def4"
337
+ },
338
+ {
339
+ "from": "BookIII",
340
+ "to": "Def4"
341
+ },
342
+ {
343
+ "from": "BookI",
344
+ "to": "Def5"
345
+ },
346
+ {
347
+ "from": "BookIII",
348
+ "to": "Def5"
349
+ },
350
+ {
351
+ "from": "BookI",
352
+ "to": "Def6"
353
+ },
354
+ {
355
+ "from": "BookIII",
356
+ "to": "Def6"
357
+ },
358
+ {
359
+ "from": "BookI",
360
+ "to": "Def7"
361
+ },
362
+ {
363
+ "from": "BookIII",
364
+ "to": "Def7"
365
+ },
366
+ {
367
+ "from": "BookI",
368
+ "to": "Prop1"
369
+ },
370
+ {
371
+ "from": "BookIII",
372
+ "to": "Prop1"
373
+ },
374
+ {
375
+ "from": "BookI",
376
+ "to": "Prop2"
377
+ },
378
+ {
379
+ "from": "BookIII",
380
+ "to": "Prop2"
381
+ },
382
+ {
383
+ "from": "BookI",
384
+ "to": "Prop3"
385
+ },
386
+ {
387
+ "from": "BookIII",
388
+ "to": "Prop3"
389
+ },
390
+ {
391
+ "from": "BookI",
392
+ "to": "Prop4"
393
+ },
394
+ {
395
+ "from": "BookIII",
396
+ "to": "Prop4"
397
+ },
398
+ {
399
+ "from": "BookI",
400
+ "to": "Prop5"
401
+ },
402
+ {
403
+ "from": "BookIII",
404
+ "to": "Prop5"
405
+ },
406
+ {
407
+ "from": "BookI",
408
+ "to": "Prop6"
409
+ },
410
+ {
411
+ "from": "BookIII",
412
+ "to": "Prop6"
413
+ },
414
+ {
415
+ "from": "Prop1",
416
+ "to": "Prop6"
417
+ },
418
+ {
419
+ "from": "BookI",
420
+ "to": "Prop7"
421
+ },
422
+ {
423
+ "from": "BookIII",
424
+ "to": "Prop7"
425
+ },
426
+ {
427
+ "from": "Prop6",
428
+ "to": "Prop7"
429
+ },
430
+ {
431
+ "from": "BookI",
432
+ "to": "Prop8"
433
+ },
434
+ {
435
+ "from": "BookIII",
436
+ "to": "Prop8"
437
+ },
438
+ {
439
+ "from": "Prop7",
440
+ "to": "Prop8"
441
+ },
442
+ {
443
+ "from": "BookI",
444
+ "to": "Prop9"
445
+ },
446
+ {
447
+ "from": "BookIII",
448
+ "to": "Prop9"
449
+ },
450
+ {
451
+ "from": "Prop8",
452
+ "to": "Prop9"
453
+ },
454
+ {
455
+ "from": "BookI",
456
+ "to": "Prop10"
457
+ },
458
+ {
459
+ "from": "BookIII",
460
+ "to": "Prop10"
461
+ },
462
+ {
463
+ "from": "Prop1",
464
+ "to": "Prop10"
465
+ },
466
+ {
467
+ "from": "Prop5",
468
+ "to": "Prop10"
469
+ },
470
+ {
471
+ "from": "PropII11",
472
+ "to": "Prop10"
473
+ },
474
+ {
475
+ "from": "BookI",
476
+ "to": "Prop11"
477
+ },
478
+ {
479
+ "from": "BookIII",
480
+ "to": "Prop11"
481
+ },
482
+ {
483
+ "from": "Prop2",
484
+ "to": "Prop11"
485
+ },
486
+ {
487
+ "from": "Prop10",
488
+ "to": "Prop11"
489
+ },
490
+ {
491
+ "from": "BookI",
492
+ "to": "Prop12"
493
+ },
494
+ {
495
+ "from": "BookIII",
496
+ "to": "Prop12"
497
+ },
498
+ {
499
+ "from": "Prop11",
500
+ "to": "Prop12"
501
+ },
502
+ {
503
+ "from": "BookI",
504
+ "to": "Prop13"
505
+ },
506
+ {
507
+ "from": "BookIII",
508
+ "to": "Prop13"
509
+ },
510
+ {
511
+ "from": "Prop11",
512
+ "to": "Prop13"
513
+ },
514
+ {
515
+ "from": "BookI",
516
+ "to": "Prop14"
517
+ },
518
+ {
519
+ "from": "BookIII",
520
+ "to": "Prop14"
521
+ },
522
+ {
523
+ "from": "Prop11",
524
+ "to": "Prop14"
525
+ },
526
+ {
527
+ "from": "BookI",
528
+ "to": "Prop15"
529
+ },
530
+ {
531
+ "from": "BookIII",
532
+ "to": "Prop15"
533
+ },
534
+ {
535
+ "from": "Prop1",
536
+ "to": "Prop15"
537
+ },
538
+ {
539
+ "from": "BookI",
540
+ "to": "Prop16"
541
+ },
542
+ {
543
+ "from": "BookIII",
544
+ "to": "Prop16"
545
+ },
546
+ {
547
+ "from": "Prop1",
548
+ "to": "Prop16"
549
+ },
550
+ {
551
+ "from": "Prop2",
552
+ "to": "Prop16"
553
+ },
554
+ {
555
+ "from": "Prop11",
556
+ "to": "Prop16"
557
+ }
558
+ ],
559
+ "colorScheme": {
560
+ "foundation": {
561
+ "fill": "#95a5a6",
562
+ "stroke": "#7f8c8d"
563
+ },
564
+ "definition": {
565
+ "fill": "#3498db",
566
+ "stroke": "#2980b9"
567
+ },
568
+ "proposition": {
569
+ "fill": "#1abc9c",
570
+ "stroke": "#16a085"
571
+ }
572
+ }
573
+ }
data/euclid-elements-book-ix.json ADDED
@@ -0,0 +1,728 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-ix",
5
+ "name": "Euclid's Elements, Book IX",
6
+ "subject": "number_theory",
7
+ "variant": "classical",
8
+ "description": "Primes, perfect numbers, odd/even. 36 propositions. Depends on Books VII and VIII. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 9,
11
+ "propositions": 36,
12
+ "foundationTypes": [
13
+ "foundation"
14
+ ]
15
+ }
16
+ },
17
+ "metadata": {
18
+ "created": "2026-03-18",
19
+ "lastUpdated": "2026-03-18",
20
+ "version": "1.0.0",
21
+ "license": "CC BY 4.0",
22
+ "authors": [
23
+ "Welz, G."
24
+ ],
25
+ "methodology": "Programming Framework",
26
+ "citation": "Welz, G. (2026). Euclid's Elements Book IX Dependency Graph. Programming Framework.",
27
+ "keywords": [
28
+ "Euclid",
29
+ "Elements",
30
+ "Book IX",
31
+ "prime",
32
+ "perfect",
33
+ "odd",
34
+ "even"
35
+ ]
36
+ },
37
+ "sources": [
38
+ {
39
+ "id": "joyce",
40
+ "type": "digital",
41
+ "authors": "Joyce, David E.",
42
+ "title": "Euclid's Elements, Book IX",
43
+ "year": "1996",
44
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookIX/bookIX.html",
45
+ "notes": "Clark University; IX.20 infinitude of primes"
46
+ }
47
+ ],
48
+ "nodes": [
49
+ {
50
+ "id": "BookVII",
51
+ "type": "foundation",
52
+ "label": "Book VII — Number theory",
53
+ "shortLabel": "Book VII",
54
+ "short": "Foundation",
55
+ "book": 7,
56
+ "colorClass": "foundation"
57
+ },
58
+ {
59
+ "id": "BookVIII",
60
+ "type": "foundation",
61
+ "label": "Book VIII — Continued proportions",
62
+ "shortLabel": "Book VIII",
63
+ "short": "Foundation",
64
+ "book": 8,
65
+ "colorClass": "foundation"
66
+ },
67
+ {
68
+ "id": "Prop1",
69
+ "type": "proposition",
70
+ "label": "Two similar plane numbers multiplied: product is square",
71
+ "shortLabel": "Prop. IX.1",
72
+ "short": "Similar plane product square",
73
+ "book": 9,
74
+ "number": 1,
75
+ "colorClass": "proposition"
76
+ },
77
+ {
78
+ "id": "Prop2",
79
+ "type": "proposition",
80
+ "label": "Two numbers product square: they are similar plane",
81
+ "shortLabel": "Prop. IX.2",
82
+ "short": "Product square: similar plane",
83
+ "book": 9,
84
+ "number": 2,
85
+ "colorClass": "proposition"
86
+ },
87
+ {
88
+ "id": "Prop3",
89
+ "type": "proposition",
90
+ "label": "Cubic number multiplied by itself: product is cube",
91
+ "shortLabel": "Prop. IX.3",
92
+ "short": "Cube times itself",
93
+ "book": 9,
94
+ "number": 3,
95
+ "colorClass": "proposition"
96
+ },
97
+ {
98
+ "id": "Prop4",
99
+ "type": "proposition",
100
+ "label": "Cubic times cubic: product is cube",
101
+ "shortLabel": "Prop. IX.4",
102
+ "short": "Cube times cube",
103
+ "book": 9,
104
+ "number": 4,
105
+ "colorClass": "proposition"
106
+ },
107
+ {
108
+ "id": "Prop5",
109
+ "type": "proposition",
110
+ "label": "If cube times any makes cube, the multiplied is cubic",
111
+ "shortLabel": "Prop. IX.5",
112
+ "short": "Cube times any makes cube",
113
+ "book": 9,
114
+ "number": 5,
115
+ "colorClass": "proposition"
116
+ },
117
+ {
118
+ "id": "Prop6",
119
+ "type": "proposition",
120
+ "label": "If number times itself makes cubic, it is cubic",
121
+ "shortLabel": "Prop. IX.6",
122
+ "short": "Number times itself cubic",
123
+ "book": 9,
124
+ "number": 6,
125
+ "colorClass": "proposition"
126
+ },
127
+ {
128
+ "id": "Prop7",
129
+ "type": "proposition",
130
+ "label": "Composite times any: product is solid",
131
+ "shortLabel": "Prop. IX.7",
132
+ "short": "Composite times any: solid",
133
+ "book": 9,
134
+ "number": 7,
135
+ "colorClass": "proposition"
136
+ },
137
+ {
138
+ "id": "Prop8",
139
+ "type": "proposition",
140
+ "label": "Numbers from unit in continued proportion: 3rd square, 4th cube, 7th both",
141
+ "shortLabel": "Prop. IX.8",
142
+ "short": "Continued proportion from unit",
143
+ "book": 9,
144
+ "number": 8,
145
+ "colorClass": "proposition"
146
+ },
147
+ {
148
+ "id": "Prop9",
149
+ "type": "proposition",
150
+ "label": "If second from unit square, all square; if cubic, all cubic",
151
+ "shortLabel": "Prop. IX.9",
152
+ "short": "Second square: all square",
153
+ "book": 9,
154
+ "number": 9,
155
+ "colorClass": "proposition"
156
+ },
157
+ {
158
+ "id": "Prop10",
159
+ "type": "proposition",
160
+ "label": "If second not square, only 3rd and every other square; similar for cube",
161
+ "shortLabel": "Prop. IX.10",
162
+ "short": "Second not square",
163
+ "book": 9,
164
+ "number": 10,
165
+ "colorClass": "proposition"
166
+ },
167
+ {
168
+ "id": "Prop11",
169
+ "type": "proposition",
170
+ "label": "Continued proportion from unit: less measures greater",
171
+ "shortLabel": "Prop. IX.11",
172
+ "short": "Less measures greater",
173
+ "book": 9,
174
+ "number": 11,
175
+ "colorClass": "proposition"
176
+ },
177
+ {
178
+ "id": "Prop12",
179
+ "type": "proposition",
180
+ "label": "If prime measures last, it measures second from unit",
181
+ "shortLabel": "Prop. IX.12",
182
+ "short": "Prime measures last",
183
+ "book": 9,
184
+ "number": 12,
185
+ "colorClass": "proposition"
186
+ },
187
+ {
188
+ "id": "Prop13",
189
+ "type": "proposition",
190
+ "label": "Continued proportion, second prime: only proportional numbers measure last",
191
+ "shortLabel": "Prop. IX.13",
192
+ "short": "Second prime: only those measure",
193
+ "book": 9,
194
+ "number": 13,
195
+ "colorClass": "proposition"
196
+ },
197
+ {
198
+ "id": "Prop14",
199
+ "type": "proposition",
200
+ "label": "Least measured by given primes: not measured by any other prime",
201
+ "shortLabel": "Prop. IX.14",
202
+ "short": "Least measured by primes",
203
+ "book": 9,
204
+ "number": 14,
205
+ "colorClass": "proposition"
206
+ },
207
+ {
208
+ "id": "Prop15",
209
+ "type": "proposition",
210
+ "label": "Three least in ratio: sum of any two prime to remainder",
211
+ "shortLabel": "Prop. IX.15",
212
+ "short": "Three in proportion",
213
+ "book": 9,
214
+ "number": 15,
215
+ "colorClass": "proposition"
216
+ },
217
+ {
218
+ "id": "Prop16",
219
+ "type": "proposition",
220
+ "label": "Two relatively prime: no third as first to second",
221
+ "shortLabel": "Prop. IX.16",
222
+ "short": "Relatively prime: no third",
223
+ "book": 9,
224
+ "number": 16,
225
+ "colorClass": "proposition"
226
+ },
227
+ {
228
+ "id": "Prop17",
229
+ "type": "proposition",
230
+ "label": "Continued proportion, extremes prime: last not to any as first to second",
231
+ "shortLabel": "Prop. IX.17",
232
+ "short": "Extremes prime: no extension",
233
+ "book": 9,
234
+ "number": 17,
235
+ "colorClass": "proposition"
236
+ },
237
+ {
238
+ "id": "Prop18",
239
+ "type": "proposition",
240
+ "label": "Given two numbers, investigate if third proportional exists",
241
+ "shortLabel": "Prop. IX.18",
242
+ "short": "Third proportional",
243
+ "book": 9,
244
+ "number": 18,
245
+ "colorClass": "proposition"
246
+ },
247
+ {
248
+ "id": "Prop19",
249
+ "type": "proposition",
250
+ "label": "Given three numbers, investigate when fourth proportional exists",
251
+ "shortLabel": "Prop. IX.19",
252
+ "short": "Fourth proportional",
253
+ "book": 9,
254
+ "number": 19,
255
+ "colorClass": "proposition"
256
+ },
257
+ {
258
+ "id": "Prop20",
259
+ "type": "proposition",
260
+ "label": "Prime numbers are more than any assigned multitude",
261
+ "shortLabel": "Prop. IX.20",
262
+ "short": "Infinitude of primes",
263
+ "book": 9,
264
+ "number": 20,
265
+ "colorClass": "proposition"
266
+ },
267
+ {
268
+ "id": "Prop21",
269
+ "type": "proposition",
270
+ "label": "Sum of even numbers is even",
271
+ "shortLabel": "Prop. IX.21",
272
+ "short": "Sum of evens even",
273
+ "book": 9,
274
+ "number": 21,
275
+ "colorClass": "proposition"
276
+ },
277
+ {
278
+ "id": "Prop22",
279
+ "type": "proposition",
280
+ "label": "Sum of odd numbers, even multitude: sum even",
281
+ "shortLabel": "Prop. IX.22",
282
+ "short": "Sum of odds (even count) even",
283
+ "book": 9,
284
+ "number": 22,
285
+ "colorClass": "proposition"
286
+ },
287
+ {
288
+ "id": "Prop23",
289
+ "type": "proposition",
290
+ "label": "Sum of odd numbers, odd multitude: sum odd",
291
+ "shortLabel": "Prop. IX.23",
292
+ "short": "Sum of odds (odd count) odd",
293
+ "book": 9,
294
+ "number": 23,
295
+ "colorClass": "proposition"
296
+ },
297
+ {
298
+ "id": "Prop24",
299
+ "type": "proposition",
300
+ "label": "Even minus even: remainder even",
301
+ "shortLabel": "Prop. IX.24",
302
+ "short": "Even minus even",
303
+ "book": 9,
304
+ "number": 24,
305
+ "colorClass": "proposition"
306
+ },
307
+ {
308
+ "id": "Prop25",
309
+ "type": "proposition",
310
+ "label": "Even minus odd: remainder odd",
311
+ "shortLabel": "Prop. IX.25",
312
+ "short": "Even minus odd",
313
+ "book": 9,
314
+ "number": 25,
315
+ "colorClass": "proposition"
316
+ },
317
+ {
318
+ "id": "Prop26",
319
+ "type": "proposition",
320
+ "label": "Odd minus odd: remainder even",
321
+ "shortLabel": "Prop. IX.26",
322
+ "short": "Odd minus odd",
323
+ "book": 9,
324
+ "number": 26,
325
+ "colorClass": "proposition"
326
+ },
327
+ {
328
+ "id": "Prop27",
329
+ "type": "proposition",
330
+ "label": "Odd minus even: remainder odd",
331
+ "shortLabel": "Prop. IX.27",
332
+ "short": "Odd minus even",
333
+ "book": 9,
334
+ "number": 27,
335
+ "colorClass": "proposition"
336
+ },
337
+ {
338
+ "id": "Prop28",
339
+ "type": "proposition",
340
+ "label": "Odd times even: product even",
341
+ "shortLabel": "Prop. IX.28",
342
+ "short": "Odd times even",
343
+ "book": 9,
344
+ "number": 28,
345
+ "colorClass": "proposition"
346
+ },
347
+ {
348
+ "id": "Prop29",
349
+ "type": "proposition",
350
+ "label": "Odd times odd: product odd",
351
+ "shortLabel": "Prop. IX.29",
352
+ "short": "Odd times odd",
353
+ "book": 9,
354
+ "number": 29,
355
+ "colorClass": "proposition"
356
+ },
357
+ {
358
+ "id": "Prop30",
359
+ "type": "proposition",
360
+ "label": "Odd measuring even: measures half",
361
+ "shortLabel": "Prop. IX.30",
362
+ "short": "Odd measures even",
363
+ "book": 9,
364
+ "number": 30,
365
+ "colorClass": "proposition"
366
+ },
367
+ {
368
+ "id": "Prop31",
369
+ "type": "proposition",
370
+ "label": "Odd relatively prime to any: also prime to its double",
371
+ "shortLabel": "Prop. IX.31",
372
+ "short": "Odd prime to double",
373
+ "book": 9,
374
+ "number": 31,
375
+ "colorClass": "proposition"
376
+ },
377
+ {
378
+ "id": "Prop32",
379
+ "type": "proposition",
380
+ "label": "Numbers doubled from 2: even-times even only",
381
+ "shortLabel": "Prop. IX.32",
382
+ "short": "Powers of 2",
383
+ "book": 9,
384
+ "number": 32,
385
+ "colorClass": "proposition"
386
+ },
387
+ {
388
+ "id": "Prop33",
389
+ "type": "proposition",
390
+ "label": "Number with half odd: even-times odd only",
391
+ "shortLabel": "Prop. IX.33",
392
+ "short": "Half odd",
393
+ "book": 9,
394
+ "number": 33,
395
+ "colorClass": "proposition"
396
+ },
397
+ {
398
+ "id": "Prop34",
399
+ "type": "proposition",
400
+ "label": "Number neither: both even-times even and even-times odd",
401
+ "shortLabel": "Prop. IX.34",
402
+ "short": "Neither",
403
+ "book": 9,
404
+ "number": 34,
405
+ "colorClass": "proposition"
406
+ },
407
+ {
408
+ "id": "Prop35",
409
+ "type": "proposition",
410
+ "label": "Continued proportion: (second−first):first = (last−first):sum of rest",
411
+ "shortLabel": "Prop. IX.35",
412
+ "short": "Geometric series",
413
+ "book": 9,
414
+ "number": 35,
415
+ "colorClass": "proposition"
416
+ },
417
+ {
418
+ "id": "Prop36",
419
+ "type": "proposition",
420
+ "label": "If sum of powers of 2 is prime, product with last is perfect",
421
+ "shortLabel": "Prop. IX.36",
422
+ "short": "Perfect numbers",
423
+ "book": 9,
424
+ "number": 36,
425
+ "colorClass": "proposition"
426
+ }
427
+ ],
428
+ "edges": [
429
+ {
430
+ "from": "BookVII",
431
+ "to": "Prop1"
432
+ },
433
+ {
434
+ "from": "BookVIII",
435
+ "to": "Prop1"
436
+ },
437
+ {
438
+ "from": "BookVII",
439
+ "to": "Prop2"
440
+ },
441
+ {
442
+ "from": "BookVIII",
443
+ "to": "Prop2"
444
+ },
445
+ {
446
+ "from": "BookVII",
447
+ "to": "Prop3"
448
+ },
449
+ {
450
+ "from": "BookVIII",
451
+ "to": "Prop3"
452
+ },
453
+ {
454
+ "from": "BookVII",
455
+ "to": "Prop4"
456
+ },
457
+ {
458
+ "from": "BookVIII",
459
+ "to": "Prop4"
460
+ },
461
+ {
462
+ "from": "BookVII",
463
+ "to": "Prop5"
464
+ },
465
+ {
466
+ "from": "BookVIII",
467
+ "to": "Prop5"
468
+ },
469
+ {
470
+ "from": "BookVII",
471
+ "to": "Prop6"
472
+ },
473
+ {
474
+ "from": "BookVIII",
475
+ "to": "Prop6"
476
+ },
477
+ {
478
+ "from": "BookVII",
479
+ "to": "Prop7"
480
+ },
481
+ {
482
+ "from": "BookVIII",
483
+ "to": "Prop7"
484
+ },
485
+ {
486
+ "from": "BookVII",
487
+ "to": "Prop8"
488
+ },
489
+ {
490
+ "from": "BookVIII",
491
+ "to": "Prop8"
492
+ },
493
+ {
494
+ "from": "BookVII",
495
+ "to": "Prop9"
496
+ },
497
+ {
498
+ "from": "BookVIII",
499
+ "to": "Prop9"
500
+ },
501
+ {
502
+ "from": "BookVII",
503
+ "to": "Prop10"
504
+ },
505
+ {
506
+ "from": "BookVIII",
507
+ "to": "Prop10"
508
+ },
509
+ {
510
+ "from": "BookVII",
511
+ "to": "Prop11"
512
+ },
513
+ {
514
+ "from": "BookVIII",
515
+ "to": "Prop11"
516
+ },
517
+ {
518
+ "from": "BookVII",
519
+ "to": "Prop12"
520
+ },
521
+ {
522
+ "from": "BookVIII",
523
+ "to": "Prop12"
524
+ },
525
+ {
526
+ "from": "BookVII",
527
+ "to": "Prop13"
528
+ },
529
+ {
530
+ "from": "BookVIII",
531
+ "to": "Prop13"
532
+ },
533
+ {
534
+ "from": "BookVII",
535
+ "to": "Prop14"
536
+ },
537
+ {
538
+ "from": "BookVIII",
539
+ "to": "Prop14"
540
+ },
541
+ {
542
+ "from": "BookVII",
543
+ "to": "Prop15"
544
+ },
545
+ {
546
+ "from": "BookVIII",
547
+ "to": "Prop15"
548
+ },
549
+ {
550
+ "from": "BookVII",
551
+ "to": "Prop16"
552
+ },
553
+ {
554
+ "from": "BookVIII",
555
+ "to": "Prop16"
556
+ },
557
+ {
558
+ "from": "BookVII",
559
+ "to": "Prop17"
560
+ },
561
+ {
562
+ "from": "BookVIII",
563
+ "to": "Prop17"
564
+ },
565
+ {
566
+ "from": "BookVII",
567
+ "to": "Prop18"
568
+ },
569
+ {
570
+ "from": "BookVIII",
571
+ "to": "Prop18"
572
+ },
573
+ {
574
+ "from": "BookVII",
575
+ "to": "Prop19"
576
+ },
577
+ {
578
+ "from": "BookVIII",
579
+ "to": "Prop19"
580
+ },
581
+ {
582
+ "from": "BookVII",
583
+ "to": "Prop20"
584
+ },
585
+ {
586
+ "from": "BookVIII",
587
+ "to": "Prop20"
588
+ },
589
+ {
590
+ "from": "BookVII",
591
+ "to": "Prop21"
592
+ },
593
+ {
594
+ "from": "BookVIII",
595
+ "to": "Prop21"
596
+ },
597
+ {
598
+ "from": "BookVII",
599
+ "to": "Prop22"
600
+ },
601
+ {
602
+ "from": "BookVIII",
603
+ "to": "Prop22"
604
+ },
605
+ {
606
+ "from": "BookVII",
607
+ "to": "Prop23"
608
+ },
609
+ {
610
+ "from": "BookVIII",
611
+ "to": "Prop23"
612
+ },
613
+ {
614
+ "from": "BookVII",
615
+ "to": "Prop24"
616
+ },
617
+ {
618
+ "from": "BookVIII",
619
+ "to": "Prop24"
620
+ },
621
+ {
622
+ "from": "BookVII",
623
+ "to": "Prop25"
624
+ },
625
+ {
626
+ "from": "BookVIII",
627
+ "to": "Prop25"
628
+ },
629
+ {
630
+ "from": "BookVII",
631
+ "to": "Prop26"
632
+ },
633
+ {
634
+ "from": "BookVIII",
635
+ "to": "Prop26"
636
+ },
637
+ {
638
+ "from": "BookVII",
639
+ "to": "Prop27"
640
+ },
641
+ {
642
+ "from": "BookVIII",
643
+ "to": "Prop27"
644
+ },
645
+ {
646
+ "from": "BookVII",
647
+ "to": "Prop28"
648
+ },
649
+ {
650
+ "from": "BookVIII",
651
+ "to": "Prop28"
652
+ },
653
+ {
654
+ "from": "BookVII",
655
+ "to": "Prop29"
656
+ },
657
+ {
658
+ "from": "BookVIII",
659
+ "to": "Prop29"
660
+ },
661
+ {
662
+ "from": "BookVII",
663
+ "to": "Prop30"
664
+ },
665
+ {
666
+ "from": "BookVIII",
667
+ "to": "Prop30"
668
+ },
669
+ {
670
+ "from": "BookVII",
671
+ "to": "Prop31"
672
+ },
673
+ {
674
+ "from": "BookVIII",
675
+ "to": "Prop31"
676
+ },
677
+ {
678
+ "from": "BookVII",
679
+ "to": "Prop32"
680
+ },
681
+ {
682
+ "from": "BookVIII",
683
+ "to": "Prop32"
684
+ },
685
+ {
686
+ "from": "BookVII",
687
+ "to": "Prop33"
688
+ },
689
+ {
690
+ "from": "BookVIII",
691
+ "to": "Prop33"
692
+ },
693
+ {
694
+ "from": "BookVII",
695
+ "to": "Prop34"
696
+ },
697
+ {
698
+ "from": "BookVIII",
699
+ "to": "Prop34"
700
+ },
701
+ {
702
+ "from": "BookVII",
703
+ "to": "Prop35"
704
+ },
705
+ {
706
+ "from": "BookVIII",
707
+ "to": "Prop35"
708
+ },
709
+ {
710
+ "from": "BookVII",
711
+ "to": "Prop36"
712
+ },
713
+ {
714
+ "from": "BookVIII",
715
+ "to": "Prop36"
716
+ }
717
+ ],
718
+ "colorScheme": {
719
+ "foundation": {
720
+ "fill": "#95a5a6",
721
+ "stroke": "#7f8c8d"
722
+ },
723
+ "proposition": {
724
+ "fill": "#1abc9c",
725
+ "stroke": "#16a085"
726
+ }
727
+ }
728
+ }
data/euclid-elements-book-v.json ADDED
@@ -0,0 +1,676 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-v",
5
+ "name": "Euclid's Elements, Book V",
6
+ "subject": "geometry",
7
+ "variant": "classical",
8
+ "description": "Theory of ratio and proportion (Eudoxus). 18 definitions, 25 propositions. Does not depend on previous books. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 5,
11
+ "definitions": 18,
12
+ "propositions": 25,
13
+ "foundationTypes": [
14
+ "definition"
15
+ ]
16
+ }
17
+ },
18
+ "metadata": {
19
+ "created": "2026-03-15",
20
+ "lastUpdated": "2026-03-15",
21
+ "version": "1.0.0",
22
+ "license": "CC BY 4.0",
23
+ "authors": [
24
+ "Welz, G."
25
+ ],
26
+ "methodology": "Programming Framework",
27
+ "citation": "Welz, G. (2026). Euclid's Elements Book V Dependency Graph. Programming Framework.",
28
+ "keywords": [
29
+ "Euclid",
30
+ "Elements",
31
+ "Book V",
32
+ "proportion",
33
+ "ratio",
34
+ "Eudoxus"
35
+ ]
36
+ },
37
+ "sources": [
38
+ {
39
+ "id": "joyce",
40
+ "type": "digital",
41
+ "authors": "Joyce, David E.",
42
+ "title": "Euclid's Elements, Book V",
43
+ "year": "1996",
44
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookV/bookV.html",
45
+ "notes": "Clark University; Logical structure"
46
+ }
47
+ ],
48
+ "nodes": [
49
+ {
50
+ "id": "Def1",
51
+ "type": "definition",
52
+ "label": "A magnitude is a part of a magnitude when it measures it",
53
+ "shortLabel": "Def. V.1",
54
+ "short": "Part",
55
+ "book": 5,
56
+ "number": 1,
57
+ "colorClass": "definition"
58
+ },
59
+ {
60
+ "id": "Def2",
61
+ "type": "definition",
62
+ "label": "The greater is a multiple of the less when it is measured by the less",
63
+ "shortLabel": "Def. V.2",
64
+ "short": "Multiple",
65
+ "book": 5,
66
+ "number": 2,
67
+ "colorClass": "definition"
68
+ },
69
+ {
70
+ "id": "Def3",
71
+ "type": "definition",
72
+ "label": "A ratio is a sort of relation in respect of size between two magnitudes",
73
+ "shortLabel": "Def. V.3",
74
+ "short": "Ratio",
75
+ "book": 5,
76
+ "number": 3,
77
+ "colorClass": "definition"
78
+ },
79
+ {
80
+ "id": "Def4",
81
+ "type": "definition",
82
+ "label": "Magnitudes have a ratio when the less can be multiplied to exceed the greater",
83
+ "shortLabel": "Def. V.4",
84
+ "short": "Same ratio",
85
+ "book": 5,
86
+ "number": 4,
87
+ "colorClass": "definition"
88
+ },
89
+ {
90
+ "id": "Def5",
91
+ "type": "definition",
92
+ "label": "Magnitudes in same ratio when equimultiples alike exceed, equal, or fall short",
93
+ "shortLabel": "Def. V.5",
94
+ "short": "In same ratio (Eudoxus)",
95
+ "book": 5,
96
+ "number": 5,
97
+ "colorClass": "definition"
98
+ },
99
+ {
100
+ "id": "Def6",
101
+ "type": "definition",
102
+ "label": "Magnitudes which have the same ratio are proportional",
103
+ "shortLabel": "Def. V.6",
104
+ "short": "Proportional",
105
+ "book": 5,
106
+ "number": 6,
107
+ "colorClass": "definition"
108
+ },
109
+ {
110
+ "id": "Def7",
111
+ "type": "definition",
112
+ "label": "When of equimultiples first exceeds second, third does not exceed fourth",
113
+ "shortLabel": "Def. V.7",
114
+ "short": "Greater ratio",
115
+ "book": 5,
116
+ "number": 7,
117
+ "colorClass": "definition"
118
+ },
119
+ {
120
+ "id": "Def8",
121
+ "type": "definition",
122
+ "label": "Compound ratio is the ratio of the products of corresponding terms",
123
+ "shortLabel": "Def. V.8",
124
+ "short": "Compound ratio",
125
+ "book": 5,
126
+ "number": 8,
127
+ "colorClass": "definition"
128
+ },
129
+ {
130
+ "id": "Def9",
131
+ "type": "definition",
132
+ "label": "Duplicate ratio is the ratio of the squares",
133
+ "shortLabel": "Def. V.9",
134
+ "short": "Duplicate ratio",
135
+ "book": 5,
136
+ "number": 9,
137
+ "colorClass": "definition"
138
+ },
139
+ {
140
+ "id": "Def10",
141
+ "type": "definition",
142
+ "label": "Triplicate ratio is the ratio of the cubes",
143
+ "shortLabel": "Def. V.10",
144
+ "short": "Triplicate ratio",
145
+ "book": 5,
146
+ "number": 10,
147
+ "colorClass": "definition"
148
+ },
149
+ {
150
+ "id": "Def11",
151
+ "type": "definition",
152
+ "label": "Corresponding magnitudes in proportion",
153
+ "shortLabel": "Def. V.11",
154
+ "short": "Corresponding magnitudes",
155
+ "book": 5,
156
+ "number": 11,
157
+ "colorClass": "definition"
158
+ },
159
+ {
160
+ "id": "Def12",
161
+ "type": "definition",
162
+ "label": "Alternate: first to third as second to fourth",
163
+ "shortLabel": "Def. V.12",
164
+ "short": "Alternate ratio",
165
+ "book": 5,
166
+ "number": 12,
167
+ "colorClass": "definition"
168
+ },
169
+ {
170
+ "id": "Def13",
171
+ "type": "definition",
172
+ "label": "Inverse: second to first as fourth to third",
173
+ "shortLabel": "Def. V.13",
174
+ "short": "Inverse ratio",
175
+ "book": 5,
176
+ "number": 13,
177
+ "colorClass": "definition"
178
+ },
179
+ {
180
+ "id": "Def14",
181
+ "type": "definition",
182
+ "label": "Composition: first+second to second as third+fourth to fourth",
183
+ "shortLabel": "Def. V.14",
184
+ "short": "Composition of ratio",
185
+ "book": 5,
186
+ "number": 14,
187
+ "colorClass": "definition"
188
+ },
189
+ {
190
+ "id": "Def15",
191
+ "type": "definition",
192
+ "label": "Separation: first−second to second as third−fourth to fourth",
193
+ "shortLabel": "Def. V.15",
194
+ "short": "Separation of ratio",
195
+ "book": 5,
196
+ "number": 15,
197
+ "colorClass": "definition"
198
+ },
199
+ {
200
+ "id": "Def16",
201
+ "type": "definition",
202
+ "label": "Conversion: first to first−second as third to third−fourth",
203
+ "shortLabel": "Def. V.16",
204
+ "short": "Conversion of ratio",
205
+ "book": 5,
206
+ "number": 16,
207
+ "colorClass": "definition"
208
+ },
209
+ {
210
+ "id": "Def17",
211
+ "type": "definition",
212
+ "label": "Ex aequali: when first to second as second to third",
213
+ "shortLabel": "Def. V.17",
214
+ "short": "Ex aequali",
215
+ "book": 5,
216
+ "number": 17,
217
+ "colorClass": "definition"
218
+ },
219
+ {
220
+ "id": "Def18",
221
+ "type": "definition",
222
+ "label": "Ex aequali perturbed: when ratios are in perturbed order",
223
+ "shortLabel": "Def. V.18",
224
+ "short": "Ex aequali perturbed",
225
+ "book": 5,
226
+ "number": 18,
227
+ "colorClass": "definition"
228
+ },
229
+ {
230
+ "id": "Prop1",
231
+ "type": "proposition",
232
+ "label": "If magnitudes each same multiple of others, sum is that multiple of sum",
233
+ "shortLabel": "Prop. V.1",
234
+ "short": "Sum of multiples",
235
+ "book": 5,
236
+ "number": 1,
237
+ "colorClass": "proposition"
238
+ },
239
+ {
240
+ "id": "Prop2",
241
+ "type": "proposition",
242
+ "label": "If first:second as third:fourth, sum of first and fifth as sum of third and sixth",
243
+ "shortLabel": "Prop. V.2",
244
+ "short": "Equimultiples sum",
245
+ "book": 5,
246
+ "number": 2,
247
+ "colorClass": "proposition"
248
+ },
249
+ {
250
+ "id": "Prop3",
251
+ "type": "proposition",
252
+ "label": "Equimultiples of equimultiples are equimultiples",
253
+ "shortLabel": "Prop. V.3",
254
+ "short": "Equimultiples of equimultiples",
255
+ "book": 5,
256
+ "number": 3,
257
+ "colorClass": "proposition"
258
+ },
259
+ {
260
+ "id": "Prop4",
261
+ "type": "proposition",
262
+ "label": "If a:b = c:d, then ma:nb = mc:nd",
263
+ "shortLabel": "Prop. V.4",
264
+ "short": "Equimultiples preserve ratio",
265
+ "book": 5,
266
+ "number": 4,
267
+ "colorClass": "proposition"
268
+ },
269
+ {
270
+ "id": "Prop5",
271
+ "type": "proposition",
272
+ "label": "Multiple of whole minus multiple of part = multiple of remainder",
273
+ "shortLabel": "Prop. V.5",
274
+ "short": "Multiple of difference",
275
+ "book": 5,
276
+ "number": 5,
277
+ "colorClass": "proposition"
278
+ },
279
+ {
280
+ "id": "Prop6",
281
+ "type": "proposition",
282
+ "label": "Equimultiples minus equimultiples equal or equimultiples",
283
+ "shortLabel": "Prop. V.6",
284
+ "short": "Equimultiples minus equimultiples",
285
+ "book": 5,
286
+ "number": 6,
287
+ "colorClass": "proposition"
288
+ },
289
+ {
290
+ "id": "Prop7",
291
+ "type": "proposition",
292
+ "label": "Equal magnitudes have same ratio to same; same to equals",
293
+ "shortLabel": "Prop. V.7",
294
+ "short": "Equals in ratio",
295
+ "book": 5,
296
+ "number": 7,
297
+ "colorClass": "proposition"
298
+ },
299
+ {
300
+ "id": "Prop8",
301
+ "type": "proposition",
302
+ "label": "Of unequal magnitudes, greater has greater ratio to same",
303
+ "shortLabel": "Prop. V.8",
304
+ "short": "Greater has greater ratio",
305
+ "book": 5,
306
+ "number": 8,
307
+ "colorClass": "proposition"
308
+ },
309
+ {
310
+ "id": "Prop9",
311
+ "type": "proposition",
312
+ "label": "Magnitudes with same ratio to same are equal",
313
+ "shortLabel": "Prop. V.9",
314
+ "short": "Same ratio implies equal",
315
+ "book": 5,
316
+ "number": 9,
317
+ "colorClass": "proposition"
318
+ },
319
+ {
320
+ "id": "Prop10",
321
+ "type": "proposition",
322
+ "label": "Of magnitudes with ratio to same, greater ratio implies greater",
323
+ "shortLabel": "Prop. V.10",
324
+ "short": "Greater ratio implies greater",
325
+ "book": 5,
326
+ "number": 10,
327
+ "colorClass": "proposition"
328
+ },
329
+ {
330
+ "id": "Prop11",
331
+ "type": "proposition",
332
+ "label": "Ratios same with same ratio are same with one another",
333
+ "shortLabel": "Prop. V.11",
334
+ "short": "Transitivity of ratios",
335
+ "book": 5,
336
+ "number": 11,
337
+ "colorClass": "proposition"
338
+ },
339
+ {
340
+ "id": "Prop12",
341
+ "type": "proposition",
342
+ "label": "Proportional: one antecedent to one consequent as sum to sum",
343
+ "shortLabel": "Prop. V.12",
344
+ "short": "Sum of antecedents/consequents",
345
+ "book": 5,
346
+ "number": 12,
347
+ "colorClass": "proposition"
348
+ },
349
+ {
350
+ "id": "Prop13",
351
+ "type": "proposition",
352
+ "label": "If a:b = c:d and c:d > e:f, then a:b > e:f",
353
+ "shortLabel": "Prop. V.13",
354
+ "short": "Substitution in ratio inequality",
355
+ "book": 5,
356
+ "number": 13,
357
+ "colorClass": "proposition"
358
+ },
359
+ {
360
+ "id": "Prop14",
361
+ "type": "proposition",
362
+ "label": "If a:b = c:d and a>c, then b>d",
363
+ "shortLabel": "Prop. V.14",
364
+ "short": "Equal ratios, equal magnitudes",
365
+ "book": 5,
366
+ "number": 14,
367
+ "colorClass": "proposition"
368
+ },
369
+ {
370
+ "id": "Prop15",
371
+ "type": "proposition",
372
+ "label": "Parts have same ratio as their equimultiples",
373
+ "shortLabel": "Prop. V.15",
374
+ "short": "Parts as equimultiples",
375
+ "book": 5,
376
+ "number": 15,
377
+ "colorClass": "proposition"
378
+ },
379
+ {
380
+ "id": "Prop16",
381
+ "type": "proposition",
382
+ "label": "If a:b = c:d, then a:c = b:d",
383
+ "shortLabel": "Prop. V.16",
384
+ "short": "Alternate proportion",
385
+ "book": 5,
386
+ "number": 16,
387
+ "colorClass": "proposition"
388
+ },
389
+ {
390
+ "id": "Prop17",
391
+ "type": "proposition",
392
+ "label": "If (a+b):b = (c+d):d, then a:b = c:d",
393
+ "shortLabel": "Prop. V.17",
394
+ "short": "Jointly implies separately",
395
+ "book": 5,
396
+ "number": 17,
397
+ "colorClass": "proposition"
398
+ },
399
+ {
400
+ "id": "Prop18",
401
+ "type": "proposition",
402
+ "label": "If a:b = c:d, then (a+b):b = (c+d):d",
403
+ "shortLabel": "Prop. V.18",
404
+ "short": "Separately implies jointly",
405
+ "book": 5,
406
+ "number": 18,
407
+ "colorClass": "proposition"
408
+ },
409
+ {
410
+ "id": "Prop19",
411
+ "type": "proposition",
412
+ "label": "If (a+b):(c+d) = a:c, then also = b:d",
413
+ "shortLabel": "Prop. V.19",
414
+ "short": "Whole to whole as part to part",
415
+ "book": 5,
416
+ "number": 19,
417
+ "colorClass": "proposition"
418
+ },
419
+ {
420
+ "id": "Prop20",
421
+ "type": "proposition",
422
+ "label": "If a:b = d:e and b:c = e:f and a>c, then d>f",
423
+ "shortLabel": "Prop. V.20",
424
+ "short": "Ex aequali (direct)",
425
+ "book": 5,
426
+ "number": 20,
427
+ "colorClass": "proposition"
428
+ },
429
+ {
430
+ "id": "Prop21",
431
+ "type": "proposition",
432
+ "label": "If a:b = e:f and b:c = d:e and a>c, then d>f",
433
+ "shortLabel": "Prop. V.21",
434
+ "short": "Ex aequali (perturbed)",
435
+ "book": 5,
436
+ "number": 21,
437
+ "colorClass": "proposition"
438
+ },
439
+ {
440
+ "id": "Prop22",
441
+ "type": "proposition",
442
+ "label": "If a1:a2 = b1:b2, a2:a3 = b2:b3, ..., then a1:an = b1:bn",
443
+ "shortLabel": "Prop. V.22",
444
+ "short": "Ex aequali chain",
445
+ "book": 5,
446
+ "number": 22,
447
+ "colorClass": "proposition"
448
+ },
449
+ {
450
+ "id": "Prop23",
451
+ "type": "proposition",
452
+ "label": "If a:b = y:z and b:c = x:y, then a:c = x:z",
453
+ "shortLabel": "Prop. V.23",
454
+ "short": "Ex aequali perturbed chain",
455
+ "book": 5,
456
+ "number": 23,
457
+ "colorClass": "proposition"
458
+ },
459
+ {
460
+ "id": "Prop24",
461
+ "type": "proposition",
462
+ "label": "If a:b = c:d and e:b = f:d, then (a+e):b = (c+f):d",
463
+ "shortLabel": "Prop. V.24",
464
+ "short": "Sum of ratios",
465
+ "book": 5,
466
+ "number": 24,
467
+ "colorClass": "proposition"
468
+ },
469
+ {
470
+ "id": "Prop25",
471
+ "type": "proposition",
472
+ "label": "If a:b = c:d and a greatest, d least, then a+d > b+c",
473
+ "shortLabel": "Prop. V.25",
474
+ "short": "Sum of extremes > sum of means",
475
+ "book": 5,
476
+ "number": 25,
477
+ "colorClass": "proposition"
478
+ }
479
+ ],
480
+ "edges": [
481
+ {
482
+ "from": "Prop2",
483
+ "to": "Prop3"
484
+ },
485
+ {
486
+ "from": "Prop3",
487
+ "to": "Prop4"
488
+ },
489
+ {
490
+ "from": "Prop1",
491
+ "to": "Prop5"
492
+ },
493
+ {
494
+ "from": "Prop2",
495
+ "to": "Prop6"
496
+ },
497
+ {
498
+ "from": "Prop1",
499
+ "to": "Prop8"
500
+ },
501
+ {
502
+ "from": "Prop8",
503
+ "to": "Prop9"
504
+ },
505
+ {
506
+ "from": "Prop7",
507
+ "to": "Prop10"
508
+ },
509
+ {
510
+ "from": "Prop8",
511
+ "to": "Prop10"
512
+ },
513
+ {
514
+ "from": "Prop1",
515
+ "to": "Prop12"
516
+ },
517
+ {
518
+ "from": "Prop8",
519
+ "to": "Prop14"
520
+ },
521
+ {
522
+ "from": "Prop10",
523
+ "to": "Prop14"
524
+ },
525
+ {
526
+ "from": "Prop13",
527
+ "to": "Prop14"
528
+ },
529
+ {
530
+ "from": "Prop7",
531
+ "to": "Prop15"
532
+ },
533
+ {
534
+ "from": "Prop12",
535
+ "to": "Prop15"
536
+ },
537
+ {
538
+ "from": "Prop11",
539
+ "to": "Prop16"
540
+ },
541
+ {
542
+ "from": "Prop14",
543
+ "to": "Prop16"
544
+ },
545
+ {
546
+ "from": "Prop15",
547
+ "to": "Prop16"
548
+ },
549
+ {
550
+ "from": "Prop1",
551
+ "to": "Prop17"
552
+ },
553
+ {
554
+ "from": "Prop2",
555
+ "to": "Prop17"
556
+ },
557
+ {
558
+ "from": "Prop11",
559
+ "to": "Prop18"
560
+ },
561
+ {
562
+ "from": "Prop14",
563
+ "to": "Prop18"
564
+ },
565
+ {
566
+ "from": "Prop17",
567
+ "to": "Prop18"
568
+ },
569
+ {
570
+ "from": "Prop11",
571
+ "to": "Prop19"
572
+ },
573
+ {
574
+ "from": "Prop16",
575
+ "to": "Prop19"
576
+ },
577
+ {
578
+ "from": "Prop17",
579
+ "to": "Prop19"
580
+ },
581
+ {
582
+ "from": "Prop7",
583
+ "to": "Prop20"
584
+ },
585
+ {
586
+ "from": "Prop8",
587
+ "to": "Prop20"
588
+ },
589
+ {
590
+ "from": "Prop10",
591
+ "to": "Prop20"
592
+ },
593
+ {
594
+ "from": "Prop13",
595
+ "to": "Prop20"
596
+ },
597
+ {
598
+ "from": "Prop7",
599
+ "to": "Prop21"
600
+ },
601
+ {
602
+ "from": "Prop8",
603
+ "to": "Prop21"
604
+ },
605
+ {
606
+ "from": "Prop10",
607
+ "to": "Prop21"
608
+ },
609
+ {
610
+ "from": "Prop13",
611
+ "to": "Prop21"
612
+ },
613
+ {
614
+ "from": "Prop4",
615
+ "to": "Prop22"
616
+ },
617
+ {
618
+ "from": "Prop20",
619
+ "to": "Prop22"
620
+ },
621
+ {
622
+ "from": "Prop11",
623
+ "to": "Prop23"
624
+ },
625
+ {
626
+ "from": "Prop15",
627
+ "to": "Prop23"
628
+ },
629
+ {
630
+ "from": "Prop16",
631
+ "to": "Prop23"
632
+ },
633
+ {
634
+ "from": "Prop21",
635
+ "to": "Prop23"
636
+ },
637
+ {
638
+ "from": "Prop7",
639
+ "to": "Prop24"
640
+ },
641
+ {
642
+ "from": "Prop18",
643
+ "to": "Prop24"
644
+ },
645
+ {
646
+ "from": "Prop22",
647
+ "to": "Prop24"
648
+ },
649
+ {
650
+ "from": "Prop7",
651
+ "to": "Prop25"
652
+ },
653
+ {
654
+ "from": "Prop11",
655
+ "to": "Prop25"
656
+ },
657
+ {
658
+ "from": "Prop14",
659
+ "to": "Prop25"
660
+ },
661
+ {
662
+ "from": "Prop19",
663
+ "to": "Prop25"
664
+ }
665
+ ],
666
+ "colorScheme": {
667
+ "definition": {
668
+ "fill": "#3498db",
669
+ "stroke": "#2980b9"
670
+ },
671
+ "proposition": {
672
+ "fill": "#1abc9c",
673
+ "stroke": "#16a085"
674
+ }
675
+ }
676
+ }
data/euclid-elements-book-vi.json ADDED
@@ -0,0 +1,875 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-vi",
5
+ "name": "Euclid's Elements, Book VI",
6
+ "subject": "geometry",
7
+ "variant": "classical",
8
+ "description": "Similar figures. 4 definitions, 33 propositions. Depends on Book I and Book V. VI.1 is basis for most. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 6,
11
+ "definitions": 4,
12
+ "propositions": 33,
13
+ "foundationTypes": [
14
+ "definition",
15
+ "foundation"
16
+ ]
17
+ }
18
+ },
19
+ "metadata": {
20
+ "created": "2026-03-15",
21
+ "lastUpdated": "2026-03-15",
22
+ "version": "1.0.0",
23
+ "license": "CC BY 4.0",
24
+ "authors": [
25
+ "Welz, G."
26
+ ],
27
+ "methodology": "Programming Framework",
28
+ "citation": "Welz, G. (2026). Euclid's Elements Book VI Dependency Graph. Programming Framework.",
29
+ "keywords": [
30
+ "Euclid",
31
+ "Elements",
32
+ "Book VI",
33
+ "similar",
34
+ "proportion",
35
+ "triangles"
36
+ ]
37
+ },
38
+ "sources": [
39
+ {
40
+ "id": "joyce",
41
+ "type": "digital",
42
+ "authors": "Joyce, David E.",
43
+ "title": "Euclid's Elements, Book VI",
44
+ "year": "1996",
45
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookVI/bookVI.html",
46
+ "notes": "Clark University; VI.1 basis for most"
47
+ }
48
+ ],
49
+ "nodes": [
50
+ {
51
+ "id": "BookI",
52
+ "type": "foundation",
53
+ "label": "Book I — Fundamentals of plane geometry",
54
+ "shortLabel": "Book I",
55
+ "short": "Foundation",
56
+ "book": 1,
57
+ "colorClass": "foundation"
58
+ },
59
+ {
60
+ "id": "BookV",
61
+ "type": "foundation",
62
+ "label": "Book V — Theory of proportions",
63
+ "shortLabel": "Book V",
64
+ "short": "Foundation",
65
+ "book": 5,
66
+ "colorClass": "foundation"
67
+ },
68
+ {
69
+ "id": "Def1",
70
+ "type": "definition",
71
+ "label": "Similar rectilinear figures have equal angles and proportional sides",
72
+ "shortLabel": "Def. VI.1",
73
+ "short": "Similar rectilinear",
74
+ "book": 6,
75
+ "number": 1,
76
+ "colorClass": "definition"
77
+ },
78
+ {
79
+ "id": "Def2",
80
+ "type": "definition",
81
+ "label": "Figures reciprocally proportional when sides are proportional inversely",
82
+ "shortLabel": "Def. VI.2",
83
+ "short": "Reciprocally proportional",
84
+ "book": 6,
85
+ "number": 2,
86
+ "colorClass": "definition"
87
+ },
88
+ {
89
+ "id": "Def3",
90
+ "type": "definition",
91
+ "label": "Straight line is mean proportional when first to it as it to third",
92
+ "shortLabel": "Def. VI.3",
93
+ "short": "Mean proportional",
94
+ "book": 6,
95
+ "number": 3,
96
+ "colorClass": "definition"
97
+ },
98
+ {
99
+ "id": "Def4",
100
+ "type": "definition",
101
+ "label": "Duplicate ratio is the ratio of the squares on corresponding sides",
102
+ "shortLabel": "Def. VI.4",
103
+ "short": "Duplicate ratio",
104
+ "book": 6,
105
+ "number": 4,
106
+ "colorClass": "definition"
107
+ },
108
+ {
109
+ "id": "Prop1",
110
+ "type": "proposition",
111
+ "label": "Triangles and parallelograms under same height are as their bases",
112
+ "shortLabel": "Prop. VI.1",
113
+ "short": "Triangles under same height",
114
+ "book": 6,
115
+ "number": 1,
116
+ "colorClass": "proposition"
117
+ },
118
+ {
119
+ "id": "Prop2",
120
+ "type": "proposition",
121
+ "label": "Line parallel to side cuts sides proportionally; converse",
122
+ "shortLabel": "Prop. VI.2",
123
+ "short": "Parallel cuts sides proportionally",
124
+ "book": 6,
125
+ "number": 2,
126
+ "colorClass": "proposition"
127
+ },
128
+ {
129
+ "id": "Prop3",
130
+ "type": "proposition",
131
+ "label": "Angle bisector: segments of base proportionally as remaining sides",
132
+ "shortLabel": "Prop. VI.3",
133
+ "short": "Angle bisector divides base",
134
+ "book": 6,
135
+ "number": 3,
136
+ "colorClass": "proposition"
137
+ },
138
+ {
139
+ "id": "Prop4",
140
+ "type": "proposition",
141
+ "label": "Equiangular triangles: sides about equal angles proportional",
142
+ "shortLabel": "Prop. VI.4",
143
+ "short": "Equiangular: sides proportional",
144
+ "book": 6,
145
+ "number": 4,
146
+ "colorClass": "proposition"
147
+ },
148
+ {
149
+ "id": "Prop5",
150
+ "type": "proposition",
151
+ "label": "If sides proportional, triangles equiangular",
152
+ "shortLabel": "Prop. VI.5",
153
+ "short": "Sides proportional: equiangular",
154
+ "book": 6,
155
+ "number": 5,
156
+ "colorClass": "proposition"
157
+ },
158
+ {
159
+ "id": "Prop6",
160
+ "type": "proposition",
161
+ "label": "One angle equal, sides about it proportional: equiangular",
162
+ "shortLabel": "Prop. VI.6",
163
+ "short": "One angle equal, sides proportional",
164
+ "book": 6,
165
+ "number": 6,
166
+ "colorClass": "proposition"
167
+ },
168
+ {
169
+ "id": "Prop7",
170
+ "type": "proposition",
171
+ "label": "One angle equal, sides about others proportional: equiangular",
172
+ "shortLabel": "Prop. VI.7",
173
+ "short": "One angle equal, other sides proportional",
174
+ "book": 6,
175
+ "number": 7,
176
+ "colorClass": "proposition"
177
+ },
178
+ {
179
+ "id": "Prop8",
180
+ "type": "proposition",
181
+ "label": "Perpendicular from right angle: triangles similar to whole",
182
+ "shortLabel": "Prop. VI.8",
183
+ "short": "Altitude in right triangle",
184
+ "book": 6,
185
+ "number": 8,
186
+ "colorClass": "proposition"
187
+ },
188
+ {
189
+ "id": "Prop9",
190
+ "type": "proposition",
191
+ "label": "To cut off a prescribed part from a given straight line",
192
+ "shortLabel": "Prop. VI.9",
193
+ "short": "Cut off prescribed part",
194
+ "book": 6,
195
+ "number": 9,
196
+ "colorClass": "proposition"
197
+ },
198
+ {
199
+ "id": "Prop10",
200
+ "type": "proposition",
201
+ "label": "To cut a given line similarly to a given cut line",
202
+ "shortLabel": "Prop. VI.10",
203
+ "short": "Cut line similarly",
204
+ "book": 6,
205
+ "number": 10,
206
+ "colorClass": "proposition"
207
+ },
208
+ {
209
+ "id": "Prop11",
210
+ "type": "proposition",
211
+ "label": "To find a third proportional to two given lines",
212
+ "shortLabel": "Prop. VI.11",
213
+ "short": "Third proportional",
214
+ "book": 6,
215
+ "number": 11,
216
+ "colorClass": "proposition"
217
+ },
218
+ {
219
+ "id": "Prop12",
220
+ "type": "proposition",
221
+ "label": "To find a fourth proportional to three given lines",
222
+ "shortLabel": "Prop. VI.12",
223
+ "short": "Fourth proportional",
224
+ "book": 6,
225
+ "number": 12,
226
+ "colorClass": "proposition"
227
+ },
228
+ {
229
+ "id": "Prop13",
230
+ "type": "proposition",
231
+ "label": "To find a mean proportional to two given lines",
232
+ "shortLabel": "Prop. VI.13",
233
+ "short": "Mean proportional",
234
+ "book": 6,
235
+ "number": 13,
236
+ "colorClass": "proposition"
237
+ },
238
+ {
239
+ "id": "Prop14",
240
+ "type": "proposition",
241
+ "label": "Equal equiangular parallelograms: sides reciprocally proportional",
242
+ "shortLabel": "Prop. VI.14",
243
+ "short": "Parallelograms reciprocally proportional",
244
+ "book": 6,
245
+ "number": 14,
246
+ "colorClass": "proposition"
247
+ },
248
+ {
249
+ "id": "Prop15",
250
+ "type": "proposition",
251
+ "label": "Equal triangles, one angle equal: sides reciprocally proportional",
252
+ "shortLabel": "Prop. VI.15",
253
+ "short": "Triangles reciprocally proportional",
254
+ "book": 6,
255
+ "number": 15,
256
+ "colorClass": "proposition"
257
+ },
258
+ {
259
+ "id": "Prop16",
260
+ "type": "proposition",
261
+ "label": "Four lines proportional iff rectangle extremes = rectangle means",
262
+ "shortLabel": "Prop. VI.16",
263
+ "short": "Four lines proportional: rectangle",
264
+ "book": 6,
265
+ "number": 16,
266
+ "colorClass": "proposition"
267
+ },
268
+ {
269
+ "id": "Prop17",
270
+ "type": "proposition",
271
+ "label": "Three lines proportional iff rectangle extremes = square on mean",
272
+ "shortLabel": "Prop. VI.17",
273
+ "short": "Three lines proportional: rectangle",
274
+ "book": 6,
275
+ "number": 17,
276
+ "colorClass": "proposition"
277
+ },
278
+ {
279
+ "id": "Prop18",
280
+ "type": "proposition",
281
+ "label": "To describe figure similar to given on given line",
282
+ "shortLabel": "Prop. VI.18",
283
+ "short": "Similar figure on given line",
284
+ "book": 6,
285
+ "number": 18,
286
+ "colorClass": "proposition"
287
+ },
288
+ {
289
+ "id": "Prop19",
290
+ "type": "proposition",
291
+ "label": "Similar triangles in duplicate ratio of corresponding sides",
292
+ "shortLabel": "Prop. VI.19",
293
+ "short": "Similar triangles: duplicate ratio",
294
+ "book": 6,
295
+ "number": 19,
296
+ "colorClass": "proposition"
297
+ },
298
+ {
299
+ "id": "Prop20",
300
+ "type": "proposition",
301
+ "label": "Similar polygons in duplicate ratio of corresponding sides",
302
+ "shortLabel": "Prop. VI.20",
303
+ "short": "Similar polygons: duplicate ratio",
304
+ "book": 6,
305
+ "number": 20,
306
+ "colorClass": "proposition"
307
+ },
308
+ {
309
+ "id": "Prop21",
310
+ "type": "proposition",
311
+ "label": "Figures similar to same rectilinear figure are similar",
312
+ "shortLabel": "Prop. VI.21",
313
+ "short": "Similar to same: similar",
314
+ "book": 6,
315
+ "number": 21,
316
+ "colorClass": "proposition"
317
+ },
318
+ {
319
+ "id": "Prop22",
320
+ "type": "proposition",
321
+ "label": "Four lines proportional iff similar figures on them proportional",
322
+ "shortLabel": "Prop. VI.22",
323
+ "short": "Four lines proportional: figures",
324
+ "book": 6,
325
+ "number": 22,
326
+ "colorClass": "proposition"
327
+ },
328
+ {
329
+ "id": "Prop23",
330
+ "type": "proposition",
331
+ "label": "Equiangular parallelograms: ratio compounded of sides",
332
+ "shortLabel": "Prop. VI.23",
333
+ "short": "Equiangular parallelograms: compound ratio",
334
+ "book": 6,
335
+ "number": 23,
336
+ "colorClass": "proposition"
337
+ },
338
+ {
339
+ "id": "Prop24",
340
+ "type": "proposition",
341
+ "label": "Parallelograms about diameter similar to whole",
342
+ "shortLabel": "Prop. VI.24",
343
+ "short": "Parallelograms about diameter",
344
+ "book": 6,
345
+ "number": 24,
346
+ "colorClass": "proposition"
347
+ },
348
+ {
349
+ "id": "Prop25",
350
+ "type": "proposition",
351
+ "label": "To construct figure similar to one and equal to another",
352
+ "shortLabel": "Prop. VI.25",
353
+ "short": "Similar and equal to another",
354
+ "book": 6,
355
+ "number": 25,
356
+ "colorClass": "proposition"
357
+ },
358
+ {
359
+ "id": "Prop26",
360
+ "type": "proposition",
361
+ "label": "Parallelogram similar to whole, common angle: about same diameter",
362
+ "shortLabel": "Prop. VI.26",
363
+ "short": "Parallelogram similar to difference",
364
+ "book": 6,
365
+ "number": 26,
366
+ "colorClass": "proposition"
367
+ },
368
+ {
369
+ "id": "Prop27",
370
+ "type": "proposition",
371
+ "label": "Of parallelograms applied to line, greatest is on half",
372
+ "shortLabel": "Prop. VI.27",
373
+ "short": "Greatest parallelogram applied",
374
+ "book": 6,
375
+ "number": 27,
376
+ "colorClass": "proposition"
377
+ },
378
+ {
379
+ "id": "Prop28",
380
+ "type": "proposition",
381
+ "label": "To apply parallelogram equal to figure, deficient by similar",
382
+ "shortLabel": "Prop. VI.28",
383
+ "short": "Apply parallelogram: deficient",
384
+ "book": 6,
385
+ "number": 28,
386
+ "colorClass": "proposition"
387
+ },
388
+ {
389
+ "id": "Prop29",
390
+ "type": "proposition",
391
+ "label": "To apply parallelogram equal to figure, exceeding by similar",
392
+ "shortLabel": "Prop. VI.29",
393
+ "short": "Apply parallelogram: exceeding",
394
+ "book": 6,
395
+ "number": 29,
396
+ "colorClass": "proposition"
397
+ },
398
+ {
399
+ "id": "Prop30",
400
+ "type": "proposition",
401
+ "label": "To cut a given line in extreme and mean ratio",
402
+ "shortLabel": "Prop. VI.30",
403
+ "short": "Extreme and mean ratio",
404
+ "book": 6,
405
+ "number": 30,
406
+ "colorClass": "proposition"
407
+ },
408
+ {
409
+ "id": "Prop31",
410
+ "type": "proposition",
411
+ "label": "In right triangle, figure on hypotenuse = sum of similar on sides",
412
+ "shortLabel": "Prop. VI.31",
413
+ "short": "Right triangle: similar figures",
414
+ "book": 6,
415
+ "number": 31,
416
+ "colorClass": "proposition"
417
+ },
418
+ {
419
+ "id": "Prop32",
420
+ "type": "proposition",
421
+ "label": "Two triangles, two sides proportional, placed with parallel sides",
422
+ "shortLabel": "Prop. VI.32",
423
+ "short": "Two triangles: sides parallel",
424
+ "book": 6,
425
+ "number": 32,
426
+ "colorClass": "proposition"
427
+ },
428
+ {
429
+ "id": "Prop33",
430
+ "type": "proposition",
431
+ "label": "Angles in equal circles have ratio of circumferences",
432
+ "shortLabel": "Prop. VI.33",
433
+ "short": "Angles in circles: ratio of arcs",
434
+ "book": 6,
435
+ "number": 33,
436
+ "colorClass": "proposition"
437
+ }
438
+ ],
439
+ "edges": [
440
+ {
441
+ "from": "BookI",
442
+ "to": "Def1"
443
+ },
444
+ {
445
+ "from": "BookV",
446
+ "to": "Def1"
447
+ },
448
+ {
449
+ "from": "BookI",
450
+ "to": "Def2"
451
+ },
452
+ {
453
+ "from": "BookV",
454
+ "to": "Def2"
455
+ },
456
+ {
457
+ "from": "BookI",
458
+ "to": "Def3"
459
+ },
460
+ {
461
+ "from": "BookV",
462
+ "to": "Def3"
463
+ },
464
+ {
465
+ "from": "BookI",
466
+ "to": "Def4"
467
+ },
468
+ {
469
+ "from": "BookV",
470
+ "to": "Def4"
471
+ },
472
+ {
473
+ "from": "BookI",
474
+ "to": "Prop1"
475
+ },
476
+ {
477
+ "from": "BookV",
478
+ "to": "Prop1"
479
+ },
480
+ {
481
+ "from": "BookI",
482
+ "to": "Prop2"
483
+ },
484
+ {
485
+ "from": "BookV",
486
+ "to": "Prop2"
487
+ },
488
+ {
489
+ "from": "Prop1",
490
+ "to": "Prop2"
491
+ },
492
+ {
493
+ "from": "BookI",
494
+ "to": "Prop3"
495
+ },
496
+ {
497
+ "from": "BookV",
498
+ "to": "Prop3"
499
+ },
500
+ {
501
+ "from": "Prop1",
502
+ "to": "Prop3"
503
+ },
504
+ {
505
+ "from": "BookI",
506
+ "to": "Prop4"
507
+ },
508
+ {
509
+ "from": "BookV",
510
+ "to": "Prop4"
511
+ },
512
+ {
513
+ "from": "Prop1",
514
+ "to": "Prop4"
515
+ },
516
+ {
517
+ "from": "BookI",
518
+ "to": "Prop5"
519
+ },
520
+ {
521
+ "from": "BookV",
522
+ "to": "Prop5"
523
+ },
524
+ {
525
+ "from": "Prop1",
526
+ "to": "Prop5"
527
+ },
528
+ {
529
+ "from": "BookI",
530
+ "to": "Prop6"
531
+ },
532
+ {
533
+ "from": "BookV",
534
+ "to": "Prop6"
535
+ },
536
+ {
537
+ "from": "Prop1",
538
+ "to": "Prop6"
539
+ },
540
+ {
541
+ "from": "BookI",
542
+ "to": "Prop7"
543
+ },
544
+ {
545
+ "from": "BookV",
546
+ "to": "Prop7"
547
+ },
548
+ {
549
+ "from": "Prop1",
550
+ "to": "Prop7"
551
+ },
552
+ {
553
+ "from": "BookI",
554
+ "to": "Prop8"
555
+ },
556
+ {
557
+ "from": "BookV",
558
+ "to": "Prop8"
559
+ },
560
+ {
561
+ "from": "Prop1",
562
+ "to": "Prop8"
563
+ },
564
+ {
565
+ "from": "BookI",
566
+ "to": "Prop9"
567
+ },
568
+ {
569
+ "from": "BookV",
570
+ "to": "Prop9"
571
+ },
572
+ {
573
+ "from": "Prop1",
574
+ "to": "Prop9"
575
+ },
576
+ {
577
+ "from": "BookI",
578
+ "to": "Prop10"
579
+ },
580
+ {
581
+ "from": "BookV",
582
+ "to": "Prop10"
583
+ },
584
+ {
585
+ "from": "Prop1",
586
+ "to": "Prop10"
587
+ },
588
+ {
589
+ "from": "BookI",
590
+ "to": "Prop11"
591
+ },
592
+ {
593
+ "from": "BookV",
594
+ "to": "Prop11"
595
+ },
596
+ {
597
+ "from": "Prop1",
598
+ "to": "Prop11"
599
+ },
600
+ {
601
+ "from": "BookI",
602
+ "to": "Prop12"
603
+ },
604
+ {
605
+ "from": "BookV",
606
+ "to": "Prop12"
607
+ },
608
+ {
609
+ "from": "Prop1",
610
+ "to": "Prop12"
611
+ },
612
+ {
613
+ "from": "BookI",
614
+ "to": "Prop13"
615
+ },
616
+ {
617
+ "from": "BookV",
618
+ "to": "Prop13"
619
+ },
620
+ {
621
+ "from": "Prop1",
622
+ "to": "Prop13"
623
+ },
624
+ {
625
+ "from": "BookI",
626
+ "to": "Prop14"
627
+ },
628
+ {
629
+ "from": "BookV",
630
+ "to": "Prop14"
631
+ },
632
+ {
633
+ "from": "Prop1",
634
+ "to": "Prop14"
635
+ },
636
+ {
637
+ "from": "BookI",
638
+ "to": "Prop15"
639
+ },
640
+ {
641
+ "from": "BookV",
642
+ "to": "Prop15"
643
+ },
644
+ {
645
+ "from": "Prop1",
646
+ "to": "Prop15"
647
+ },
648
+ {
649
+ "from": "BookI",
650
+ "to": "Prop16"
651
+ },
652
+ {
653
+ "from": "BookV",
654
+ "to": "Prop16"
655
+ },
656
+ {
657
+ "from": "Prop1",
658
+ "to": "Prop16"
659
+ },
660
+ {
661
+ "from": "BookI",
662
+ "to": "Prop17"
663
+ },
664
+ {
665
+ "from": "BookV",
666
+ "to": "Prop17"
667
+ },
668
+ {
669
+ "from": "Prop1",
670
+ "to": "Prop17"
671
+ },
672
+ {
673
+ "from": "BookI",
674
+ "to": "Prop18"
675
+ },
676
+ {
677
+ "from": "BookV",
678
+ "to": "Prop18"
679
+ },
680
+ {
681
+ "from": "Prop1",
682
+ "to": "Prop18"
683
+ },
684
+ {
685
+ "from": "BookI",
686
+ "to": "Prop19"
687
+ },
688
+ {
689
+ "from": "BookV",
690
+ "to": "Prop19"
691
+ },
692
+ {
693
+ "from": "Prop1",
694
+ "to": "Prop19"
695
+ },
696
+ {
697
+ "from": "BookI",
698
+ "to": "Prop20"
699
+ },
700
+ {
701
+ "from": "BookV",
702
+ "to": "Prop20"
703
+ },
704
+ {
705
+ "from": "Prop1",
706
+ "to": "Prop20"
707
+ },
708
+ {
709
+ "from": "BookI",
710
+ "to": "Prop21"
711
+ },
712
+ {
713
+ "from": "BookV",
714
+ "to": "Prop21"
715
+ },
716
+ {
717
+ "from": "Prop1",
718
+ "to": "Prop21"
719
+ },
720
+ {
721
+ "from": "BookI",
722
+ "to": "Prop22"
723
+ },
724
+ {
725
+ "from": "BookV",
726
+ "to": "Prop22"
727
+ },
728
+ {
729
+ "from": "Prop1",
730
+ "to": "Prop22"
731
+ },
732
+ {
733
+ "from": "BookI",
734
+ "to": "Prop23"
735
+ },
736
+ {
737
+ "from": "BookV",
738
+ "to": "Prop23"
739
+ },
740
+ {
741
+ "from": "Prop1",
742
+ "to": "Prop23"
743
+ },
744
+ {
745
+ "from": "BookI",
746
+ "to": "Prop24"
747
+ },
748
+ {
749
+ "from": "BookV",
750
+ "to": "Prop24"
751
+ },
752
+ {
753
+ "from": "Prop1",
754
+ "to": "Prop24"
755
+ },
756
+ {
757
+ "from": "BookI",
758
+ "to": "Prop25"
759
+ },
760
+ {
761
+ "from": "BookV",
762
+ "to": "Prop25"
763
+ },
764
+ {
765
+ "from": "Prop1",
766
+ "to": "Prop25"
767
+ },
768
+ {
769
+ "from": "BookI",
770
+ "to": "Prop26"
771
+ },
772
+ {
773
+ "from": "BookV",
774
+ "to": "Prop26"
775
+ },
776
+ {
777
+ "from": "Prop1",
778
+ "to": "Prop26"
779
+ },
780
+ {
781
+ "from": "BookI",
782
+ "to": "Prop27"
783
+ },
784
+ {
785
+ "from": "BookV",
786
+ "to": "Prop27"
787
+ },
788
+ {
789
+ "from": "Prop1",
790
+ "to": "Prop27"
791
+ },
792
+ {
793
+ "from": "BookI",
794
+ "to": "Prop28"
795
+ },
796
+ {
797
+ "from": "BookV",
798
+ "to": "Prop28"
799
+ },
800
+ {
801
+ "from": "Prop1",
802
+ "to": "Prop28"
803
+ },
804
+ {
805
+ "from": "BookI",
806
+ "to": "Prop29"
807
+ },
808
+ {
809
+ "from": "BookV",
810
+ "to": "Prop29"
811
+ },
812
+ {
813
+ "from": "Prop1",
814
+ "to": "Prop29"
815
+ },
816
+ {
817
+ "from": "BookI",
818
+ "to": "Prop30"
819
+ },
820
+ {
821
+ "from": "BookV",
822
+ "to": "Prop30"
823
+ },
824
+ {
825
+ "from": "Prop1",
826
+ "to": "Prop30"
827
+ },
828
+ {
829
+ "from": "BookI",
830
+ "to": "Prop31"
831
+ },
832
+ {
833
+ "from": "BookV",
834
+ "to": "Prop31"
835
+ },
836
+ {
837
+ "from": "Prop1",
838
+ "to": "Prop31"
839
+ },
840
+ {
841
+ "from": "BookI",
842
+ "to": "Prop32"
843
+ },
844
+ {
845
+ "from": "BookV",
846
+ "to": "Prop32"
847
+ },
848
+ {
849
+ "from": "Prop1",
850
+ "to": "Prop32"
851
+ },
852
+ {
853
+ "from": "BookI",
854
+ "to": "Prop33"
855
+ },
856
+ {
857
+ "from": "BookV",
858
+ "to": "Prop33"
859
+ }
860
+ ],
861
+ "colorScheme": {
862
+ "foundation": {
863
+ "fill": "#95a5a6",
864
+ "stroke": "#7f8c8d"
865
+ },
866
+ "definition": {
867
+ "fill": "#3498db",
868
+ "stroke": "#2980b9"
869
+ },
870
+ "proposition": {
871
+ "fill": "#1abc9c",
872
+ "stroke": "#16a085"
873
+ }
874
+ }
875
+ }
data/euclid-elements-book-vii.json ADDED
@@ -0,0 +1,761 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-vii",
5
+ "name": "Euclid's Elements, Book VII",
6
+ "subject": "number_theory",
7
+ "variant": "classical",
8
+ "description": "Number theory: GCD (Euclidean algorithm), proportions, primes, LCM. 22 definitions, 39 propositions. Does not depend on previous books. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 7,
11
+ "definitions": 22,
12
+ "propositions": 39,
13
+ "foundationTypes": [
14
+ "definition"
15
+ ]
16
+ }
17
+ },
18
+ "metadata": {
19
+ "created": "2026-03-18",
20
+ "lastUpdated": "2026-03-18",
21
+ "version": "1.0.0",
22
+ "license": "CC BY 4.0",
23
+ "authors": [
24
+ "Welz, G."
25
+ ],
26
+ "methodology": "Programming Framework",
27
+ "citation": "Welz, G. (2026). Euclid's Elements Book VII Dependency Graph. Programming Framework.",
28
+ "keywords": [
29
+ "Euclid",
30
+ "Elements",
31
+ "Book VII",
32
+ "number theory",
33
+ "GCD",
34
+ "prime",
35
+ "LCM"
36
+ ]
37
+ },
38
+ "sources": [
39
+ {
40
+ "id": "joyce",
41
+ "type": "digital",
42
+ "authors": "Joyce, David E.",
43
+ "title": "Euclid's Elements, Book VII",
44
+ "year": "1996",
45
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookVII/bookVII.html",
46
+ "notes": "Clark University"
47
+ }
48
+ ],
49
+ "nodes": [
50
+ {
51
+ "id": "Def1",
52
+ "type": "definition",
53
+ "label": "A unit is that by virtue of which each of the things that exist is called one",
54
+ "shortLabel": "Def. VII.1",
55
+ "short": "Unit",
56
+ "book": 7,
57
+ "number": 1,
58
+ "colorClass": "definition"
59
+ },
60
+ {
61
+ "id": "Def2",
62
+ "type": "definition",
63
+ "label": "A number is a multitude composed of units",
64
+ "shortLabel": "Def. VII.2",
65
+ "short": "Number",
66
+ "book": 7,
67
+ "number": 2,
68
+ "colorClass": "definition"
69
+ },
70
+ {
71
+ "id": "Def3",
72
+ "type": "definition",
73
+ "label": "A number is part of a number when it measures it",
74
+ "shortLabel": "Def. VII.3",
75
+ "short": "Part",
76
+ "book": 7,
77
+ "number": 3,
78
+ "colorClass": "definition"
79
+ },
80
+ {
81
+ "id": "Def4",
82
+ "type": "definition",
83
+ "label": "Parts when it does not measure it",
84
+ "shortLabel": "Def. VII.4",
85
+ "short": "Parts",
86
+ "book": 7,
87
+ "number": 4,
88
+ "colorClass": "definition"
89
+ },
90
+ {
91
+ "id": "Def5",
92
+ "type": "definition",
93
+ "label": "The greater is a multiple of the less when measured by the less",
94
+ "shortLabel": "Def. VII.5",
95
+ "short": "Multiple",
96
+ "book": 7,
97
+ "number": 5,
98
+ "colorClass": "definition"
99
+ },
100
+ {
101
+ "id": "Def6",
102
+ "type": "definition",
103
+ "label": "An even number is that which is divisible into two equal parts",
104
+ "shortLabel": "Def. VII.6",
105
+ "short": "Even",
106
+ "book": 7,
107
+ "number": 6,
108
+ "colorClass": "definition"
109
+ },
110
+ {
111
+ "id": "Def7",
112
+ "type": "definition",
113
+ "label": "An odd number is that which is not divisible into two equal parts",
114
+ "shortLabel": "Def. VII.7",
115
+ "short": "Odd",
116
+ "book": 7,
117
+ "number": 7,
118
+ "colorClass": "definition"
119
+ },
120
+ {
121
+ "id": "Def8",
122
+ "type": "definition",
123
+ "label": "Even-times even: measured by an even number an even number of times",
124
+ "shortLabel": "Def. VII.8",
125
+ "short": "Even-times even",
126
+ "book": 7,
127
+ "number": 8,
128
+ "colorClass": "definition"
129
+ },
130
+ {
131
+ "id": "Def9",
132
+ "type": "definition",
133
+ "label": "Even-times odd: measured by an even number an odd number of times",
134
+ "shortLabel": "Def. VII.9",
135
+ "short": "Even-times odd",
136
+ "book": 7,
137
+ "number": 9,
138
+ "colorClass": "definition"
139
+ },
140
+ {
141
+ "id": "Def10",
142
+ "type": "definition",
143
+ "label": "Odd-times odd: measured by an odd number an odd number of times",
144
+ "shortLabel": "Def. VII.10",
145
+ "short": "Odd-times odd",
146
+ "book": 7,
147
+ "number": 10,
148
+ "colorClass": "definition"
149
+ },
150
+ {
151
+ "id": "Def11",
152
+ "type": "definition",
153
+ "label": "A prime number is that which is measured by a unit alone",
154
+ "shortLabel": "Def. VII.11",
155
+ "short": "Prime",
156
+ "book": 7,
157
+ "number": 11,
158
+ "colorClass": "definition"
159
+ },
160
+ {
161
+ "id": "Def12",
162
+ "type": "definition",
163
+ "label": "Numbers relatively prime when only a unit measures both",
164
+ "shortLabel": "Def. VII.12",
165
+ "short": "Relatively prime",
166
+ "book": 7,
167
+ "number": 12,
168
+ "colorClass": "definition"
169
+ },
170
+ {
171
+ "id": "Def13",
172
+ "type": "definition",
173
+ "label": "A composite number is that measured by some number",
174
+ "shortLabel": "Def. VII.13",
175
+ "short": "Composite",
176
+ "book": 7,
177
+ "number": 13,
178
+ "colorClass": "definition"
179
+ },
180
+ {
181
+ "id": "Def14",
182
+ "type": "definition",
183
+ "label": "Numbers composite to one another when some number measures both",
184
+ "shortLabel": "Def. VII.14",
185
+ "short": "Composite to one another",
186
+ "book": 7,
187
+ "number": 14,
188
+ "colorClass": "definition"
189
+ },
190
+ {
191
+ "id": "Def15",
192
+ "type": "definition",
193
+ "label": "A number multiplies a number when the latter is added as many times as units in the former",
194
+ "shortLabel": "Def. VII.15",
195
+ "short": "Multiply",
196
+ "book": 7,
197
+ "number": 15,
198
+ "colorClass": "definition"
199
+ },
200
+ {
201
+ "id": "Def16",
202
+ "type": "definition",
203
+ "label": "When two numbers multiplied produce a number, the product is plane",
204
+ "shortLabel": "Def. VII.16",
205
+ "short": "Product",
206
+ "book": 7,
207
+ "number": 16,
208
+ "colorClass": "definition"
209
+ },
210
+ {
211
+ "id": "Def17",
212
+ "type": "definition",
213
+ "label": "Sides of the product are the numbers multiplied",
214
+ "shortLabel": "Def. VII.17",
215
+ "short": "Side",
216
+ "book": 7,
217
+ "number": 17,
218
+ "colorClass": "definition"
219
+ },
220
+ {
221
+ "id": "Def18",
222
+ "type": "definition",
223
+ "label": "A plane number is that produced by two numbers",
224
+ "shortLabel": "Def. VII.18",
225
+ "short": "Plane number",
226
+ "book": 7,
227
+ "number": 18,
228
+ "colorClass": "definition"
229
+ },
230
+ {
231
+ "id": "Def19",
232
+ "type": "definition",
233
+ "label": "A solid number is that produced by three numbers",
234
+ "shortLabel": "Def. VII.19",
235
+ "short": "Solid number",
236
+ "book": 7,
237
+ "number": 19,
238
+ "colorClass": "definition"
239
+ },
240
+ {
241
+ "id": "Def20",
242
+ "type": "definition",
243
+ "label": "Similar plane numbers have sides proportional",
244
+ "shortLabel": "Def. VII.20",
245
+ "short": "Similar plane",
246
+ "book": 7,
247
+ "number": 20,
248
+ "colorClass": "definition"
249
+ },
250
+ {
251
+ "id": "Def21",
252
+ "type": "definition",
253
+ "label": "Similar solid numbers have sides proportional",
254
+ "shortLabel": "Def. VII.21",
255
+ "short": "Similar solid",
256
+ "book": 7,
257
+ "number": 21,
258
+ "colorClass": "definition"
259
+ },
260
+ {
261
+ "id": "Def22",
262
+ "type": "definition",
263
+ "label": "A perfect number is that which equals its own parts",
264
+ "shortLabel": "Def. VII.22",
265
+ "short": "Perfect",
266
+ "book": 7,
267
+ "number": 22,
268
+ "colorClass": "definition"
269
+ },
270
+ {
271
+ "id": "Prop1",
272
+ "type": "proposition",
273
+ "label": "Unequal numbers: repeated subtraction; if unit left, relatively prime",
274
+ "shortLabel": "Prop. VII.1",
275
+ "short": "Antenaresis, relatively prime",
276
+ "book": 7,
277
+ "number": 1,
278
+ "colorClass": "proposition"
279
+ },
280
+ {
281
+ "id": "Prop2",
282
+ "type": "proposition",
283
+ "label": "To find greatest common measure of two numbers not relatively prime",
284
+ "shortLabel": "Prop. VII.2",
285
+ "short": "GCD of two numbers",
286
+ "book": 7,
287
+ "number": 2,
288
+ "colorClass": "proposition"
289
+ },
290
+ {
291
+ "id": "Prop3",
292
+ "type": "proposition",
293
+ "label": "To find greatest common measure of three numbers",
294
+ "shortLabel": "Prop. VII.3",
295
+ "short": "GCD of three numbers",
296
+ "book": 7,
297
+ "number": 3,
298
+ "colorClass": "proposition"
299
+ },
300
+ {
301
+ "id": "Prop4",
302
+ "type": "proposition",
303
+ "label": "Any number is part or parts of any number, less of greater",
304
+ "shortLabel": "Prop. VII.4",
305
+ "short": "Part or parts",
306
+ "book": 7,
307
+ "number": 4,
308
+ "colorClass": "proposition"
309
+ },
310
+ {
311
+ "id": "Prop5",
312
+ "type": "proposition",
313
+ "label": "If a is same part of b as c of d, then a+c same part of b+d",
314
+ "shortLabel": "Prop. VII.5",
315
+ "short": "Same part: sum",
316
+ "book": 7,
317
+ "number": 5,
318
+ "colorClass": "proposition"
319
+ },
320
+ {
321
+ "id": "Prop6",
322
+ "type": "proposition",
323
+ "label": "If a is same parts of b as c of d, then a+c same parts of b+d",
324
+ "shortLabel": "Prop. VII.6",
325
+ "short": "Same parts: sum",
326
+ "book": 7,
327
+ "number": 6,
328
+ "colorClass": "proposition"
329
+ },
330
+ {
331
+ "id": "Prop7",
332
+ "type": "proposition",
333
+ "label": "If a part of b as c of d, remainder same part of remainder",
334
+ "shortLabel": "Prop. VII.7",
335
+ "short": "Same part: remainder",
336
+ "book": 7,
337
+ "number": 7,
338
+ "colorClass": "proposition"
339
+ },
340
+ {
341
+ "id": "Prop8",
342
+ "type": "proposition",
343
+ "label": "If a parts of b as c of d, remainder same parts of remainder",
344
+ "shortLabel": "Prop. VII.8",
345
+ "short": "Same parts: remainder",
346
+ "book": 7,
347
+ "number": 8,
348
+ "colorClass": "proposition"
349
+ },
350
+ {
351
+ "id": "Prop9",
352
+ "type": "proposition",
353
+ "label": "If a part of b as c of d, alternately a part/parts of c as b of d",
354
+ "shortLabel": "Prop. VII.9",
355
+ "short": "Same part: alternately",
356
+ "book": 7,
357
+ "number": 9,
358
+ "colorClass": "proposition"
359
+ },
360
+ {
361
+ "id": "Prop10",
362
+ "type": "proposition",
363
+ "label": "If a parts of b as c of d, alternately a part/parts of c as b of d",
364
+ "shortLabel": "Prop. VII.10",
365
+ "short": "Same parts: alternately",
366
+ "book": 7,
367
+ "number": 10,
368
+ "colorClass": "proposition"
369
+ },
370
+ {
371
+ "id": "Prop11",
372
+ "type": "proposition",
373
+ "label": "If whole:whole as subtracted:subtracted, remainder:remainder as whole:whole",
374
+ "shortLabel": "Prop. VII.11",
375
+ "short": "Proportion: remainder",
376
+ "book": 7,
377
+ "number": 11,
378
+ "colorClass": "proposition"
379
+ },
380
+ {
381
+ "id": "Prop12",
382
+ "type": "proposition",
383
+ "label": "Proportional: one antecedent to consequent as sum antecedents to sum consequents",
384
+ "shortLabel": "Prop. VII.12",
385
+ "short": "Proportional: sum",
386
+ "book": 7,
387
+ "number": 12,
388
+ "colorClass": "proposition"
389
+ },
390
+ {
391
+ "id": "Prop13",
392
+ "type": "proposition",
393
+ "label": "If four numbers proportional, also proportional alternately",
394
+ "shortLabel": "Prop. VII.13",
395
+ "short": "Proportional: alternately",
396
+ "book": 7,
397
+ "number": 13,
398
+ "colorClass": "proposition"
399
+ },
400
+ {
401
+ "id": "Prop14",
402
+ "type": "proposition",
403
+ "label": "If a:b = d:e and b:c = e:f, then a:c = d:f",
404
+ "shortLabel": "Prop. VII.14",
405
+ "short": "Ex aequali",
406
+ "book": 7,
407
+ "number": 14,
408
+ "colorClass": "proposition"
409
+ },
410
+ {
411
+ "id": "Prop15",
412
+ "type": "proposition",
413
+ "label": "If unit measures a, b measures c same times, alternately unit:c as b:d",
414
+ "shortLabel": "Prop. VII.15",
415
+ "short": "Unit measures",
416
+ "book": 7,
417
+ "number": 15,
418
+ "colorClass": "proposition"
419
+ },
420
+ {
421
+ "id": "Prop16",
422
+ "type": "proposition",
423
+ "label": "If a×b and c×d, then a×b = c×d (commutativity)",
424
+ "shortLabel": "Prop. VII.16",
425
+ "short": "Commutativity of product",
426
+ "book": 7,
427
+ "number": 16,
428
+ "colorClass": "proposition"
429
+ },
430
+ {
431
+ "id": "Prop17",
432
+ "type": "proposition",
433
+ "label": "a:b = (a×c):(b×c)",
434
+ "shortLabel": "Prop. VII.17",
435
+ "short": "Ratio of products",
436
+ "book": 7,
437
+ "number": 17,
438
+ "colorClass": "proposition"
439
+ },
440
+ {
441
+ "id": "Prop18",
442
+ "type": "proposition",
443
+ "label": "a×c : b×c = a:b",
444
+ "shortLabel": "Prop. VII.18",
445
+ "short": "Ratio: multipliers",
446
+ "book": 7,
447
+ "number": 18,
448
+ "colorClass": "proposition"
449
+ },
450
+ {
451
+ "id": "Prop19",
452
+ "type": "proposition",
453
+ "label": "a:b = c:d iff a×d = b×c",
454
+ "shortLabel": "Prop. VII.19",
455
+ "short": "Proportional iff product",
456
+ "book": 7,
457
+ "number": 19,
458
+ "colorClass": "proposition"
459
+ },
460
+ {
461
+ "id": "Prop20",
462
+ "type": "proposition",
463
+ "label": "Least numbers in ratio measure others same number of times",
464
+ "shortLabel": "Prop. VII.20",
465
+ "short": "Least in ratio",
466
+ "book": 7,
467
+ "number": 20,
468
+ "colorClass": "proposition"
469
+ },
470
+ {
471
+ "id": "Prop21",
472
+ "type": "proposition",
473
+ "label": "Relatively prime numbers are least in their ratio",
474
+ "shortLabel": "Prop. VII.21",
475
+ "short": "Relatively prime: least",
476
+ "book": 7,
477
+ "number": 21,
478
+ "colorClass": "proposition"
479
+ },
480
+ {
481
+ "id": "Prop22",
482
+ "type": "proposition",
483
+ "label": "Least numbers in ratio are relatively prime",
484
+ "shortLabel": "Prop. VII.22",
485
+ "short": "Least: relatively prime",
486
+ "book": 7,
487
+ "number": 22,
488
+ "colorClass": "proposition"
489
+ },
490
+ {
491
+ "id": "Prop23",
492
+ "type": "proposition",
493
+ "label": "If a,b relatively prime, divisor of a relatively prime to b",
494
+ "shortLabel": "Prop. VII.23",
495
+ "short": "Relatively prime: divisor",
496
+ "book": 7,
497
+ "number": 23,
498
+ "colorClass": "proposition"
499
+ },
500
+ {
501
+ "id": "Prop24",
502
+ "type": "proposition",
503
+ "label": "If a,b relatively prime to c, then a×b relatively prime to c",
504
+ "shortLabel": "Prop. VII.24",
505
+ "short": "Product relatively prime",
506
+ "book": 7,
507
+ "number": 24,
508
+ "colorClass": "proposition"
509
+ },
510
+ {
511
+ "id": "Prop25",
512
+ "type": "proposition",
513
+ "label": "If a,b relatively prime, a² relatively prime to b",
514
+ "shortLabel": "Prop. VII.25",
515
+ "short": "Square relatively prime",
516
+ "book": 7,
517
+ "number": 25,
518
+ "colorClass": "proposition"
519
+ },
520
+ {
521
+ "id": "Prop26",
522
+ "type": "proposition",
523
+ "label": "If a,c and b,d relatively prime, a×b, c×d relatively prime",
524
+ "shortLabel": "Prop. VII.26",
525
+ "short": "Products relatively prime",
526
+ "book": 7,
527
+ "number": 26,
528
+ "colorClass": "proposition"
529
+ },
530
+ {
531
+ "id": "Prop27",
532
+ "type": "proposition",
533
+ "label": "If a,b relatively prime, a²,b² relatively prime; a×a², b×b²",
534
+ "shortLabel": "Prop. VII.27",
535
+ "short": "Squares relatively prime",
536
+ "book": 7,
537
+ "number": 27,
538
+ "colorClass": "proposition"
539
+ },
540
+ {
541
+ "id": "Prop28",
542
+ "type": "proposition",
543
+ "label": "If a,b relatively prime, a+b prime to each; converse",
544
+ "shortLabel": "Prop. VII.28",
545
+ "short": "Sum relatively prime",
546
+ "book": 7,
547
+ "number": 28,
548
+ "colorClass": "proposition"
549
+ },
550
+ {
551
+ "id": "Prop29",
552
+ "type": "proposition",
553
+ "label": "Prime relatively prime to any number it does not measure",
554
+ "shortLabel": "Prop. VII.29",
555
+ "short": "Prime to non-multiple",
556
+ "book": 7,
557
+ "number": 29,
558
+ "colorClass": "proposition"
559
+ },
560
+ {
561
+ "id": "Prop30",
562
+ "type": "proposition",
563
+ "label": "If prime measures product, it measures one factor",
564
+ "shortLabel": "Prop. VII.30",
565
+ "short": "Prime divides product",
566
+ "book": 7,
567
+ "number": 30,
568
+ "colorClass": "proposition"
569
+ },
570
+ {
571
+ "id": "Prop31",
572
+ "type": "proposition",
573
+ "label": "Any composite measured by some prime",
574
+ "shortLabel": "Prop. VII.31",
575
+ "short": "Composite has prime factor",
576
+ "book": 7,
577
+ "number": 31,
578
+ "colorClass": "proposition"
579
+ },
580
+ {
581
+ "id": "Prop32",
582
+ "type": "proposition",
583
+ "label": "Any number is prime or measured by some prime",
584
+ "shortLabel": "Prop. VII.32",
585
+ "short": "Prime or has prime factor",
586
+ "book": 7,
587
+ "number": 32,
588
+ "colorClass": "proposition"
589
+ },
590
+ {
591
+ "id": "Prop33",
592
+ "type": "proposition",
593
+ "label": "Given numbers, find least in same ratio",
594
+ "shortLabel": "Prop. VII.33",
595
+ "short": "Least in ratio",
596
+ "book": 7,
597
+ "number": 33,
598
+ "colorClass": "proposition"
599
+ },
600
+ {
601
+ "id": "Prop34",
602
+ "type": "proposition",
603
+ "label": "To find least number that two given numbers measure",
604
+ "shortLabel": "Prop. VII.34",
605
+ "short": "LCM of two",
606
+ "book": 7,
607
+ "number": 34,
608
+ "colorClass": "proposition"
609
+ },
610
+ {
611
+ "id": "Prop35",
612
+ "type": "proposition",
613
+ "label": "If two numbers measure some number, LCM also measures it",
614
+ "shortLabel": "Prop. VII.35",
615
+ "short": "LCM divides common multiple",
616
+ "book": 7,
617
+ "number": 35,
618
+ "colorClass": "proposition"
619
+ },
620
+ {
621
+ "id": "Prop36",
622
+ "type": "proposition",
623
+ "label": "To find least number that three given numbers measure",
624
+ "shortLabel": "Prop. VII.36",
625
+ "short": "LCM of three",
626
+ "book": 7,
627
+ "number": 36,
628
+ "colorClass": "proposition"
629
+ },
630
+ {
631
+ "id": "Prop37",
632
+ "type": "proposition",
633
+ "label": "If a measures b, b has part named by a",
634
+ "shortLabel": "Prop. VII.37",
635
+ "short": "Measured has part",
636
+ "book": 7,
637
+ "number": 37,
638
+ "colorClass": "proposition"
639
+ },
640
+ {
641
+ "id": "Prop38",
642
+ "type": "proposition",
643
+ "label": "If b has part named by a, a measures b",
644
+ "shortLabel": "Prop. VII.38",
645
+ "short": "Part implies measured",
646
+ "book": 7,
647
+ "number": 38,
648
+ "colorClass": "proposition"
649
+ },
650
+ {
651
+ "id": "Prop39",
652
+ "type": "proposition",
653
+ "label": "To find least number with given parts",
654
+ "shortLabel": "Prop. VII.39",
655
+ "short": "Least with given parts",
656
+ "book": 7,
657
+ "number": 39,
658
+ "colorClass": "proposition"
659
+ }
660
+ ],
661
+ "edges": [
662
+ {
663
+ "from": "Prop1",
664
+ "to": "Prop2"
665
+ },
666
+ {
667
+ "from": "Prop1",
668
+ "to": "Prop3"
669
+ },
670
+ {
671
+ "from": "Prop2",
672
+ "to": "Prop3"
673
+ },
674
+ {
675
+ "from": "Prop19",
676
+ "to": "Prop20"
677
+ },
678
+ {
679
+ "from": "Prop20",
680
+ "to": "Prop21"
681
+ },
682
+ {
683
+ "from": "Prop21",
684
+ "to": "Prop22"
685
+ },
686
+ {
687
+ "from": "Prop22",
688
+ "to": "Prop23"
689
+ },
690
+ {
691
+ "from": "Prop23",
692
+ "to": "Prop24"
693
+ },
694
+ {
695
+ "from": "Prop23",
696
+ "to": "Prop25"
697
+ },
698
+ {
699
+ "from": "Prop24",
700
+ "to": "Prop26"
701
+ },
702
+ {
703
+ "from": "Prop25",
704
+ "to": "Prop27"
705
+ },
706
+ {
707
+ "from": "Prop23",
708
+ "to": "Prop28"
709
+ },
710
+ {
711
+ "from": "Prop23",
712
+ "to": "Prop29"
713
+ },
714
+ {
715
+ "from": "Prop29",
716
+ "to": "Prop30"
717
+ },
718
+ {
719
+ "from": "Prop31",
720
+ "to": "Prop32"
721
+ },
722
+ {
723
+ "from": "Prop20",
724
+ "to": "Prop33"
725
+ },
726
+ {
727
+ "from": "Prop22",
728
+ "to": "Prop33"
729
+ },
730
+ {
731
+ "from": "Prop33",
732
+ "to": "Prop34"
733
+ },
734
+ {
735
+ "from": "Prop34",
736
+ "to": "Prop35"
737
+ },
738
+ {
739
+ "from": "Prop34",
740
+ "to": "Prop36"
741
+ },
742
+ {
743
+ "from": "Prop37",
744
+ "to": "Prop38"
745
+ },
746
+ {
747
+ "from": "Prop38",
748
+ "to": "Prop39"
749
+ }
750
+ ],
751
+ "colorScheme": {
752
+ "definition": {
753
+ "fill": "#3498db",
754
+ "stroke": "#2980b9"
755
+ },
756
+ "proposition": {
757
+ "fill": "#1abc9c",
758
+ "stroke": "#16a085"
759
+ }
760
+ }
761
+ }
data/euclid-elements-book-viii.json ADDED
@@ -0,0 +1,540 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-viii",
5
+ "name": "Euclid's Elements, Book VIII",
6
+ "subject": "number_theory",
7
+ "variant": "classical",
8
+ "description": "Continued proportions. 27 propositions. Depends on Book VII. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 8,
11
+ "propositions": 27,
12
+ "foundationTypes": [
13
+ "foundation"
14
+ ]
15
+ }
16
+ },
17
+ "metadata": {
18
+ "created": "2026-03-18",
19
+ "lastUpdated": "2026-03-18",
20
+ "version": "1.0.0",
21
+ "license": "CC BY 4.0",
22
+ "authors": [
23
+ "Welz, G."
24
+ ],
25
+ "methodology": "Programming Framework",
26
+ "citation": "Welz, G. (2026). Euclid's Elements Book VIII Dependency Graph. Programming Framework.",
27
+ "keywords": [
28
+ "Euclid",
29
+ "Elements",
30
+ "Book VIII",
31
+ "continued proportion",
32
+ "plane",
33
+ "solid"
34
+ ]
35
+ },
36
+ "sources": [
37
+ {
38
+ "id": "joyce",
39
+ "type": "digital",
40
+ "authors": "Joyce, David E.",
41
+ "title": "Euclid's Elements, Book VIII",
42
+ "year": "1996",
43
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookVIII/bookVIII.html",
44
+ "notes": "Clark University"
45
+ }
46
+ ],
47
+ "nodes": [
48
+ {
49
+ "id": "BookVII",
50
+ "type": "foundation",
51
+ "label": "Book VII — Number theory",
52
+ "shortLabel": "Book VII",
53
+ "short": "Foundation",
54
+ "book": 7,
55
+ "colorClass": "foundation"
56
+ },
57
+ {
58
+ "id": "Prop1",
59
+ "type": "proposition",
60
+ "label": "Continued proportion, extremes relatively prime: least in ratio",
61
+ "shortLabel": "Prop. VIII.1",
62
+ "short": "Continued proportion, extremes prime",
63
+ "book": 8,
64
+ "number": 1,
65
+ "colorClass": "proposition"
66
+ },
67
+ {
68
+ "id": "Prop2",
69
+ "type": "proposition",
70
+ "label": "To find numbers in continued proportion, least in given ratio",
71
+ "shortLabel": "Prop. VIII.2",
72
+ "short": "Find numbers in continued proportion",
73
+ "book": 8,
74
+ "number": 2,
75
+ "colorClass": "proposition"
76
+ },
77
+ {
78
+ "id": "Prop3",
79
+ "type": "proposition",
80
+ "label": "Least in continued proportion: extremes relatively prime",
81
+ "shortLabel": "Prop. VIII.3",
82
+ "short": "Least: extremes prime",
83
+ "book": 8,
84
+ "number": 3,
85
+ "colorClass": "proposition"
86
+ },
87
+ {
88
+ "id": "Prop4",
89
+ "type": "proposition",
90
+ "label": "Given ratios in least numbers, find least in continued proportion",
91
+ "shortLabel": "Prop. VIII.4",
92
+ "short": "Find continued proportion from ratios",
93
+ "book": 8,
94
+ "number": 4,
95
+ "colorClass": "proposition"
96
+ },
97
+ {
98
+ "id": "Prop5",
99
+ "type": "proposition",
100
+ "label": "Plane numbers have ratio compounded of ratios of sides",
101
+ "shortLabel": "Prop. VIII.5",
102
+ "short": "Plane numbers: compound ratio",
103
+ "book": 8,
104
+ "number": 5,
105
+ "colorClass": "proposition"
106
+ },
107
+ {
108
+ "id": "Prop6",
109
+ "type": "proposition",
110
+ "label": "Continued proportion: if first does not measure second, none measures another",
111
+ "shortLabel": "Prop. VIII.6",
112
+ "short": "First does not measure second",
113
+ "book": 8,
114
+ "number": 6,
115
+ "colorClass": "proposition"
116
+ },
117
+ {
118
+ "id": "Prop7",
119
+ "type": "proposition",
120
+ "label": "Continued proportion: if first measures last, it measures second",
121
+ "shortLabel": "Prop. VIII.7",
122
+ "short": "First measures last",
123
+ "book": 8,
124
+ "number": 7,
125
+ "colorClass": "proposition"
126
+ },
127
+ {
128
+ "id": "Prop8",
129
+ "type": "proposition",
130
+ "label": "Numbers between two in continued proportion correspond to ratios",
131
+ "shortLabel": "Prop. VIII.8",
132
+ "short": "Numbers between in proportion",
133
+ "book": 8,
134
+ "number": 8,
135
+ "colorClass": "proposition"
136
+ },
137
+ {
138
+ "id": "Prop9",
139
+ "type": "proposition",
140
+ "label": "Two relatively prime: numbers between them as between each and unit",
141
+ "shortLabel": "Prop. VIII.9",
142
+ "short": "Relatively prime: numbers to unit",
143
+ "book": 8,
144
+ "number": 9,
145
+ "colorClass": "proposition"
146
+ },
147
+ {
148
+ "id": "Prop10",
149
+ "type": "proposition",
150
+ "label": "Numbers between number and unit correspond to between two numbers",
151
+ "shortLabel": "Prop. VIII.10",
152
+ "short": "Numbers from unit",
153
+ "book": 8,
154
+ "number": 10,
155
+ "colorClass": "proposition"
156
+ },
157
+ {
158
+ "id": "Prop11",
159
+ "type": "proposition",
160
+ "label": "Between two squares one mean proportional; duplicate ratio",
161
+ "shortLabel": "Prop. VIII.11",
162
+ "short": "Mean proportional of squares",
163
+ "book": 8,
164
+ "number": 11,
165
+ "colorClass": "proposition"
166
+ },
167
+ {
168
+ "id": "Prop12",
169
+ "type": "proposition",
170
+ "label": "Between two cubes two mean proportionals; triplicate ratio",
171
+ "shortLabel": "Prop. VIII.12",
172
+ "short": "Two means between cubes",
173
+ "book": 8,
174
+ "number": 12,
175
+ "colorClass": "proposition"
176
+ },
177
+ {
178
+ "id": "Prop13",
179
+ "type": "proposition",
180
+ "label": "Continued proportion: products proportional; products of products",
181
+ "shortLabel": "Prop. VIII.13",
182
+ "short": "Products proportional",
183
+ "book": 8,
184
+ "number": 13,
185
+ "colorClass": "proposition"
186
+ },
187
+ {
188
+ "id": "Prop14",
189
+ "type": "proposition",
190
+ "label": "Square measures square iff side measures side",
191
+ "shortLabel": "Prop. VIII.14",
192
+ "short": "Square measures square",
193
+ "book": 8,
194
+ "number": 14,
195
+ "colorClass": "proposition"
196
+ },
197
+ {
198
+ "id": "Prop15",
199
+ "type": "proposition",
200
+ "label": "Cube measures cube iff side measures side",
201
+ "shortLabel": "Prop. VIII.15",
202
+ "short": "Cube measures cube",
203
+ "book": 8,
204
+ "number": 15,
205
+ "colorClass": "proposition"
206
+ },
207
+ {
208
+ "id": "Prop16",
209
+ "type": "proposition",
210
+ "label": "Square does not measure square iff side does not measure side",
211
+ "shortLabel": "Prop. VIII.16",
212
+ "short": "Square does not measure square",
213
+ "book": 8,
214
+ "number": 16,
215
+ "colorClass": "proposition"
216
+ },
217
+ {
218
+ "id": "Prop17",
219
+ "type": "proposition",
220
+ "label": "Cube does not measure cube iff side does not measure side",
221
+ "shortLabel": "Prop. VIII.17",
222
+ "short": "Cube does not measure cube",
223
+ "book": 8,
224
+ "number": 17,
225
+ "colorClass": "proposition"
226
+ },
227
+ {
228
+ "id": "Prop18",
229
+ "type": "proposition",
230
+ "label": "Between similar plane numbers one mean proportional; duplicate ratio",
231
+ "shortLabel": "Prop. VIII.18",
232
+ "short": "Similar plane: mean proportional",
233
+ "book": 8,
234
+ "number": 18,
235
+ "colorClass": "proposition"
236
+ },
237
+ {
238
+ "id": "Prop19",
239
+ "type": "proposition",
240
+ "label": "Between similar solid numbers two mean proportionals; triplicate ratio",
241
+ "shortLabel": "Prop. VIII.19",
242
+ "short": "Similar solid: two means",
243
+ "book": 8,
244
+ "number": 19,
245
+ "colorClass": "proposition"
246
+ },
247
+ {
248
+ "id": "Prop20",
249
+ "type": "proposition",
250
+ "label": "If one mean between two numbers, they are similar plane",
251
+ "shortLabel": "Prop. VIII.20",
252
+ "short": "One mean: similar plane",
253
+ "book": 8,
254
+ "number": 20,
255
+ "colorClass": "proposition"
256
+ },
257
+ {
258
+ "id": "Prop21",
259
+ "type": "proposition",
260
+ "label": "If two means between two numbers, they are similar solid",
261
+ "shortLabel": "Prop. VIII.21",
262
+ "short": "Two means: similar solid",
263
+ "book": 8,
264
+ "number": 21,
265
+ "colorClass": "proposition"
266
+ },
267
+ {
268
+ "id": "Prop22",
269
+ "type": "proposition",
270
+ "label": "Three in continued proportion, first square: third square",
271
+ "shortLabel": "Prop. VIII.22",
272
+ "short": "Three in proportion: first square",
273
+ "book": 8,
274
+ "number": 22,
275
+ "colorClass": "proposition"
276
+ },
277
+ {
278
+ "id": "Prop23",
279
+ "type": "proposition",
280
+ "label": "Four in continued proportion, first cube: fourth cube",
281
+ "shortLabel": "Prop. VIII.23",
282
+ "short": "Four in proportion: first cube",
283
+ "book": 8,
284
+ "number": 23,
285
+ "colorClass": "proposition"
286
+ },
287
+ {
288
+ "id": "Prop24",
289
+ "type": "proposition",
290
+ "label": "If ratio as square to square and first square, second square",
291
+ "shortLabel": "Prop. VIII.24",
292
+ "short": "Ratio as square to square",
293
+ "book": 8,
294
+ "number": 24,
295
+ "colorClass": "proposition"
296
+ },
297
+ {
298
+ "id": "Prop25",
299
+ "type": "proposition",
300
+ "label": "If ratio as cube to cube and first cube, second cube",
301
+ "shortLabel": "Prop. VIII.25",
302
+ "short": "Ratio as cube to cube",
303
+ "book": 8,
304
+ "number": 25,
305
+ "colorClass": "proposition"
306
+ },
307
+ {
308
+ "id": "Prop26",
309
+ "type": "proposition",
310
+ "label": "Similar plane numbers have ratio of square to square",
311
+ "shortLabel": "Prop. VIII.26",
312
+ "short": "Similar plane: square ratio",
313
+ "book": 8,
314
+ "number": 26,
315
+ "colorClass": "proposition"
316
+ },
317
+ {
318
+ "id": "Prop27",
319
+ "type": "proposition",
320
+ "label": "Similar solid numbers have ratio of cube to cube",
321
+ "shortLabel": "Prop. VIII.27",
322
+ "short": "Similar solid: cube ratio",
323
+ "book": 8,
324
+ "number": 27,
325
+ "colorClass": "proposition"
326
+ }
327
+ ],
328
+ "edges": [
329
+ {
330
+ "from": "BookVII",
331
+ "to": "Prop1"
332
+ },
333
+ {
334
+ "from": "BookVII",
335
+ "to": "Prop2"
336
+ },
337
+ {
338
+ "from": "Prop1",
339
+ "to": "Prop2"
340
+ },
341
+ {
342
+ "from": "BookVII",
343
+ "to": "Prop3"
344
+ },
345
+ {
346
+ "from": "Prop2",
347
+ "to": "Prop3"
348
+ },
349
+ {
350
+ "from": "BookVII",
351
+ "to": "Prop4"
352
+ },
353
+ {
354
+ "from": "Prop2",
355
+ "to": "Prop4"
356
+ },
357
+ {
358
+ "from": "BookVII",
359
+ "to": "Prop5"
360
+ },
361
+ {
362
+ "from": "BookVII",
363
+ "to": "Prop6"
364
+ },
365
+ {
366
+ "from": "Prop1",
367
+ "to": "Prop6"
368
+ },
369
+ {
370
+ "from": "BookVII",
371
+ "to": "Prop7"
372
+ },
373
+ {
374
+ "from": "Prop1",
375
+ "to": "Prop7"
376
+ },
377
+ {
378
+ "from": "BookVII",
379
+ "to": "Prop8"
380
+ },
381
+ {
382
+ "from": "BookVII",
383
+ "to": "Prop9"
384
+ },
385
+ {
386
+ "from": "Prop8",
387
+ "to": "Prop9"
388
+ },
389
+ {
390
+ "from": "BookVII",
391
+ "to": "Prop10"
392
+ },
393
+ {
394
+ "from": "Prop9",
395
+ "to": "Prop10"
396
+ },
397
+ {
398
+ "from": "BookVII",
399
+ "to": "Prop11"
400
+ },
401
+ {
402
+ "from": "Prop8",
403
+ "to": "Prop11"
404
+ },
405
+ {
406
+ "from": "BookVII",
407
+ "to": "Prop12"
408
+ },
409
+ {
410
+ "from": "Prop8",
411
+ "to": "Prop12"
412
+ },
413
+ {
414
+ "from": "BookVII",
415
+ "to": "Prop13"
416
+ },
417
+ {
418
+ "from": "BookVII",
419
+ "to": "Prop14"
420
+ },
421
+ {
422
+ "from": "Prop11",
423
+ "to": "Prop14"
424
+ },
425
+ {
426
+ "from": "BookVII",
427
+ "to": "Prop15"
428
+ },
429
+ {
430
+ "from": "Prop12",
431
+ "to": "Prop15"
432
+ },
433
+ {
434
+ "from": "BookVII",
435
+ "to": "Prop16"
436
+ },
437
+ {
438
+ "from": "Prop14",
439
+ "to": "Prop16"
440
+ },
441
+ {
442
+ "from": "BookVII",
443
+ "to": "Prop17"
444
+ },
445
+ {
446
+ "from": "Prop15",
447
+ "to": "Prop17"
448
+ },
449
+ {
450
+ "from": "BookVII",
451
+ "to": "Prop18"
452
+ },
453
+ {
454
+ "from": "Prop8",
455
+ "to": "Prop18"
456
+ },
457
+ {
458
+ "from": "BookVII",
459
+ "to": "Prop19"
460
+ },
461
+ {
462
+ "from": "Prop8",
463
+ "to": "Prop19"
464
+ },
465
+ {
466
+ "from": "BookVII",
467
+ "to": "Prop20"
468
+ },
469
+ {
470
+ "from": "Prop18",
471
+ "to": "Prop20"
472
+ },
473
+ {
474
+ "from": "BookVII",
475
+ "to": "Prop21"
476
+ },
477
+ {
478
+ "from": "Prop19",
479
+ "to": "Prop21"
480
+ },
481
+ {
482
+ "from": "BookVII",
483
+ "to": "Prop22"
484
+ },
485
+ {
486
+ "from": "Prop1",
487
+ "to": "Prop22"
488
+ },
489
+ {
490
+ "from": "BookVII",
491
+ "to": "Prop23"
492
+ },
493
+ {
494
+ "from": "Prop1",
495
+ "to": "Prop23"
496
+ },
497
+ {
498
+ "from": "BookVII",
499
+ "to": "Prop24"
500
+ },
501
+ {
502
+ "from": "Prop22",
503
+ "to": "Prop24"
504
+ },
505
+ {
506
+ "from": "BookVII",
507
+ "to": "Prop25"
508
+ },
509
+ {
510
+ "from": "Prop23",
511
+ "to": "Prop25"
512
+ },
513
+ {
514
+ "from": "BookVII",
515
+ "to": "Prop26"
516
+ },
517
+ {
518
+ "from": "Prop18",
519
+ "to": "Prop26"
520
+ },
521
+ {
522
+ "from": "BookVII",
523
+ "to": "Prop27"
524
+ },
525
+ {
526
+ "from": "Prop19",
527
+ "to": "Prop27"
528
+ }
529
+ ],
530
+ "colorScheme": {
531
+ "foundation": {
532
+ "fill": "#95a5a6",
533
+ "stroke": "#7f8c8d"
534
+ },
535
+ "proposition": {
536
+ "fill": "#1abc9c",
537
+ "stroke": "#16a085"
538
+ }
539
+ }
540
+ }
data/euclid-elements-book-x.json ADDED
@@ -0,0 +1,2620 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-x",
5
+ "name": "Euclid's Elements, Book X",
6
+ "subject": "incommensurables",
7
+ "variant": "classical",
8
+ "description": "Incommensurables, binomials, apotomes. 16 definitions, 115 propositions. Depends on Books I, V, VI. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 10,
11
+ "definitions": 16,
12
+ "propositions": 115,
13
+ "foundationTypes": [
14
+ "foundation"
15
+ ]
16
+ }
17
+ },
18
+ "metadata": {
19
+ "created": "2026-03-18",
20
+ "lastUpdated": "2026-03-18",
21
+ "version": "1.0.0",
22
+ "license": "CC BY 4.0",
23
+ "authors": [
24
+ "Welz, G."
25
+ ],
26
+ "methodology": "Programming Framework",
27
+ "citation": "Welz, G. (2026). Euclid's Elements Book X Dependency Graph. Programming Framework.",
28
+ "keywords": [
29
+ "Euclid",
30
+ "Elements",
31
+ "Book X",
32
+ "incommensurable",
33
+ "binomial",
34
+ "apotome",
35
+ "medial"
36
+ ]
37
+ },
38
+ "sources": [
39
+ {
40
+ "id": "joyce",
41
+ "type": "digital",
42
+ "authors": "Joyce, David E.",
43
+ "title": "Euclid's Elements, Book X",
44
+ "year": "1996",
45
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookX/bookX.html",
46
+ "notes": "Clark University"
47
+ }
48
+ ],
49
+ "nodes": [
50
+ {
51
+ "id": "BookI",
52
+ "type": "foundation",
53
+ "label": "Book I — Plane geometry",
54
+ "shortLabel": "Book I",
55
+ "short": "Foundation",
56
+ "book": 1,
57
+ "colorClass": "foundation"
58
+ },
59
+ {
60
+ "id": "BookV",
61
+ "type": "foundation",
62
+ "label": "Book V — Proportions",
63
+ "shortLabel": "Book V",
64
+ "short": "Foundation",
65
+ "book": 5,
66
+ "colorClass": "foundation"
67
+ },
68
+ {
69
+ "id": "BookVI",
70
+ "type": "foundation",
71
+ "label": "Book VI — Similar figures",
72
+ "shortLabel": "Book VI",
73
+ "short": "Foundation",
74
+ "book": 6,
75
+ "colorClass": "foundation"
76
+ },
77
+ {
78
+ "id": "Prop1",
79
+ "type": "proposition",
80
+ "label": "Two unequal magnitudes: subtract more than half repeatedly; remainder less than lesser",
81
+ "shortLabel": "Prop. X.1",
82
+ "short": "Antenaresis for magnitudes",
83
+ "book": 10,
84
+ "number": 1,
85
+ "colorClass": "proposition"
86
+ },
87
+ {
88
+ "id": "Prop2",
89
+ "type": "proposition",
90
+ "label": "If less subtracted from greater repeatedly and remainder never measures prior: incommensurable",
91
+ "shortLabel": "Prop. X.2",
92
+ "short": "Incommensurable criterion",
93
+ "book": 10,
94
+ "number": 2,
95
+ "colorClass": "proposition"
96
+ },
97
+ {
98
+ "id": "Prop3",
99
+ "type": "proposition",
100
+ "label": "To find greatest common measure of two commensurable magnitudes",
101
+ "shortLabel": "Prop. X.3",
102
+ "short": "GCM of two commensurable",
103
+ "book": 10,
104
+ "number": 3,
105
+ "colorClass": "proposition"
106
+ },
107
+ {
108
+ "id": "Prop4",
109
+ "type": "proposition",
110
+ "label": "To find greatest common measure of three commensurable magnitudes",
111
+ "shortLabel": "Prop. X.4",
112
+ "short": "GCM of three commensurable",
113
+ "book": 10,
114
+ "number": 4,
115
+ "colorClass": "proposition"
116
+ },
117
+ {
118
+ "id": "Prop5",
119
+ "type": "proposition",
120
+ "label": "Commensurable magnitudes have ratio which a number has to a number",
121
+ "shortLabel": "Prop. X.5",
122
+ "short": "Commensurable: number ratio",
123
+ "book": 10,
124
+ "number": 5,
125
+ "colorClass": "proposition"
126
+ },
127
+ {
128
+ "id": "Prop6",
129
+ "type": "proposition",
130
+ "label": "If two magnitudes have number-to-number ratio, they are commensurable",
131
+ "shortLabel": "Prop. X.6",
132
+ "short": "Number ratio: commensurable",
133
+ "book": 10,
134
+ "number": 6,
135
+ "colorClass": "proposition"
136
+ },
137
+ {
138
+ "id": "Prop7",
139
+ "type": "proposition",
140
+ "label": "Incommensurable magnitudes do not have number-to-number ratio",
141
+ "shortLabel": "Prop. X.7",
142
+ "short": "Incommensurable: no number ratio",
143
+ "book": 10,
144
+ "number": 7,
145
+ "colorClass": "proposition"
146
+ },
147
+ {
148
+ "id": "Prop8",
149
+ "type": "proposition",
150
+ "label": "If magnitudes lack number-to-number ratio, they are incommensurable",
151
+ "shortLabel": "Prop. X.8",
152
+ "short": "No number ratio: incommensurable",
153
+ "book": 10,
154
+ "number": 8,
155
+ "colorClass": "proposition"
156
+ },
157
+ {
158
+ "id": "Prop9",
159
+ "type": "proposition",
160
+ "label": "Squares on commensurable lines have square-to-square ratio; converse",
161
+ "shortLabel": "Prop. X.9",
162
+ "short": "Squares: commensurable iff square ratio",
163
+ "book": 10,
164
+ "number": 9,
165
+ "colorClass": "proposition"
166
+ },
167
+ {
168
+ "id": "Prop10",
169
+ "type": "proposition",
170
+ "label": "To find two lines incommensurable with assigned: one in length, one in square",
171
+ "shortLabel": "Prop. X.10",
172
+ "short": "Find incommensurable lines",
173
+ "book": 10,
174
+ "number": 10,
175
+ "colorClass": "proposition"
176
+ },
177
+ {
178
+ "id": "Prop11",
179
+ "type": "proposition",
180
+ "label": "Four proportional: first commensurable with second iff third with fourth",
181
+ "shortLabel": "Prop. X.11",
182
+ "short": "Proportion preserves commensurability",
183
+ "book": 10,
184
+ "number": 11,
185
+ "colorClass": "proposition"
186
+ },
187
+ {
188
+ "id": "Prop12",
189
+ "type": "proposition",
190
+ "label": "Magnitudes commensurable with same magnitude are commensurable",
191
+ "shortLabel": "Prop. X.12",
192
+ "short": "Commensurable with same",
193
+ "book": 10,
194
+ "number": 12,
195
+ "colorClass": "proposition"
196
+ },
197
+ {
198
+ "id": "Prop13",
199
+ "type": "proposition",
200
+ "label": "If two commensurable, one incommensurable with third, so is the other",
201
+ "shortLabel": "Prop. X.13",
202
+ "short": "Commensurable: incommensurable partner",
203
+ "book": 10,
204
+ "number": 13,
205
+ "colorClass": "proposition"
206
+ },
207
+ {
208
+ "id": "Prop14",
209
+ "type": "proposition",
210
+ "label": "Given two lines: find square by which greater square exceeds less; find line whose square equals sum",
211
+ "shortLabel": "Prop. X.14",
212
+ "short": "Square difference, sum of squares",
213
+ "book": 10,
214
+ "number": 14,
215
+ "colorClass": "proposition"
216
+ },
217
+ {
218
+ "id": "Prop15",
219
+ "type": "proposition",
220
+ "label": "Two commensurable added: whole commensurable with each",
221
+ "shortLabel": "Prop. X.15",
222
+ "short": "Commensurable sum",
223
+ "book": 10,
224
+ "number": 15,
225
+ "colorClass": "proposition"
226
+ },
227
+ {
228
+ "id": "Prop16",
229
+ "type": "proposition",
230
+ "label": "Two incommensurable added: sum incommensurable with each",
231
+ "shortLabel": "Prop. X.16",
232
+ "short": "Incommensurable sum",
233
+ "book": 10,
234
+ "number": 16,
235
+ "colorClass": "proposition"
236
+ },
237
+ {
238
+ "id": "Prop17",
239
+ "type": "proposition",
240
+ "label": "Applied parallelogram falling short by square: parts commensurable iff square difference commensurable",
241
+ "shortLabel": "Prop. X.17",
242
+ "short": "Parallelogram falling short",
243
+ "book": 10,
244
+ "number": 17,
245
+ "colorClass": "proposition"
246
+ },
247
+ {
248
+ "id": "Prop18",
249
+ "type": "proposition",
250
+ "label": "Applied parallelogram: parts incommensurable iff square difference incommensurable",
251
+ "shortLabel": "Prop. X.18",
252
+ "short": "Parallelogram: incommensurable parts",
253
+ "book": 10,
254
+ "number": 18,
255
+ "colorClass": "proposition"
256
+ },
257
+ {
258
+ "id": "Prop19",
259
+ "type": "proposition",
260
+ "label": "Rectangle by rational lines commensurable in length is rational",
261
+ "shortLabel": "Prop. X.19",
262
+ "short": "Rational rectangle from rational",
263
+ "book": 10,
264
+ "number": 19,
265
+ "colorClass": "proposition"
266
+ },
267
+ {
268
+ "id": "Prop20",
269
+ "type": "proposition",
270
+ "label": "Rational area applied to rational line: breadth rational and commensurable",
271
+ "shortLabel": "Prop. X.20",
272
+ "short": "Rational area on rational",
273
+ "book": 10,
274
+ "number": 20,
275
+ "colorClass": "proposition"
276
+ },
277
+ {
278
+ "id": "Prop21",
279
+ "type": "proposition",
280
+ "label": "Rectangle by rational in square only is irrational; side called medial",
281
+ "shortLabel": "Prop. X.21",
282
+ "short": "Medial: rational in square only",
283
+ "book": 10,
284
+ "number": 21,
285
+ "colorClass": "proposition"
286
+ },
287
+ {
288
+ "id": "Prop22",
289
+ "type": "proposition",
290
+ "label": "Square on medial applied to rational: breadth rational, incommensurable in length",
291
+ "shortLabel": "Prop. X.22",
292
+ "short": "Medial applied to rational",
293
+ "book": 10,
294
+ "number": 22,
295
+ "colorClass": "proposition"
296
+ },
297
+ {
298
+ "id": "Prop23",
299
+ "type": "proposition",
300
+ "label": "Line commensurable with medial is medial",
301
+ "shortLabel": "Prop. X.23",
302
+ "short": "Commensurable with medial",
303
+ "book": 10,
304
+ "number": 23,
305
+ "colorClass": "proposition"
306
+ },
307
+ {
308
+ "id": "Prop24",
309
+ "type": "proposition",
310
+ "label": "Rectangle by medial lines commensurable in length is medial",
311
+ "shortLabel": "Prop. X.24",
312
+ "short": "Medial rectangle: commensurable length",
313
+ "book": 10,
314
+ "number": 24,
315
+ "colorClass": "proposition"
316
+ },
317
+ {
318
+ "id": "Prop25",
319
+ "type": "proposition",
320
+ "label": "Rectangle by medial in square only: rational or medial",
321
+ "shortLabel": "Prop. X.25",
322
+ "short": "Medial: square only",
323
+ "book": 10,
324
+ "number": 25,
325
+ "colorClass": "proposition"
326
+ },
327
+ {
328
+ "id": "Prop26",
329
+ "type": "proposition",
330
+ "label": "Medial area does not exceed medial by rational area",
331
+ "shortLabel": "Prop. X.26",
332
+ "short": "Medial minus medial",
333
+ "book": 10,
334
+ "number": 26,
335
+ "colorClass": "proposition"
336
+ },
337
+ {
338
+ "id": "Prop27",
339
+ "type": "proposition",
340
+ "label": "To find medial lines commensurable in square only containing rational rectangle",
341
+ "shortLabel": "Prop. X.27",
342
+ "short": "Find medial in square only, rational rect",
343
+ "book": 10,
344
+ "number": 27,
345
+ "colorClass": "proposition"
346
+ },
347
+ {
348
+ "id": "Prop28",
349
+ "type": "proposition",
350
+ "label": "To find medial lines commensurable in square only containing medial rectangle",
351
+ "shortLabel": "Prop. X.28",
352
+ "short": "Find medial in square only, medial rect",
353
+ "book": 10,
354
+ "number": 28,
355
+ "colorClass": "proposition"
356
+ },
357
+ {
358
+ "id": "Prop29",
359
+ "type": "proposition",
360
+ "label": "To find two rational in square only: square diff commensurable with greater",
361
+ "shortLabel": "Prop. X.29",
362
+ "short": "Find rational in square only, commensurable diff",
363
+ "book": 10,
364
+ "number": 29,
365
+ "colorClass": "proposition"
366
+ },
367
+ {
368
+ "id": "Prop30",
369
+ "type": "proposition",
370
+ "label": "To find two rational in square only: square diff incommensurable with greater",
371
+ "shortLabel": "Prop. X.30",
372
+ "short": "Find rational in square only, incommensurable diff",
373
+ "book": 10,
374
+ "number": 30,
375
+ "colorClass": "proposition"
376
+ },
377
+ {
378
+ "id": "Prop31",
379
+ "type": "proposition",
380
+ "label": "To find two medial in square only, rational rect: diff commensurable with greater",
381
+ "shortLabel": "Prop. X.31",
382
+ "short": "Find medial, rational rect, commensurable diff",
383
+ "book": 10,
384
+ "number": 31,
385
+ "colorClass": "proposition"
386
+ },
387
+ {
388
+ "id": "Prop32",
389
+ "type": "proposition",
390
+ "label": "To find two medial in square only, medial rect: diff commensurable with greater",
391
+ "shortLabel": "Prop. X.32",
392
+ "short": "Find medial, medial rect, commensurable diff",
393
+ "book": 10,
394
+ "number": 32,
395
+ "colorClass": "proposition"
396
+ },
397
+ {
398
+ "id": "Prop33",
399
+ "type": "proposition",
400
+ "label": "To find two incommensurable in square: sum of squares rational, rectangle medial",
401
+ "shortLabel": "Prop. X.33",
402
+ "short": "Find incommensurable: rational sum, medial rect",
403
+ "book": 10,
404
+ "number": 33,
405
+ "colorClass": "proposition"
406
+ },
407
+ {
408
+ "id": "Prop34",
409
+ "type": "proposition",
410
+ "label": "To find two incommensurable in square: sum medial, rectangle rational",
411
+ "shortLabel": "Prop. X.34",
412
+ "short": "Find incommensurable: medial sum, rational rect",
413
+ "book": 10,
414
+ "number": 34,
415
+ "colorClass": "proposition"
416
+ },
417
+ {
418
+ "id": "Prop35",
419
+ "type": "proposition",
420
+ "label": "To find two incommensurable in square: sum and rect medial, incommensurable",
421
+ "shortLabel": "Prop. X.35",
422
+ "short": "Find incommensurable: both medial",
423
+ "book": 10,
424
+ "number": 35,
425
+ "colorClass": "proposition"
426
+ },
427
+ {
428
+ "id": "Prop36",
429
+ "type": "proposition",
430
+ "label": "Two rational in square only added: whole irrational, called binomial",
431
+ "shortLabel": "Prop. X.36",
432
+ "short": "Binomial defined",
433
+ "book": 10,
434
+ "number": 36,
435
+ "colorClass": "proposition"
436
+ },
437
+ {
438
+ "id": "Prop37",
439
+ "type": "proposition",
440
+ "label": "Two medial in square only, rational rect added: first bimedial",
441
+ "shortLabel": "Prop. X.37",
442
+ "short": "First bimedial defined",
443
+ "book": 10,
444
+ "number": 37,
445
+ "colorClass": "proposition"
446
+ },
447
+ {
448
+ "id": "Prop38",
449
+ "type": "proposition",
450
+ "label": "Two medial in square only, medial rect added: second bimedial",
451
+ "shortLabel": "Prop. X.38",
452
+ "short": "Second bimedial defined",
453
+ "book": 10,
454
+ "number": 38,
455
+ "colorClass": "proposition"
456
+ },
457
+ {
458
+ "id": "Prop39",
459
+ "type": "proposition",
460
+ "label": "Two incommensurable in square, rational sum, medial rect added: major",
461
+ "shortLabel": "Prop. X.39",
462
+ "short": "Major defined",
463
+ "book": 10,
464
+ "number": 39,
465
+ "colorClass": "proposition"
466
+ },
467
+ {
468
+ "id": "Prop40",
469
+ "type": "proposition",
470
+ "label": "Two incommensurable in square, medial sum, rational rect added: side of rational plus medial",
471
+ "shortLabel": "Prop. X.40",
472
+ "short": "Side of rational plus medial",
473
+ "book": 10,
474
+ "number": 40,
475
+ "colorClass": "proposition"
476
+ },
477
+ {
478
+ "id": "Prop41",
479
+ "type": "proposition",
480
+ "label": "Two incommensurable in square, both medial added: side of sum of two medial",
481
+ "shortLabel": "Prop. X.41",
482
+ "short": "Side of sum of two medial",
483
+ "book": 10,
484
+ "number": 41,
485
+ "colorClass": "proposition"
486
+ },
487
+ {
488
+ "id": "Prop42",
489
+ "type": "proposition",
490
+ "label": "Binomial divided into terms at one point only",
491
+ "shortLabel": "Prop. X.42",
492
+ "short": "Binomial: unique division",
493
+ "book": 10,
494
+ "number": 42,
495
+ "colorClass": "proposition"
496
+ },
497
+ {
498
+ "id": "Prop43",
499
+ "type": "proposition",
500
+ "label": "First bimedial divided at one point only",
501
+ "shortLabel": "Prop. X.43",
502
+ "short": "First bimedial: unique division",
503
+ "book": 10,
504
+ "number": 43,
505
+ "colorClass": "proposition"
506
+ },
507
+ {
508
+ "id": "Prop44",
509
+ "type": "proposition",
510
+ "label": "Second bimedial divided at one point only",
511
+ "shortLabel": "Prop. X.44",
512
+ "short": "Second bimedial: unique division",
513
+ "book": 10,
514
+ "number": 44,
515
+ "colorClass": "proposition"
516
+ },
517
+ {
518
+ "id": "Prop45",
519
+ "type": "proposition",
520
+ "label": "Major divided at one point only",
521
+ "shortLabel": "Prop. X.45",
522
+ "short": "Major: unique division",
523
+ "book": 10,
524
+ "number": 45,
525
+ "colorClass": "proposition"
526
+ },
527
+ {
528
+ "id": "Prop46",
529
+ "type": "proposition",
530
+ "label": "Side of rational plus medial divided at one point only",
531
+ "shortLabel": "Prop. X.46",
532
+ "short": "Side rational+medial: unique division",
533
+ "book": 10,
534
+ "number": 46,
535
+ "colorClass": "proposition"
536
+ },
537
+ {
538
+ "id": "Prop47",
539
+ "type": "proposition",
540
+ "label": "Side of sum of two medial divided at one point only",
541
+ "shortLabel": "Prop. X.47",
542
+ "short": "Side two medial: unique division",
543
+ "book": 10,
544
+ "number": 47,
545
+ "colorClass": "proposition"
546
+ },
547
+ {
548
+ "id": "Prop48",
549
+ "type": "proposition",
550
+ "label": "To find the first binomial line",
551
+ "shortLabel": "Prop. X.48",
552
+ "short": "Find first binomial",
553
+ "book": 10,
554
+ "number": 48,
555
+ "colorClass": "proposition"
556
+ },
557
+ {
558
+ "id": "Prop49",
559
+ "type": "proposition",
560
+ "label": "To find the second binomial line",
561
+ "shortLabel": "Prop. X.49",
562
+ "short": "Find second binomial",
563
+ "book": 10,
564
+ "number": 49,
565
+ "colorClass": "proposition"
566
+ },
567
+ {
568
+ "id": "Prop50",
569
+ "type": "proposition",
570
+ "label": "To find the third binomial line",
571
+ "shortLabel": "Prop. X.50",
572
+ "short": "Find third binomial",
573
+ "book": 10,
574
+ "number": 50,
575
+ "colorClass": "proposition"
576
+ },
577
+ {
578
+ "id": "Prop51",
579
+ "type": "proposition",
580
+ "label": "To find the fourth binomial line",
581
+ "shortLabel": "Prop. X.51",
582
+ "short": "Find fourth binomial",
583
+ "book": 10,
584
+ "number": 51,
585
+ "colorClass": "proposition"
586
+ },
587
+ {
588
+ "id": "Prop52",
589
+ "type": "proposition",
590
+ "label": "To find the fifth binomial line",
591
+ "shortLabel": "Prop. X.52",
592
+ "short": "Find fifth binomial",
593
+ "book": 10,
594
+ "number": 52,
595
+ "colorClass": "proposition"
596
+ },
597
+ {
598
+ "id": "Prop53",
599
+ "type": "proposition",
600
+ "label": "To find the sixth binomial line",
601
+ "shortLabel": "Prop. X.53",
602
+ "short": "Find sixth binomial",
603
+ "book": 10,
604
+ "number": 53,
605
+ "colorClass": "proposition"
606
+ },
607
+ {
608
+ "id": "Prop54",
609
+ "type": "proposition",
610
+ "label": "Area by rational and first binomial: side is binomial",
611
+ "shortLabel": "Prop. X.54",
612
+ "short": "Rational × first binomial",
613
+ "book": 10,
614
+ "number": 54,
615
+ "colorClass": "proposition"
616
+ },
617
+ {
618
+ "id": "Prop55",
619
+ "type": "proposition",
620
+ "label": "Area by rational and second binomial: side is first bimedial",
621
+ "shortLabel": "Prop. X.55",
622
+ "short": "Rational × second binomial",
623
+ "book": 10,
624
+ "number": 55,
625
+ "colorClass": "proposition"
626
+ },
627
+ {
628
+ "id": "Prop56",
629
+ "type": "proposition",
630
+ "label": "Area by rational and third binomial: side is second bimedial",
631
+ "shortLabel": "Prop. X.56",
632
+ "short": "Rational × third binomial",
633
+ "book": 10,
634
+ "number": 56,
635
+ "colorClass": "proposition"
636
+ },
637
+ {
638
+ "id": "Prop57",
639
+ "type": "proposition",
640
+ "label": "Area by rational and fourth binomial: side is major",
641
+ "shortLabel": "Prop. X.57",
642
+ "short": "Rational × fourth binomial",
643
+ "book": 10,
644
+ "number": 57,
645
+ "colorClass": "proposition"
646
+ },
647
+ {
648
+ "id": "Prop58",
649
+ "type": "proposition",
650
+ "label": "Area by rational and fifth binomial: side is rational plus medial",
651
+ "shortLabel": "Prop. X.58",
652
+ "short": "Rational × fifth binomial",
653
+ "book": 10,
654
+ "number": 58,
655
+ "colorClass": "proposition"
656
+ },
657
+ {
658
+ "id": "Prop59",
659
+ "type": "proposition",
660
+ "label": "Area by rational and sixth binomial: side is sum of two medial",
661
+ "shortLabel": "Prop. X.59",
662
+ "short": "Rational × sixth binomial",
663
+ "book": 10,
664
+ "number": 59,
665
+ "colorClass": "proposition"
666
+ },
667
+ {
668
+ "id": "Prop60",
669
+ "type": "proposition",
670
+ "label": "Square on binomial applied to rational: breadth first binomial",
671
+ "shortLabel": "Prop. X.60",
672
+ "short": "Square on binomial",
673
+ "book": 10,
674
+ "number": 60,
675
+ "colorClass": "proposition"
676
+ },
677
+ {
678
+ "id": "Prop61",
679
+ "type": "proposition",
680
+ "label": "Square on first bimedial applied to rational: breadth second binomial",
681
+ "shortLabel": "Prop. X.61",
682
+ "short": "Square on first bimedial",
683
+ "book": 10,
684
+ "number": 61,
685
+ "colorClass": "proposition"
686
+ },
687
+ {
688
+ "id": "Prop62",
689
+ "type": "proposition",
690
+ "label": "Square on second bimedial applied to rational: breadth third binomial",
691
+ "shortLabel": "Prop. X.62",
692
+ "short": "Square on second bimedial",
693
+ "book": 10,
694
+ "number": 62,
695
+ "colorClass": "proposition"
696
+ },
697
+ {
698
+ "id": "Prop63",
699
+ "type": "proposition",
700
+ "label": "Square on major applied to rational: breadth fourth binomial",
701
+ "shortLabel": "Prop. X.63",
702
+ "short": "Square on major",
703
+ "book": 10,
704
+ "number": 63,
705
+ "colorClass": "proposition"
706
+ },
707
+ {
708
+ "id": "Prop64",
709
+ "type": "proposition",
710
+ "label": "Square on rational+medial applied to rational: breadth fifth binomial",
711
+ "shortLabel": "Prop. X.64",
712
+ "short": "Square on rational+medial",
713
+ "book": 10,
714
+ "number": 64,
715
+ "colorClass": "proposition"
716
+ },
717
+ {
718
+ "id": "Prop65",
719
+ "type": "proposition",
720
+ "label": "Square on sum of two medial applied to rational: breadth sixth binomial",
721
+ "shortLabel": "Prop. X.65",
722
+ "short": "Square on two medial",
723
+ "book": 10,
724
+ "number": 65,
725
+ "colorClass": "proposition"
726
+ },
727
+ {
728
+ "id": "Prop66",
729
+ "type": "proposition",
730
+ "label": "Line commensurable with binomial is binomial, same order",
731
+ "shortLabel": "Prop. X.66",
732
+ "short": "Commensurable with binomial",
733
+ "book": 10,
734
+ "number": 66,
735
+ "colorClass": "proposition"
736
+ },
737
+ {
738
+ "id": "Prop67",
739
+ "type": "proposition",
740
+ "label": "Line commensurable with bimedial is bimedial, same order",
741
+ "shortLabel": "Prop. X.67",
742
+ "short": "Commensurable with bimedial",
743
+ "book": 10,
744
+ "number": 67,
745
+ "colorClass": "proposition"
746
+ },
747
+ {
748
+ "id": "Prop68",
749
+ "type": "proposition",
750
+ "label": "Line commensurable with major is major",
751
+ "shortLabel": "Prop. X.68",
752
+ "short": "Commensurable with major",
753
+ "book": 10,
754
+ "number": 68,
755
+ "colorClass": "proposition"
756
+ },
757
+ {
758
+ "id": "Prop69",
759
+ "type": "proposition",
760
+ "label": "Line commensurable with rational+medial is rational+medial",
761
+ "shortLabel": "Prop. X.69",
762
+ "short": "Commensurable with rational+medial",
763
+ "book": 10,
764
+ "number": 69,
765
+ "colorClass": "proposition"
766
+ },
767
+ {
768
+ "id": "Prop70",
769
+ "type": "proposition",
770
+ "label": "Line commensurable with sum of two medial is sum of two medial",
771
+ "shortLabel": "Prop. X.70",
772
+ "short": "Commensurable with two medial",
773
+ "book": 10,
774
+ "number": 70,
775
+ "colorClass": "proposition"
776
+ },
777
+ {
778
+ "id": "Prop71",
779
+ "type": "proposition",
780
+ "label": "Rational and medial added: four irrationals arise",
781
+ "shortLabel": "Prop. X.71",
782
+ "short": "Rational + medial: four irrationals",
783
+ "book": 10,
784
+ "number": 71,
785
+ "colorClass": "proposition"
786
+ },
787
+ {
788
+ "id": "Prop72",
789
+ "type": "proposition",
790
+ "label": "Two medial incommensurable added: two irrationals arise",
791
+ "shortLabel": "Prop. X.72",
792
+ "short": "Two medial: two irrationals",
793
+ "book": 10,
794
+ "number": 72,
795
+ "colorClass": "proposition"
796
+ },
797
+ {
798
+ "id": "Prop73",
799
+ "type": "proposition",
800
+ "label": "Rational minus rational in square only: remainder irrational, apotome",
801
+ "shortLabel": "Prop. X.73",
802
+ "short": "Apotome defined",
803
+ "book": 10,
804
+ "number": 73,
805
+ "colorClass": "proposition"
806
+ },
807
+ {
808
+ "id": "Prop74",
809
+ "type": "proposition",
810
+ "label": "Medial minus medial, rational rect: first apotome of medial",
811
+ "shortLabel": "Prop. X.74",
812
+ "short": "First apotome of medial",
813
+ "book": 10,
814
+ "number": 74,
815
+ "colorClass": "proposition"
816
+ },
817
+ {
818
+ "id": "Prop75",
819
+ "type": "proposition",
820
+ "label": "Medial minus medial, medial rect: second apotome of medial",
821
+ "shortLabel": "Prop. X.75",
822
+ "short": "Second apotome of medial",
823
+ "book": 10,
824
+ "number": 75,
825
+ "colorClass": "proposition"
826
+ },
827
+ {
828
+ "id": "Prop76",
829
+ "type": "proposition",
830
+ "label": "Line minus incommensurable: sum rational, rect medial: remainder minor",
831
+ "shortLabel": "Prop. X.76",
832
+ "short": "Minor defined",
833
+ "book": 10,
834
+ "number": 76,
835
+ "colorClass": "proposition"
836
+ },
837
+ {
838
+ "id": "Prop77",
839
+ "type": "proposition",
840
+ "label": "Line minus incommensurable: sum medial, rect rational: produces rational+medial",
841
+ "shortLabel": "Prop. X.77",
842
+ "short": "Produces rational+medial",
843
+ "book": 10,
844
+ "number": 77,
845
+ "colorClass": "proposition"
846
+ },
847
+ {
848
+ "id": "Prop78",
849
+ "type": "proposition",
850
+ "label": "Line minus incommensurable: both medial, incommensurable: produces medial+medial",
851
+ "shortLabel": "Prop. X.78",
852
+ "short": "Produces medial+medial",
853
+ "book": 10,
854
+ "number": 78,
855
+ "colorClass": "proposition"
856
+ },
857
+ {
858
+ "id": "Prop79",
859
+ "type": "proposition",
860
+ "label": "To apotome only one rational can be annexed in square only",
861
+ "shortLabel": "Prop. X.79",
862
+ "short": "Apotome: unique annex",
863
+ "book": 10,
864
+ "number": 79,
865
+ "colorClass": "proposition"
866
+ },
867
+ {
868
+ "id": "Prop80",
869
+ "type": "proposition",
870
+ "label": "To first apotome of medial: unique medial annex, rational rect",
871
+ "shortLabel": "Prop. X.80",
872
+ "short": "First apotome medial: unique annex",
873
+ "book": 10,
874
+ "number": 80,
875
+ "colorClass": "proposition"
876
+ },
877
+ {
878
+ "id": "Prop81",
879
+ "type": "proposition",
880
+ "label": "To second apotome of medial: unique medial annex, medial rect",
881
+ "shortLabel": "Prop. X.81",
882
+ "short": "Second apotome medial: unique annex",
883
+ "book": 10,
884
+ "number": 81,
885
+ "colorClass": "proposition"
886
+ },
887
+ {
888
+ "id": "Prop82",
889
+ "type": "proposition",
890
+ "label": "To minor: unique annex incommensurable in square",
891
+ "shortLabel": "Prop. X.82",
892
+ "short": "Minor: unique annex",
893
+ "book": 10,
894
+ "number": 82,
895
+ "colorClass": "proposition"
896
+ },
897
+ {
898
+ "id": "Prop83",
899
+ "type": "proposition",
900
+ "label": "To produces rational+medial: unique annex",
901
+ "shortLabel": "Prop. X.83",
902
+ "short": "Rational+medial: unique annex",
903
+ "book": 10,
904
+ "number": 83,
905
+ "colorClass": "proposition"
906
+ },
907
+ {
908
+ "id": "Prop84",
909
+ "type": "proposition",
910
+ "label": "To produces medial+medial: unique annex",
911
+ "shortLabel": "Prop. X.84",
912
+ "short": "Medial+medial: unique annex",
913
+ "book": 10,
914
+ "number": 84,
915
+ "colorClass": "proposition"
916
+ },
917
+ {
918
+ "id": "Prop85",
919
+ "type": "proposition",
920
+ "label": "To find the first apotome",
921
+ "shortLabel": "Prop. X.85",
922
+ "short": "Find first apotome",
923
+ "book": 10,
924
+ "number": 85,
925
+ "colorClass": "proposition"
926
+ },
927
+ {
928
+ "id": "Prop86",
929
+ "type": "proposition",
930
+ "label": "To find the second apotome",
931
+ "shortLabel": "Prop. X.86",
932
+ "short": "Find second apotome",
933
+ "book": 10,
934
+ "number": 86,
935
+ "colorClass": "proposition"
936
+ },
937
+ {
938
+ "id": "Prop87",
939
+ "type": "proposition",
940
+ "label": "To find the third apotome",
941
+ "shortLabel": "Prop. X.87",
942
+ "short": "Find third apotome",
943
+ "book": 10,
944
+ "number": 87,
945
+ "colorClass": "proposition"
946
+ },
947
+ {
948
+ "id": "Prop88",
949
+ "type": "proposition",
950
+ "label": "To find the fourth apotome",
951
+ "shortLabel": "Prop. X.88",
952
+ "short": "Find fourth apotome",
953
+ "book": 10,
954
+ "number": 88,
955
+ "colorClass": "proposition"
956
+ },
957
+ {
958
+ "id": "Prop89",
959
+ "type": "proposition",
960
+ "label": "To find the fifth apotome",
961
+ "shortLabel": "Prop. X.89",
962
+ "short": "Find fifth apotome",
963
+ "book": 10,
964
+ "number": 89,
965
+ "colorClass": "proposition"
966
+ },
967
+ {
968
+ "id": "Prop90",
969
+ "type": "proposition",
970
+ "label": "To find the sixth apotome",
971
+ "shortLabel": "Prop. X.90",
972
+ "short": "Find sixth apotome",
973
+ "book": 10,
974
+ "number": 90,
975
+ "colorClass": "proposition"
976
+ },
977
+ {
978
+ "id": "Prop91",
979
+ "type": "proposition",
980
+ "label": "Area by rational and first apotome: side is apotome",
981
+ "shortLabel": "Prop. X.91",
982
+ "short": "Rational × first apotome",
983
+ "book": 10,
984
+ "number": 91,
985
+ "colorClass": "proposition"
986
+ },
987
+ {
988
+ "id": "Prop92",
989
+ "type": "proposition",
990
+ "label": "Area by rational and second apotome: side is first apotome of medial",
991
+ "shortLabel": "Prop. X.92",
992
+ "short": "Rational × second apotome",
993
+ "book": 10,
994
+ "number": 92,
995
+ "colorClass": "proposition"
996
+ },
997
+ {
998
+ "id": "Prop93",
999
+ "type": "proposition",
1000
+ "label": "Area by rational and third apotome: side is second apotome of medial",
1001
+ "shortLabel": "Prop. X.93",
1002
+ "short": "Rational × third apotome",
1003
+ "book": 10,
1004
+ "number": 93,
1005
+ "colorClass": "proposition"
1006
+ },
1007
+ {
1008
+ "id": "Prop94",
1009
+ "type": "proposition",
1010
+ "label": "Area by rational and fourth apotome: side is minor",
1011
+ "shortLabel": "Prop. X.94",
1012
+ "short": "Rational × fourth apotome",
1013
+ "book": 10,
1014
+ "number": 94,
1015
+ "colorClass": "proposition"
1016
+ },
1017
+ {
1018
+ "id": "Prop95",
1019
+ "type": "proposition",
1020
+ "label": "Area by rational and fifth apotome: side produces rational+medial",
1021
+ "shortLabel": "Prop. X.95",
1022
+ "short": "Rational × fifth apotome",
1023
+ "book": 10,
1024
+ "number": 95,
1025
+ "colorClass": "proposition"
1026
+ },
1027
+ {
1028
+ "id": "Prop96",
1029
+ "type": "proposition",
1030
+ "label": "Area by rational and sixth apotome: side produces medial+medial",
1031
+ "shortLabel": "Prop. X.96",
1032
+ "short": "Rational × sixth apotome",
1033
+ "book": 10,
1034
+ "number": 96,
1035
+ "colorClass": "proposition"
1036
+ },
1037
+ {
1038
+ "id": "Prop97",
1039
+ "type": "proposition",
1040
+ "label": "Square on apotome of medial applied to rational: breadth first apotome",
1041
+ "shortLabel": "Prop. X.97",
1042
+ "short": "Square on apotome medial",
1043
+ "book": 10,
1044
+ "number": 97,
1045
+ "colorClass": "proposition"
1046
+ },
1047
+ {
1048
+ "id": "Prop98",
1049
+ "type": "proposition",
1050
+ "label": "Square on first apotome of medial: breadth second apotome",
1051
+ "shortLabel": "Prop. X.98",
1052
+ "short": "Square on first apotome medial",
1053
+ "book": 10,
1054
+ "number": 98,
1055
+ "colorClass": "proposition"
1056
+ },
1057
+ {
1058
+ "id": "Prop99",
1059
+ "type": "proposition",
1060
+ "label": "Square on second apotome of medial: breadth third apotome",
1061
+ "shortLabel": "Prop. X.99",
1062
+ "short": "Square on second apotome medial",
1063
+ "book": 10,
1064
+ "number": 99,
1065
+ "colorClass": "proposition"
1066
+ },
1067
+ {
1068
+ "id": "Prop100",
1069
+ "type": "proposition",
1070
+ "label": "Square on minor applied to rational: breadth fourth apotome",
1071
+ "shortLabel": "Prop. X.100",
1072
+ "short": "Square on minor",
1073
+ "book": 10,
1074
+ "number": 100,
1075
+ "colorClass": "proposition"
1076
+ },
1077
+ {
1078
+ "id": "Prop101",
1079
+ "type": "proposition",
1080
+ "label": "Square on produces rational+medial: breadth fifth apotome",
1081
+ "shortLabel": "Prop. X.101",
1082
+ "short": "Square on rational+medial",
1083
+ "book": 10,
1084
+ "number": 101,
1085
+ "colorClass": "proposition"
1086
+ },
1087
+ {
1088
+ "id": "Prop102",
1089
+ "type": "proposition",
1090
+ "label": "Square on produces medial+medial: breadth sixth apotome",
1091
+ "shortLabel": "Prop. X.102",
1092
+ "short": "Square on medial+medial",
1093
+ "book": 10,
1094
+ "number": 102,
1095
+ "colorClass": "proposition"
1096
+ },
1097
+ {
1098
+ "id": "Prop103",
1099
+ "type": "proposition",
1100
+ "label": "Line commensurable with apotome is apotome, same order",
1101
+ "shortLabel": "Prop. X.103",
1102
+ "short": "Commensurable with apotome",
1103
+ "book": 10,
1104
+ "number": 103,
1105
+ "colorClass": "proposition"
1106
+ },
1107
+ {
1108
+ "id": "Prop104",
1109
+ "type": "proposition",
1110
+ "label": "Line commensurable with apotome of medial is apotome of medial",
1111
+ "shortLabel": "Prop. X.104",
1112
+ "short": "Commensurable with apotome medial",
1113
+ "book": 10,
1114
+ "number": 104,
1115
+ "colorClass": "proposition"
1116
+ },
1117
+ {
1118
+ "id": "Prop105",
1119
+ "type": "proposition",
1120
+ "label": "Line commensurable with minor is minor",
1121
+ "shortLabel": "Prop. X.105",
1122
+ "short": "Commensurable with minor",
1123
+ "book": 10,
1124
+ "number": 105,
1125
+ "colorClass": "proposition"
1126
+ },
1127
+ {
1128
+ "id": "Prop106",
1129
+ "type": "proposition",
1130
+ "label": "Line commensurable with produces rational+medial is same",
1131
+ "shortLabel": "Prop. X.106",
1132
+ "short": "Commensurable with rational+medial",
1133
+ "book": 10,
1134
+ "number": 106,
1135
+ "colorClass": "proposition"
1136
+ },
1137
+ {
1138
+ "id": "Prop107",
1139
+ "type": "proposition",
1140
+ "label": "Line commensurable with produces medial+medial is same",
1141
+ "shortLabel": "Prop. X.107",
1142
+ "short": "Commensurable with medial+medial",
1143
+ "book": 10,
1144
+ "number": 107,
1145
+ "colorClass": "proposition"
1146
+ },
1147
+ {
1148
+ "id": "Prop108",
1149
+ "type": "proposition",
1150
+ "label": "From rational area subtract medial: side is apotome or minor",
1151
+ "shortLabel": "Prop. X.108",
1152
+ "short": "Rational minus medial",
1153
+ "book": 10,
1154
+ "number": 108,
1155
+ "colorClass": "proposition"
1156
+ },
1157
+ {
1158
+ "id": "Prop109",
1159
+ "type": "proposition",
1160
+ "label": "From medial subtract rational: first apotome of medial or rational+medial",
1161
+ "shortLabel": "Prop. X.109",
1162
+ "short": "Medial minus rational",
1163
+ "book": 10,
1164
+ "number": 109,
1165
+ "colorClass": "proposition"
1166
+ },
1167
+ {
1168
+ "id": "Prop110",
1169
+ "type": "proposition",
1170
+ "label": "From medial subtract medial incommensurable: second apotome or medial+medial",
1171
+ "shortLabel": "Prop. X.110",
1172
+ "short": "Medial minus medial",
1173
+ "book": 10,
1174
+ "number": 110,
1175
+ "colorClass": "proposition"
1176
+ },
1177
+ {
1178
+ "id": "Prop111",
1179
+ "type": "proposition",
1180
+ "label": "Apotome is not the same as binomial",
1181
+ "shortLabel": "Prop. X.111",
1182
+ "short": "Apotome ≠ binomial",
1183
+ "book": 10,
1184
+ "number": 111,
1185
+ "colorClass": "proposition"
1186
+ },
1187
+ {
1188
+ "id": "Prop112",
1189
+ "type": "proposition",
1190
+ "label": "Square on rational applied to binomial: breadth apotome, same order",
1191
+ "shortLabel": "Prop. X.112",
1192
+ "short": "Rational on binomial",
1193
+ "book": 10,
1194
+ "number": 112,
1195
+ "colorClass": "proposition"
1196
+ },
1197
+ {
1198
+ "id": "Prop113",
1199
+ "type": "proposition",
1200
+ "label": "Square on rational applied to apotome: breadth binomial, same order",
1201
+ "shortLabel": "Prop. X.113",
1202
+ "short": "Rational on apotome",
1203
+ "book": 10,
1204
+ "number": 113,
1205
+ "colorClass": "proposition"
1206
+ },
1207
+ {
1208
+ "id": "Prop114",
1209
+ "type": "proposition",
1210
+ "label": "Area by apotome and binomial (commensurable terms): side is rational",
1211
+ "shortLabel": "Prop. X.114",
1212
+ "short": "Apotome × binomial: rational",
1213
+ "book": 10,
1214
+ "number": 114,
1215
+ "colorClass": "proposition"
1216
+ },
1217
+ {
1218
+ "id": "Prop115",
1219
+ "type": "proposition",
1220
+ "label": "From medial arise irrationals infinite in number, none same as preceding",
1221
+ "shortLabel": "Prop. X.115",
1222
+ "short": "Medial: infinite irrationals",
1223
+ "book": 10,
1224
+ "number": 115,
1225
+ "colorClass": "proposition"
1226
+ }
1227
+ ],
1228
+ "edges": [
1229
+ {
1230
+ "from": "BookI",
1231
+ "to": "Prop1"
1232
+ },
1233
+ {
1234
+ "from": "BookV",
1235
+ "to": "Prop1"
1236
+ },
1237
+ {
1238
+ "from": "BookVI",
1239
+ "to": "Prop1"
1240
+ },
1241
+ {
1242
+ "from": "BookI",
1243
+ "to": "Prop2"
1244
+ },
1245
+ {
1246
+ "from": "BookV",
1247
+ "to": "Prop2"
1248
+ },
1249
+ {
1250
+ "from": "BookVI",
1251
+ "to": "Prop2"
1252
+ },
1253
+ {
1254
+ "from": "BookI",
1255
+ "to": "Prop3"
1256
+ },
1257
+ {
1258
+ "from": "BookV",
1259
+ "to": "Prop3"
1260
+ },
1261
+ {
1262
+ "from": "BookVI",
1263
+ "to": "Prop3"
1264
+ },
1265
+ {
1266
+ "from": "BookI",
1267
+ "to": "Prop4"
1268
+ },
1269
+ {
1270
+ "from": "BookV",
1271
+ "to": "Prop4"
1272
+ },
1273
+ {
1274
+ "from": "BookVI",
1275
+ "to": "Prop4"
1276
+ },
1277
+ {
1278
+ "from": "BookI",
1279
+ "to": "Prop5"
1280
+ },
1281
+ {
1282
+ "from": "BookV",
1283
+ "to": "Prop5"
1284
+ },
1285
+ {
1286
+ "from": "BookVI",
1287
+ "to": "Prop5"
1288
+ },
1289
+ {
1290
+ "from": "BookI",
1291
+ "to": "Prop6"
1292
+ },
1293
+ {
1294
+ "from": "BookV",
1295
+ "to": "Prop6"
1296
+ },
1297
+ {
1298
+ "from": "BookVI",
1299
+ "to": "Prop6"
1300
+ },
1301
+ {
1302
+ "from": "BookI",
1303
+ "to": "Prop7"
1304
+ },
1305
+ {
1306
+ "from": "BookV",
1307
+ "to": "Prop7"
1308
+ },
1309
+ {
1310
+ "from": "BookVI",
1311
+ "to": "Prop7"
1312
+ },
1313
+ {
1314
+ "from": "BookI",
1315
+ "to": "Prop8"
1316
+ },
1317
+ {
1318
+ "from": "BookV",
1319
+ "to": "Prop8"
1320
+ },
1321
+ {
1322
+ "from": "BookVI",
1323
+ "to": "Prop8"
1324
+ },
1325
+ {
1326
+ "from": "BookI",
1327
+ "to": "Prop9"
1328
+ },
1329
+ {
1330
+ "from": "BookV",
1331
+ "to": "Prop9"
1332
+ },
1333
+ {
1334
+ "from": "BookVI",
1335
+ "to": "Prop9"
1336
+ },
1337
+ {
1338
+ "from": "BookI",
1339
+ "to": "Prop10"
1340
+ },
1341
+ {
1342
+ "from": "BookV",
1343
+ "to": "Prop10"
1344
+ },
1345
+ {
1346
+ "from": "BookVI",
1347
+ "to": "Prop10"
1348
+ },
1349
+ {
1350
+ "from": "BookI",
1351
+ "to": "Prop11"
1352
+ },
1353
+ {
1354
+ "from": "BookV",
1355
+ "to": "Prop11"
1356
+ },
1357
+ {
1358
+ "from": "BookVI",
1359
+ "to": "Prop11"
1360
+ },
1361
+ {
1362
+ "from": "BookI",
1363
+ "to": "Prop12"
1364
+ },
1365
+ {
1366
+ "from": "BookV",
1367
+ "to": "Prop12"
1368
+ },
1369
+ {
1370
+ "from": "BookVI",
1371
+ "to": "Prop12"
1372
+ },
1373
+ {
1374
+ "from": "BookI",
1375
+ "to": "Prop13"
1376
+ },
1377
+ {
1378
+ "from": "BookV",
1379
+ "to": "Prop13"
1380
+ },
1381
+ {
1382
+ "from": "BookVI",
1383
+ "to": "Prop13"
1384
+ },
1385
+ {
1386
+ "from": "BookI",
1387
+ "to": "Prop14"
1388
+ },
1389
+ {
1390
+ "from": "BookV",
1391
+ "to": "Prop14"
1392
+ },
1393
+ {
1394
+ "from": "BookVI",
1395
+ "to": "Prop14"
1396
+ },
1397
+ {
1398
+ "from": "BookI",
1399
+ "to": "Prop15"
1400
+ },
1401
+ {
1402
+ "from": "BookV",
1403
+ "to": "Prop15"
1404
+ },
1405
+ {
1406
+ "from": "BookVI",
1407
+ "to": "Prop15"
1408
+ },
1409
+ {
1410
+ "from": "BookI",
1411
+ "to": "Prop16"
1412
+ },
1413
+ {
1414
+ "from": "BookV",
1415
+ "to": "Prop16"
1416
+ },
1417
+ {
1418
+ "from": "BookVI",
1419
+ "to": "Prop16"
1420
+ },
1421
+ {
1422
+ "from": "BookI",
1423
+ "to": "Prop17"
1424
+ },
1425
+ {
1426
+ "from": "BookV",
1427
+ "to": "Prop17"
1428
+ },
1429
+ {
1430
+ "from": "BookVI",
1431
+ "to": "Prop17"
1432
+ },
1433
+ {
1434
+ "from": "BookI",
1435
+ "to": "Prop18"
1436
+ },
1437
+ {
1438
+ "from": "BookV",
1439
+ "to": "Prop18"
1440
+ },
1441
+ {
1442
+ "from": "BookVI",
1443
+ "to": "Prop18"
1444
+ },
1445
+ {
1446
+ "from": "BookI",
1447
+ "to": "Prop19"
1448
+ },
1449
+ {
1450
+ "from": "BookV",
1451
+ "to": "Prop19"
1452
+ },
1453
+ {
1454
+ "from": "BookVI",
1455
+ "to": "Prop19"
1456
+ },
1457
+ {
1458
+ "from": "BookI",
1459
+ "to": "Prop20"
1460
+ },
1461
+ {
1462
+ "from": "BookV",
1463
+ "to": "Prop20"
1464
+ },
1465
+ {
1466
+ "from": "BookVI",
1467
+ "to": "Prop20"
1468
+ },
1469
+ {
1470
+ "from": "BookI",
1471
+ "to": "Prop21"
1472
+ },
1473
+ {
1474
+ "from": "BookV",
1475
+ "to": "Prop21"
1476
+ },
1477
+ {
1478
+ "from": "BookVI",
1479
+ "to": "Prop21"
1480
+ },
1481
+ {
1482
+ "from": "BookI",
1483
+ "to": "Prop22"
1484
+ },
1485
+ {
1486
+ "from": "BookV",
1487
+ "to": "Prop22"
1488
+ },
1489
+ {
1490
+ "from": "BookVI",
1491
+ "to": "Prop22"
1492
+ },
1493
+ {
1494
+ "from": "BookI",
1495
+ "to": "Prop23"
1496
+ },
1497
+ {
1498
+ "from": "BookV",
1499
+ "to": "Prop23"
1500
+ },
1501
+ {
1502
+ "from": "BookVI",
1503
+ "to": "Prop23"
1504
+ },
1505
+ {
1506
+ "from": "BookI",
1507
+ "to": "Prop24"
1508
+ },
1509
+ {
1510
+ "from": "BookV",
1511
+ "to": "Prop24"
1512
+ },
1513
+ {
1514
+ "from": "BookVI",
1515
+ "to": "Prop24"
1516
+ },
1517
+ {
1518
+ "from": "BookI",
1519
+ "to": "Prop25"
1520
+ },
1521
+ {
1522
+ "from": "BookV",
1523
+ "to": "Prop25"
1524
+ },
1525
+ {
1526
+ "from": "BookVI",
1527
+ "to": "Prop25"
1528
+ },
1529
+ {
1530
+ "from": "BookI",
1531
+ "to": "Prop26"
1532
+ },
1533
+ {
1534
+ "from": "BookV",
1535
+ "to": "Prop26"
1536
+ },
1537
+ {
1538
+ "from": "BookVI",
1539
+ "to": "Prop26"
1540
+ },
1541
+ {
1542
+ "from": "BookI",
1543
+ "to": "Prop27"
1544
+ },
1545
+ {
1546
+ "from": "BookV",
1547
+ "to": "Prop27"
1548
+ },
1549
+ {
1550
+ "from": "BookVI",
1551
+ "to": "Prop27"
1552
+ },
1553
+ {
1554
+ "from": "BookI",
1555
+ "to": "Prop28"
1556
+ },
1557
+ {
1558
+ "from": "BookV",
1559
+ "to": "Prop28"
1560
+ },
1561
+ {
1562
+ "from": "BookVI",
1563
+ "to": "Prop28"
1564
+ },
1565
+ {
1566
+ "from": "BookI",
1567
+ "to": "Prop29"
1568
+ },
1569
+ {
1570
+ "from": "BookV",
1571
+ "to": "Prop29"
1572
+ },
1573
+ {
1574
+ "from": "BookVI",
1575
+ "to": "Prop29"
1576
+ },
1577
+ {
1578
+ "from": "BookI",
1579
+ "to": "Prop30"
1580
+ },
1581
+ {
1582
+ "from": "BookV",
1583
+ "to": "Prop30"
1584
+ },
1585
+ {
1586
+ "from": "BookVI",
1587
+ "to": "Prop30"
1588
+ },
1589
+ {
1590
+ "from": "BookI",
1591
+ "to": "Prop31"
1592
+ },
1593
+ {
1594
+ "from": "BookV",
1595
+ "to": "Prop31"
1596
+ },
1597
+ {
1598
+ "from": "BookVI",
1599
+ "to": "Prop31"
1600
+ },
1601
+ {
1602
+ "from": "BookI",
1603
+ "to": "Prop32"
1604
+ },
1605
+ {
1606
+ "from": "BookV",
1607
+ "to": "Prop32"
1608
+ },
1609
+ {
1610
+ "from": "BookVI",
1611
+ "to": "Prop32"
1612
+ },
1613
+ {
1614
+ "from": "BookI",
1615
+ "to": "Prop33"
1616
+ },
1617
+ {
1618
+ "from": "BookV",
1619
+ "to": "Prop33"
1620
+ },
1621
+ {
1622
+ "from": "BookVI",
1623
+ "to": "Prop33"
1624
+ },
1625
+ {
1626
+ "from": "BookI",
1627
+ "to": "Prop34"
1628
+ },
1629
+ {
1630
+ "from": "BookV",
1631
+ "to": "Prop34"
1632
+ },
1633
+ {
1634
+ "from": "BookVI",
1635
+ "to": "Prop34"
1636
+ },
1637
+ {
1638
+ "from": "BookI",
1639
+ "to": "Prop35"
1640
+ },
1641
+ {
1642
+ "from": "BookV",
1643
+ "to": "Prop35"
1644
+ },
1645
+ {
1646
+ "from": "BookVI",
1647
+ "to": "Prop35"
1648
+ },
1649
+ {
1650
+ "from": "BookI",
1651
+ "to": "Prop36"
1652
+ },
1653
+ {
1654
+ "from": "BookV",
1655
+ "to": "Prop36"
1656
+ },
1657
+ {
1658
+ "from": "BookVI",
1659
+ "to": "Prop36"
1660
+ },
1661
+ {
1662
+ "from": "BookI",
1663
+ "to": "Prop37"
1664
+ },
1665
+ {
1666
+ "from": "BookV",
1667
+ "to": "Prop37"
1668
+ },
1669
+ {
1670
+ "from": "BookVI",
1671
+ "to": "Prop37"
1672
+ },
1673
+ {
1674
+ "from": "BookI",
1675
+ "to": "Prop38"
1676
+ },
1677
+ {
1678
+ "from": "BookV",
1679
+ "to": "Prop38"
1680
+ },
1681
+ {
1682
+ "from": "BookVI",
1683
+ "to": "Prop38"
1684
+ },
1685
+ {
1686
+ "from": "BookI",
1687
+ "to": "Prop39"
1688
+ },
1689
+ {
1690
+ "from": "BookV",
1691
+ "to": "Prop39"
1692
+ },
1693
+ {
1694
+ "from": "BookVI",
1695
+ "to": "Prop39"
1696
+ },
1697
+ {
1698
+ "from": "BookI",
1699
+ "to": "Prop40"
1700
+ },
1701
+ {
1702
+ "from": "BookV",
1703
+ "to": "Prop40"
1704
+ },
1705
+ {
1706
+ "from": "BookVI",
1707
+ "to": "Prop40"
1708
+ },
1709
+ {
1710
+ "from": "BookI",
1711
+ "to": "Prop41"
1712
+ },
1713
+ {
1714
+ "from": "BookV",
1715
+ "to": "Prop41"
1716
+ },
1717
+ {
1718
+ "from": "BookVI",
1719
+ "to": "Prop41"
1720
+ },
1721
+ {
1722
+ "from": "BookI",
1723
+ "to": "Prop42"
1724
+ },
1725
+ {
1726
+ "from": "BookV",
1727
+ "to": "Prop42"
1728
+ },
1729
+ {
1730
+ "from": "BookVI",
1731
+ "to": "Prop42"
1732
+ },
1733
+ {
1734
+ "from": "BookI",
1735
+ "to": "Prop43"
1736
+ },
1737
+ {
1738
+ "from": "BookV",
1739
+ "to": "Prop43"
1740
+ },
1741
+ {
1742
+ "from": "BookVI",
1743
+ "to": "Prop43"
1744
+ },
1745
+ {
1746
+ "from": "BookI",
1747
+ "to": "Prop44"
1748
+ },
1749
+ {
1750
+ "from": "BookV",
1751
+ "to": "Prop44"
1752
+ },
1753
+ {
1754
+ "from": "BookVI",
1755
+ "to": "Prop44"
1756
+ },
1757
+ {
1758
+ "from": "BookI",
1759
+ "to": "Prop45"
1760
+ },
1761
+ {
1762
+ "from": "BookV",
1763
+ "to": "Prop45"
1764
+ },
1765
+ {
1766
+ "from": "BookVI",
1767
+ "to": "Prop45"
1768
+ },
1769
+ {
1770
+ "from": "BookI",
1771
+ "to": "Prop46"
1772
+ },
1773
+ {
1774
+ "from": "BookV",
1775
+ "to": "Prop46"
1776
+ },
1777
+ {
1778
+ "from": "BookVI",
1779
+ "to": "Prop46"
1780
+ },
1781
+ {
1782
+ "from": "BookI",
1783
+ "to": "Prop47"
1784
+ },
1785
+ {
1786
+ "from": "BookV",
1787
+ "to": "Prop47"
1788
+ },
1789
+ {
1790
+ "from": "BookVI",
1791
+ "to": "Prop47"
1792
+ },
1793
+ {
1794
+ "from": "BookI",
1795
+ "to": "Prop48"
1796
+ },
1797
+ {
1798
+ "from": "BookV",
1799
+ "to": "Prop48"
1800
+ },
1801
+ {
1802
+ "from": "BookVI",
1803
+ "to": "Prop48"
1804
+ },
1805
+ {
1806
+ "from": "BookI",
1807
+ "to": "Prop49"
1808
+ },
1809
+ {
1810
+ "from": "BookV",
1811
+ "to": "Prop49"
1812
+ },
1813
+ {
1814
+ "from": "BookVI",
1815
+ "to": "Prop49"
1816
+ },
1817
+ {
1818
+ "from": "BookI",
1819
+ "to": "Prop50"
1820
+ },
1821
+ {
1822
+ "from": "BookV",
1823
+ "to": "Prop50"
1824
+ },
1825
+ {
1826
+ "from": "BookVI",
1827
+ "to": "Prop50"
1828
+ },
1829
+ {
1830
+ "from": "BookI",
1831
+ "to": "Prop51"
1832
+ },
1833
+ {
1834
+ "from": "BookV",
1835
+ "to": "Prop51"
1836
+ },
1837
+ {
1838
+ "from": "BookVI",
1839
+ "to": "Prop51"
1840
+ },
1841
+ {
1842
+ "from": "BookI",
1843
+ "to": "Prop52"
1844
+ },
1845
+ {
1846
+ "from": "BookV",
1847
+ "to": "Prop52"
1848
+ },
1849
+ {
1850
+ "from": "BookVI",
1851
+ "to": "Prop52"
1852
+ },
1853
+ {
1854
+ "from": "BookI",
1855
+ "to": "Prop53"
1856
+ },
1857
+ {
1858
+ "from": "BookV",
1859
+ "to": "Prop53"
1860
+ },
1861
+ {
1862
+ "from": "BookVI",
1863
+ "to": "Prop53"
1864
+ },
1865
+ {
1866
+ "from": "BookI",
1867
+ "to": "Prop54"
1868
+ },
1869
+ {
1870
+ "from": "BookV",
1871
+ "to": "Prop54"
1872
+ },
1873
+ {
1874
+ "from": "BookVI",
1875
+ "to": "Prop54"
1876
+ },
1877
+ {
1878
+ "from": "BookI",
1879
+ "to": "Prop55"
1880
+ },
1881
+ {
1882
+ "from": "BookV",
1883
+ "to": "Prop55"
1884
+ },
1885
+ {
1886
+ "from": "BookVI",
1887
+ "to": "Prop55"
1888
+ },
1889
+ {
1890
+ "from": "BookI",
1891
+ "to": "Prop56"
1892
+ },
1893
+ {
1894
+ "from": "BookV",
1895
+ "to": "Prop56"
1896
+ },
1897
+ {
1898
+ "from": "BookVI",
1899
+ "to": "Prop56"
1900
+ },
1901
+ {
1902
+ "from": "BookI",
1903
+ "to": "Prop57"
1904
+ },
1905
+ {
1906
+ "from": "BookV",
1907
+ "to": "Prop57"
1908
+ },
1909
+ {
1910
+ "from": "BookVI",
1911
+ "to": "Prop57"
1912
+ },
1913
+ {
1914
+ "from": "BookI",
1915
+ "to": "Prop58"
1916
+ },
1917
+ {
1918
+ "from": "BookV",
1919
+ "to": "Prop58"
1920
+ },
1921
+ {
1922
+ "from": "BookVI",
1923
+ "to": "Prop58"
1924
+ },
1925
+ {
1926
+ "from": "BookI",
1927
+ "to": "Prop59"
1928
+ },
1929
+ {
1930
+ "from": "BookV",
1931
+ "to": "Prop59"
1932
+ },
1933
+ {
1934
+ "from": "BookVI",
1935
+ "to": "Prop59"
1936
+ },
1937
+ {
1938
+ "from": "BookI",
1939
+ "to": "Prop60"
1940
+ },
1941
+ {
1942
+ "from": "BookV",
1943
+ "to": "Prop60"
1944
+ },
1945
+ {
1946
+ "from": "BookVI",
1947
+ "to": "Prop60"
1948
+ },
1949
+ {
1950
+ "from": "BookI",
1951
+ "to": "Prop61"
1952
+ },
1953
+ {
1954
+ "from": "BookV",
1955
+ "to": "Prop61"
1956
+ },
1957
+ {
1958
+ "from": "BookVI",
1959
+ "to": "Prop61"
1960
+ },
1961
+ {
1962
+ "from": "BookI",
1963
+ "to": "Prop62"
1964
+ },
1965
+ {
1966
+ "from": "BookV",
1967
+ "to": "Prop62"
1968
+ },
1969
+ {
1970
+ "from": "BookVI",
1971
+ "to": "Prop62"
1972
+ },
1973
+ {
1974
+ "from": "BookI",
1975
+ "to": "Prop63"
1976
+ },
1977
+ {
1978
+ "from": "BookV",
1979
+ "to": "Prop63"
1980
+ },
1981
+ {
1982
+ "from": "BookVI",
1983
+ "to": "Prop63"
1984
+ },
1985
+ {
1986
+ "from": "BookI",
1987
+ "to": "Prop64"
1988
+ },
1989
+ {
1990
+ "from": "BookV",
1991
+ "to": "Prop64"
1992
+ },
1993
+ {
1994
+ "from": "BookVI",
1995
+ "to": "Prop64"
1996
+ },
1997
+ {
1998
+ "from": "BookI",
1999
+ "to": "Prop65"
2000
+ },
2001
+ {
2002
+ "from": "BookV",
2003
+ "to": "Prop65"
2004
+ },
2005
+ {
2006
+ "from": "BookVI",
2007
+ "to": "Prop65"
2008
+ },
2009
+ {
2010
+ "from": "BookI",
2011
+ "to": "Prop66"
2012
+ },
2013
+ {
2014
+ "from": "BookV",
2015
+ "to": "Prop66"
2016
+ },
2017
+ {
2018
+ "from": "BookVI",
2019
+ "to": "Prop66"
2020
+ },
2021
+ {
2022
+ "from": "BookI",
2023
+ "to": "Prop67"
2024
+ },
2025
+ {
2026
+ "from": "BookV",
2027
+ "to": "Prop67"
2028
+ },
2029
+ {
2030
+ "from": "BookVI",
2031
+ "to": "Prop67"
2032
+ },
2033
+ {
2034
+ "from": "BookI",
2035
+ "to": "Prop68"
2036
+ },
2037
+ {
2038
+ "from": "BookV",
2039
+ "to": "Prop68"
2040
+ },
2041
+ {
2042
+ "from": "BookVI",
2043
+ "to": "Prop68"
2044
+ },
2045
+ {
2046
+ "from": "BookI",
2047
+ "to": "Prop69"
2048
+ },
2049
+ {
2050
+ "from": "BookV",
2051
+ "to": "Prop69"
2052
+ },
2053
+ {
2054
+ "from": "BookVI",
2055
+ "to": "Prop69"
2056
+ },
2057
+ {
2058
+ "from": "BookI",
2059
+ "to": "Prop70"
2060
+ },
2061
+ {
2062
+ "from": "BookV",
2063
+ "to": "Prop70"
2064
+ },
2065
+ {
2066
+ "from": "BookVI",
2067
+ "to": "Prop70"
2068
+ },
2069
+ {
2070
+ "from": "BookI",
2071
+ "to": "Prop71"
2072
+ },
2073
+ {
2074
+ "from": "BookV",
2075
+ "to": "Prop71"
2076
+ },
2077
+ {
2078
+ "from": "BookVI",
2079
+ "to": "Prop71"
2080
+ },
2081
+ {
2082
+ "from": "BookI",
2083
+ "to": "Prop72"
2084
+ },
2085
+ {
2086
+ "from": "BookV",
2087
+ "to": "Prop72"
2088
+ },
2089
+ {
2090
+ "from": "BookVI",
2091
+ "to": "Prop72"
2092
+ },
2093
+ {
2094
+ "from": "BookI",
2095
+ "to": "Prop73"
2096
+ },
2097
+ {
2098
+ "from": "BookV",
2099
+ "to": "Prop73"
2100
+ },
2101
+ {
2102
+ "from": "BookVI",
2103
+ "to": "Prop73"
2104
+ },
2105
+ {
2106
+ "from": "BookI",
2107
+ "to": "Prop74"
2108
+ },
2109
+ {
2110
+ "from": "BookV",
2111
+ "to": "Prop74"
2112
+ },
2113
+ {
2114
+ "from": "BookVI",
2115
+ "to": "Prop74"
2116
+ },
2117
+ {
2118
+ "from": "BookI",
2119
+ "to": "Prop75"
2120
+ },
2121
+ {
2122
+ "from": "BookV",
2123
+ "to": "Prop75"
2124
+ },
2125
+ {
2126
+ "from": "BookVI",
2127
+ "to": "Prop75"
2128
+ },
2129
+ {
2130
+ "from": "BookI",
2131
+ "to": "Prop76"
2132
+ },
2133
+ {
2134
+ "from": "BookV",
2135
+ "to": "Prop76"
2136
+ },
2137
+ {
2138
+ "from": "BookVI",
2139
+ "to": "Prop76"
2140
+ },
2141
+ {
2142
+ "from": "BookI",
2143
+ "to": "Prop77"
2144
+ },
2145
+ {
2146
+ "from": "BookV",
2147
+ "to": "Prop77"
2148
+ },
2149
+ {
2150
+ "from": "BookVI",
2151
+ "to": "Prop77"
2152
+ },
2153
+ {
2154
+ "from": "BookI",
2155
+ "to": "Prop78"
2156
+ },
2157
+ {
2158
+ "from": "BookV",
2159
+ "to": "Prop78"
2160
+ },
2161
+ {
2162
+ "from": "BookVI",
2163
+ "to": "Prop78"
2164
+ },
2165
+ {
2166
+ "from": "BookI",
2167
+ "to": "Prop79"
2168
+ },
2169
+ {
2170
+ "from": "BookV",
2171
+ "to": "Prop79"
2172
+ },
2173
+ {
2174
+ "from": "BookVI",
2175
+ "to": "Prop79"
2176
+ },
2177
+ {
2178
+ "from": "BookI",
2179
+ "to": "Prop80"
2180
+ },
2181
+ {
2182
+ "from": "BookV",
2183
+ "to": "Prop80"
2184
+ },
2185
+ {
2186
+ "from": "BookVI",
2187
+ "to": "Prop80"
2188
+ },
2189
+ {
2190
+ "from": "BookI",
2191
+ "to": "Prop81"
2192
+ },
2193
+ {
2194
+ "from": "BookV",
2195
+ "to": "Prop81"
2196
+ },
2197
+ {
2198
+ "from": "BookVI",
2199
+ "to": "Prop81"
2200
+ },
2201
+ {
2202
+ "from": "BookI",
2203
+ "to": "Prop82"
2204
+ },
2205
+ {
2206
+ "from": "BookV",
2207
+ "to": "Prop82"
2208
+ },
2209
+ {
2210
+ "from": "BookVI",
2211
+ "to": "Prop82"
2212
+ },
2213
+ {
2214
+ "from": "BookI",
2215
+ "to": "Prop83"
2216
+ },
2217
+ {
2218
+ "from": "BookV",
2219
+ "to": "Prop83"
2220
+ },
2221
+ {
2222
+ "from": "BookVI",
2223
+ "to": "Prop83"
2224
+ },
2225
+ {
2226
+ "from": "BookI",
2227
+ "to": "Prop84"
2228
+ },
2229
+ {
2230
+ "from": "BookV",
2231
+ "to": "Prop84"
2232
+ },
2233
+ {
2234
+ "from": "BookVI",
2235
+ "to": "Prop84"
2236
+ },
2237
+ {
2238
+ "from": "BookI",
2239
+ "to": "Prop85"
2240
+ },
2241
+ {
2242
+ "from": "BookV",
2243
+ "to": "Prop85"
2244
+ },
2245
+ {
2246
+ "from": "BookVI",
2247
+ "to": "Prop85"
2248
+ },
2249
+ {
2250
+ "from": "BookI",
2251
+ "to": "Prop86"
2252
+ },
2253
+ {
2254
+ "from": "BookV",
2255
+ "to": "Prop86"
2256
+ },
2257
+ {
2258
+ "from": "BookVI",
2259
+ "to": "Prop86"
2260
+ },
2261
+ {
2262
+ "from": "BookI",
2263
+ "to": "Prop87"
2264
+ },
2265
+ {
2266
+ "from": "BookV",
2267
+ "to": "Prop87"
2268
+ },
2269
+ {
2270
+ "from": "BookVI",
2271
+ "to": "Prop87"
2272
+ },
2273
+ {
2274
+ "from": "BookI",
2275
+ "to": "Prop88"
2276
+ },
2277
+ {
2278
+ "from": "BookV",
2279
+ "to": "Prop88"
2280
+ },
2281
+ {
2282
+ "from": "BookVI",
2283
+ "to": "Prop88"
2284
+ },
2285
+ {
2286
+ "from": "BookI",
2287
+ "to": "Prop89"
2288
+ },
2289
+ {
2290
+ "from": "BookV",
2291
+ "to": "Prop89"
2292
+ },
2293
+ {
2294
+ "from": "BookVI",
2295
+ "to": "Prop89"
2296
+ },
2297
+ {
2298
+ "from": "BookI",
2299
+ "to": "Prop90"
2300
+ },
2301
+ {
2302
+ "from": "BookV",
2303
+ "to": "Prop90"
2304
+ },
2305
+ {
2306
+ "from": "BookVI",
2307
+ "to": "Prop90"
2308
+ },
2309
+ {
2310
+ "from": "BookI",
2311
+ "to": "Prop91"
2312
+ },
2313
+ {
2314
+ "from": "BookV",
2315
+ "to": "Prop91"
2316
+ },
2317
+ {
2318
+ "from": "BookVI",
2319
+ "to": "Prop91"
2320
+ },
2321
+ {
2322
+ "from": "BookI",
2323
+ "to": "Prop92"
2324
+ },
2325
+ {
2326
+ "from": "BookV",
2327
+ "to": "Prop92"
2328
+ },
2329
+ {
2330
+ "from": "BookVI",
2331
+ "to": "Prop92"
2332
+ },
2333
+ {
2334
+ "from": "BookI",
2335
+ "to": "Prop93"
2336
+ },
2337
+ {
2338
+ "from": "BookV",
2339
+ "to": "Prop93"
2340
+ },
2341
+ {
2342
+ "from": "BookVI",
2343
+ "to": "Prop93"
2344
+ },
2345
+ {
2346
+ "from": "BookI",
2347
+ "to": "Prop94"
2348
+ },
2349
+ {
2350
+ "from": "BookV",
2351
+ "to": "Prop94"
2352
+ },
2353
+ {
2354
+ "from": "BookVI",
2355
+ "to": "Prop94"
2356
+ },
2357
+ {
2358
+ "from": "BookI",
2359
+ "to": "Prop95"
2360
+ },
2361
+ {
2362
+ "from": "BookV",
2363
+ "to": "Prop95"
2364
+ },
2365
+ {
2366
+ "from": "BookVI",
2367
+ "to": "Prop95"
2368
+ },
2369
+ {
2370
+ "from": "BookI",
2371
+ "to": "Prop96"
2372
+ },
2373
+ {
2374
+ "from": "BookV",
2375
+ "to": "Prop96"
2376
+ },
2377
+ {
2378
+ "from": "BookVI",
2379
+ "to": "Prop96"
2380
+ },
2381
+ {
2382
+ "from": "BookI",
2383
+ "to": "Prop97"
2384
+ },
2385
+ {
2386
+ "from": "BookV",
2387
+ "to": "Prop97"
2388
+ },
2389
+ {
2390
+ "from": "BookVI",
2391
+ "to": "Prop97"
2392
+ },
2393
+ {
2394
+ "from": "BookI",
2395
+ "to": "Prop98"
2396
+ },
2397
+ {
2398
+ "from": "BookV",
2399
+ "to": "Prop98"
2400
+ },
2401
+ {
2402
+ "from": "BookVI",
2403
+ "to": "Prop98"
2404
+ },
2405
+ {
2406
+ "from": "BookI",
2407
+ "to": "Prop99"
2408
+ },
2409
+ {
2410
+ "from": "BookV",
2411
+ "to": "Prop99"
2412
+ },
2413
+ {
2414
+ "from": "BookVI",
2415
+ "to": "Prop99"
2416
+ },
2417
+ {
2418
+ "from": "BookI",
2419
+ "to": "Prop100"
2420
+ },
2421
+ {
2422
+ "from": "BookV",
2423
+ "to": "Prop100"
2424
+ },
2425
+ {
2426
+ "from": "BookVI",
2427
+ "to": "Prop100"
2428
+ },
2429
+ {
2430
+ "from": "BookI",
2431
+ "to": "Prop101"
2432
+ },
2433
+ {
2434
+ "from": "BookV",
2435
+ "to": "Prop101"
2436
+ },
2437
+ {
2438
+ "from": "BookVI",
2439
+ "to": "Prop101"
2440
+ },
2441
+ {
2442
+ "from": "BookI",
2443
+ "to": "Prop102"
2444
+ },
2445
+ {
2446
+ "from": "BookV",
2447
+ "to": "Prop102"
2448
+ },
2449
+ {
2450
+ "from": "BookVI",
2451
+ "to": "Prop102"
2452
+ },
2453
+ {
2454
+ "from": "BookI",
2455
+ "to": "Prop103"
2456
+ },
2457
+ {
2458
+ "from": "BookV",
2459
+ "to": "Prop103"
2460
+ },
2461
+ {
2462
+ "from": "BookVI",
2463
+ "to": "Prop103"
2464
+ },
2465
+ {
2466
+ "from": "BookI",
2467
+ "to": "Prop104"
2468
+ },
2469
+ {
2470
+ "from": "BookV",
2471
+ "to": "Prop104"
2472
+ },
2473
+ {
2474
+ "from": "BookVI",
2475
+ "to": "Prop104"
2476
+ },
2477
+ {
2478
+ "from": "BookI",
2479
+ "to": "Prop105"
2480
+ },
2481
+ {
2482
+ "from": "BookV",
2483
+ "to": "Prop105"
2484
+ },
2485
+ {
2486
+ "from": "BookVI",
2487
+ "to": "Prop105"
2488
+ },
2489
+ {
2490
+ "from": "BookI",
2491
+ "to": "Prop106"
2492
+ },
2493
+ {
2494
+ "from": "BookV",
2495
+ "to": "Prop106"
2496
+ },
2497
+ {
2498
+ "from": "BookVI",
2499
+ "to": "Prop106"
2500
+ },
2501
+ {
2502
+ "from": "BookI",
2503
+ "to": "Prop107"
2504
+ },
2505
+ {
2506
+ "from": "BookV",
2507
+ "to": "Prop107"
2508
+ },
2509
+ {
2510
+ "from": "BookVI",
2511
+ "to": "Prop107"
2512
+ },
2513
+ {
2514
+ "from": "BookI",
2515
+ "to": "Prop108"
2516
+ },
2517
+ {
2518
+ "from": "BookV",
2519
+ "to": "Prop108"
2520
+ },
2521
+ {
2522
+ "from": "BookVI",
2523
+ "to": "Prop108"
2524
+ },
2525
+ {
2526
+ "from": "BookI",
2527
+ "to": "Prop109"
2528
+ },
2529
+ {
2530
+ "from": "BookV",
2531
+ "to": "Prop109"
2532
+ },
2533
+ {
2534
+ "from": "BookVI",
2535
+ "to": "Prop109"
2536
+ },
2537
+ {
2538
+ "from": "BookI",
2539
+ "to": "Prop110"
2540
+ },
2541
+ {
2542
+ "from": "BookV",
2543
+ "to": "Prop110"
2544
+ },
2545
+ {
2546
+ "from": "BookVI",
2547
+ "to": "Prop110"
2548
+ },
2549
+ {
2550
+ "from": "BookI",
2551
+ "to": "Prop111"
2552
+ },
2553
+ {
2554
+ "from": "BookV",
2555
+ "to": "Prop111"
2556
+ },
2557
+ {
2558
+ "from": "BookVI",
2559
+ "to": "Prop111"
2560
+ },
2561
+ {
2562
+ "from": "BookI",
2563
+ "to": "Prop112"
2564
+ },
2565
+ {
2566
+ "from": "BookV",
2567
+ "to": "Prop112"
2568
+ },
2569
+ {
2570
+ "from": "BookVI",
2571
+ "to": "Prop112"
2572
+ },
2573
+ {
2574
+ "from": "BookI",
2575
+ "to": "Prop113"
2576
+ },
2577
+ {
2578
+ "from": "BookV",
2579
+ "to": "Prop113"
2580
+ },
2581
+ {
2582
+ "from": "BookVI",
2583
+ "to": "Prop113"
2584
+ },
2585
+ {
2586
+ "from": "BookI",
2587
+ "to": "Prop114"
2588
+ },
2589
+ {
2590
+ "from": "BookV",
2591
+ "to": "Prop114"
2592
+ },
2593
+ {
2594
+ "from": "BookVI",
2595
+ "to": "Prop114"
2596
+ },
2597
+ {
2598
+ "from": "BookI",
2599
+ "to": "Prop115"
2600
+ },
2601
+ {
2602
+ "from": "BookV",
2603
+ "to": "Prop115"
2604
+ },
2605
+ {
2606
+ "from": "BookVI",
2607
+ "to": "Prop115"
2608
+ }
2609
+ ],
2610
+ "colorScheme": {
2611
+ "foundation": {
2612
+ "fill": "#95a5a6",
2613
+ "stroke": "#7f8c8d"
2614
+ },
2615
+ "proposition": {
2616
+ "fill": "#1abc9c",
2617
+ "stroke": "#16a085"
2618
+ }
2619
+ }
2620
+ }
data/euclid-elements-book-xi.json ADDED
@@ -0,0 +1,783 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-xi",
5
+ "name": "Euclid's Elements, Book XI",
6
+ "subject": "solid_geometry",
7
+ "variant": "classical",
8
+ "description": "Solid geometry: planes, perpendiculars, parallelepipeds, prisms. 28 definitions, 39 propositions. Depends on Books I and VI. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 11,
11
+ "definitions": 28,
12
+ "propositions": 39,
13
+ "foundationTypes": [
14
+ "foundation"
15
+ ]
16
+ }
17
+ },
18
+ "metadata": {
19
+ "created": "2026-03-18",
20
+ "lastUpdated": "2026-03-18",
21
+ "version": "1.0.0",
22
+ "license": "CC BY 4.0",
23
+ "authors": [
24
+ "Welz, G."
25
+ ],
26
+ "methodology": "Programming Framework",
27
+ "citation": "Welz, G. (2026). Euclid's Elements Book XI Dependency Graph. Programming Framework.",
28
+ "keywords": [
29
+ "Euclid",
30
+ "Elements",
31
+ "Book XI",
32
+ "solid geometry",
33
+ "plane",
34
+ "parallelepiped",
35
+ "prism"
36
+ ]
37
+ },
38
+ "sources": [
39
+ {
40
+ "id": "joyce",
41
+ "type": "digital",
42
+ "authors": "Joyce, David E.",
43
+ "title": "Euclid's Elements, Book XI",
44
+ "year": "1996",
45
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookXI/bookXI.html",
46
+ "notes": "Clark University"
47
+ }
48
+ ],
49
+ "nodes": [
50
+ {
51
+ "id": "BookI",
52
+ "type": "foundation",
53
+ "label": "Book I — Plane geometry",
54
+ "shortLabel": "Book I",
55
+ "short": "Foundation",
56
+ "book": 1,
57
+ "colorClass": "foundation"
58
+ },
59
+ {
60
+ "id": "BookVI",
61
+ "type": "foundation",
62
+ "label": "Book VI — Similar figures",
63
+ "shortLabel": "Book VI",
64
+ "short": "Foundation",
65
+ "book": 6,
66
+ "colorClass": "foundation"
67
+ },
68
+ {
69
+ "id": "Prop1",
70
+ "type": "proposition",
71
+ "label": "A part of a straight line cannot be in one plane and part in another elevated",
72
+ "shortLabel": "Prop. XI.1",
73
+ "short": "Line part in plane",
74
+ "book": 11,
75
+ "number": 1,
76
+ "colorClass": "proposition"
77
+ },
78
+ {
79
+ "id": "Prop2",
80
+ "type": "proposition",
81
+ "label": "If two straight lines cut one another, they lie in one plane; every triangle in one plane",
82
+ "shortLabel": "Prop. XI.2",
83
+ "short": "Two lines cut: one plane",
84
+ "book": 11,
85
+ "number": 2,
86
+ "colorClass": "proposition"
87
+ },
88
+ {
89
+ "id": "Prop3",
90
+ "type": "proposition",
91
+ "label": "If two planes cut one another, their intersection is a straight line",
92
+ "shortLabel": "Prop. XI.3",
93
+ "short": "Planes cut: line",
94
+ "book": 11,
95
+ "number": 3,
96
+ "colorClass": "proposition"
97
+ },
98
+ {
99
+ "id": "Prop4",
100
+ "type": "proposition",
101
+ "label": "If line at right angles to two lines cutting at point, also perpendicular to plane through them",
102
+ "shortLabel": "Prop. XI.4",
103
+ "short": "Line perpendicular to plane",
104
+ "book": 11,
105
+ "number": 4,
106
+ "colorClass": "proposition"
107
+ },
108
+ {
109
+ "id": "Prop5",
110
+ "type": "proposition",
111
+ "label": "If line at right angles to three lines meeting at point, the three lie in one plane",
112
+ "shortLabel": "Prop. XI.5",
113
+ "short": "Three lines from point",
114
+ "book": 11,
115
+ "number": 5,
116
+ "colorClass": "proposition"
117
+ },
118
+ {
119
+ "id": "Prop6",
120
+ "type": "proposition",
121
+ "label": "If two lines at right angles to same plane, they are parallel",
122
+ "shortLabel": "Prop. XI.6",
123
+ "short": "Perpendicular to same plane: parallel",
124
+ "book": 11,
125
+ "number": 6,
126
+ "colorClass": "proposition"
127
+ },
128
+ {
129
+ "id": "Prop7",
130
+ "type": "proposition",
131
+ "label": "If two lines parallel, line joining points on each is in same plane",
132
+ "shortLabel": "Prop. XI.7",
133
+ "short": "Parallel lines: join in plane",
134
+ "book": 11,
135
+ "number": 7,
136
+ "colorClass": "proposition"
137
+ },
138
+ {
139
+ "id": "Prop8",
140
+ "type": "proposition",
141
+ "label": "If two lines parallel, one perpendicular to plane, so is the other",
142
+ "shortLabel": "Prop. XI.8",
143
+ "short": "Parallel: one perpendicular",
144
+ "book": 11,
145
+ "number": 8,
146
+ "colorClass": "proposition"
147
+ },
148
+ {
149
+ "id": "Prop9",
150
+ "type": "proposition",
151
+ "label": "Lines parallel to same line but not in same plane are parallel to each other",
152
+ "shortLabel": "Prop. XI.9",
153
+ "short": "Parallel to same: parallel",
154
+ "book": 11,
155
+ "number": 9,
156
+ "colorClass": "proposition"
157
+ },
158
+ {
159
+ "id": "Prop10",
160
+ "type": "proposition",
161
+ "label": "Two lines meeting parallel to two meeting not in same plane: contain equal angles",
162
+ "shortLabel": "Prop. XI.10",
163
+ "short": "Skew lines: equal angles",
164
+ "book": 11,
165
+ "number": 10,
166
+ "colorClass": "proposition"
167
+ },
168
+ {
169
+ "id": "Prop11",
170
+ "type": "proposition",
171
+ "label": "To draw line perpendicular to given plane from given elevated point",
172
+ "shortLabel": "Prop. XI.11",
173
+ "short": "Perpendicular from point to plane",
174
+ "book": 11,
175
+ "number": 11,
176
+ "colorClass": "proposition"
177
+ },
178
+ {
179
+ "id": "Prop12",
180
+ "type": "proposition",
181
+ "label": "To set up line at right angles to plane from given point in it",
182
+ "shortLabel": "Prop. XI.12",
183
+ "short": "Perpendicular from point in plane",
184
+ "book": 11,
185
+ "number": 12,
186
+ "colorClass": "proposition"
187
+ },
188
+ {
189
+ "id": "Prop13",
190
+ "type": "proposition",
191
+ "label": "From same point two lines cannot be perpendicular to same plane on same side",
192
+ "shortLabel": "Prop. XI.13",
193
+ "short": "One perpendicular only",
194
+ "book": 11,
195
+ "number": 13,
196
+ "colorClass": "proposition"
197
+ },
198
+ {
199
+ "id": "Prop14",
200
+ "type": "proposition",
201
+ "label": "Planes to which same line is perpendicular are parallel",
202
+ "shortLabel": "Prop. XI.14",
203
+ "short": "Planes perpendicular to line: parallel",
204
+ "book": 11,
205
+ "number": 14,
206
+ "colorClass": "proposition"
207
+ },
208
+ {
209
+ "id": "Prop15",
210
+ "type": "proposition",
211
+ "label": "Two lines meeting parallel to two meeting not in same plane: planes through them parallel",
212
+ "shortLabel": "Prop. XI.15",
213
+ "short": "Skew lines: planes parallel",
214
+ "book": 11,
215
+ "number": 15,
216
+ "colorClass": "proposition"
217
+ },
218
+ {
219
+ "id": "Prop16",
220
+ "type": "proposition",
221
+ "label": "If two parallel planes cut by any plane, intersections are parallel",
222
+ "shortLabel": "Prop. XI.16",
223
+ "short": "Parallel planes cut: parallel",
224
+ "book": 11,
225
+ "number": 16,
226
+ "colorClass": "proposition"
227
+ },
228
+ {
229
+ "id": "Prop17",
230
+ "type": "proposition",
231
+ "label": "If two lines cut by parallel planes, they are cut in same ratios",
232
+ "shortLabel": "Prop. XI.17",
233
+ "short": "Parallel planes: same ratio",
234
+ "book": 11,
235
+ "number": 17,
236
+ "colorClass": "proposition"
237
+ },
238
+ {
239
+ "id": "Prop18",
240
+ "type": "proposition",
241
+ "label": "If line perpendicular to plane, all planes through it perpendicular to that plane",
242
+ "shortLabel": "Prop. XI.18",
243
+ "short": "Line perpendicular: planes through it",
244
+ "book": 11,
245
+ "number": 18,
246
+ "colorClass": "proposition"
247
+ },
248
+ {
249
+ "id": "Prop19",
250
+ "type": "proposition",
251
+ "label": "If two planes cutting one another perpendicular to plane, intersection perpendicular",
252
+ "shortLabel": "Prop. XI.19",
253
+ "short": "Planes perpendicular: intersection",
254
+ "book": 11,
255
+ "number": 19,
256
+ "colorClass": "proposition"
257
+ },
258
+ {
259
+ "id": "Prop20",
260
+ "type": "proposition",
261
+ "label": "Solid angle by three plane angles: sum of any two greater than third",
262
+ "shortLabel": "Prop. XI.20",
263
+ "short": "Solid angle: plane angles",
264
+ "book": 11,
265
+ "number": 20,
266
+ "colorClass": "proposition"
267
+ },
268
+ {
269
+ "id": "Prop21",
270
+ "type": "proposition",
271
+ "label": "Any solid angle contained by plane angles summing to less than four right angles",
272
+ "shortLabel": "Prop. XI.21",
273
+ "short": "Solid angle: less than four right",
274
+ "book": 11,
275
+ "number": 21,
276
+ "colorClass": "proposition"
277
+ },
278
+ {
279
+ "id": "Prop22",
280
+ "type": "proposition",
281
+ "label": "Three plane angles with sum of any two greater than third, equal sides: construct triangle",
282
+ "shortLabel": "Prop. XI.22",
283
+ "short": "Three plane angles: construct triangle",
284
+ "book": 11,
285
+ "number": 22,
286
+ "colorClass": "proposition"
287
+ },
288
+ {
289
+ "id": "Prop23",
290
+ "type": "proposition",
291
+ "label": "To construct solid angle from three plane angles (sum of any two greater than third)",
292
+ "shortLabel": "Prop. XI.23",
293
+ "short": "Construct solid angle",
294
+ "book": 11,
295
+ "number": 23,
296
+ "colorClass": "proposition"
297
+ },
298
+ {
299
+ "id": "Prop24",
300
+ "type": "proposition",
301
+ "label": "If solid contained by parallel planes, opposite planes equal and parallelogrammic",
302
+ "shortLabel": "Prop. XI.24",
303
+ "short": "Solid by parallel planes",
304
+ "book": 11,
305
+ "number": 24,
306
+ "colorClass": "proposition"
307
+ },
308
+ {
309
+ "id": "Prop25",
310
+ "type": "proposition",
311
+ "label": "Parallelepiped cut by plane parallel to opposite: base to base as solid to solid",
312
+ "shortLabel": "Prop. XI.25",
313
+ "short": "Parallelepiped cut: base ratio",
314
+ "book": 11,
315
+ "number": 25,
316
+ "colorClass": "proposition"
317
+ },
318
+ {
319
+ "id": "Prop26",
320
+ "type": "proposition",
321
+ "label": "To construct solid angle equal to given on given line at given point",
322
+ "shortLabel": "Prop. XI.26",
323
+ "short": "Construct equal solid angle",
324
+ "book": 11,
325
+ "number": 26,
326
+ "colorClass": "proposition"
327
+ },
328
+ {
329
+ "id": "Prop27",
330
+ "type": "proposition",
331
+ "label": "To describe parallelepiped similar to given on given straight line",
332
+ "shortLabel": "Prop. XI.27",
333
+ "short": "Similar parallelepiped on line",
334
+ "book": 11,
335
+ "number": 27,
336
+ "colorClass": "proposition"
337
+ },
338
+ {
339
+ "id": "Prop28",
340
+ "type": "proposition",
341
+ "label": "Parallelepiped cut by plane through diagonals of opposite planes: bisected",
342
+ "shortLabel": "Prop. XI.28",
343
+ "short": "Parallelepiped: diagonal plane bisects",
344
+ "book": 11,
345
+ "number": 28,
346
+ "colorClass": "proposition"
347
+ },
348
+ {
349
+ "id": "Prop29",
350
+ "type": "proposition",
351
+ "label": "Parallelepipeds same base, height, ends on same lines: equal",
352
+ "shortLabel": "Prop. XI.29",
353
+ "short": "Same base, height, same lines: equal",
354
+ "book": 11,
355
+ "number": 29,
356
+ "colorClass": "proposition"
357
+ },
358
+ {
359
+ "id": "Prop30",
360
+ "type": "proposition",
361
+ "label": "Parallelepipeds same base, height, ends not on same lines: equal",
362
+ "shortLabel": "Prop. XI.30",
363
+ "short": "Same base, height, different lines: equal",
364
+ "book": 11,
365
+ "number": 30,
366
+ "colorClass": "proposition"
367
+ },
368
+ {
369
+ "id": "Prop31",
370
+ "type": "proposition",
371
+ "label": "Parallelepipeds on equal bases, same height: equal",
372
+ "shortLabel": "Prop. XI.31",
373
+ "short": "Equal bases, same height: equal",
374
+ "book": 11,
375
+ "number": 31,
376
+ "colorClass": "proposition"
377
+ },
378
+ {
379
+ "id": "Prop32",
380
+ "type": "proposition",
381
+ "label": "Parallelepipeds same height: to one another as bases",
382
+ "shortLabel": "Prop. XI.32",
383
+ "short": "Same height: as bases",
384
+ "book": 11,
385
+ "number": 32,
386
+ "colorClass": "proposition"
387
+ },
388
+ {
389
+ "id": "Prop33",
390
+ "type": "proposition",
391
+ "label": "Similar parallelepipeds: to one another in triplicate ratio of corresponding sides",
392
+ "shortLabel": "Prop. XI.33",
393
+ "short": "Similar: triplicate ratio",
394
+ "book": 11,
395
+ "number": 33,
396
+ "colorClass": "proposition"
397
+ },
398
+ {
399
+ "id": "Prop34",
400
+ "type": "proposition",
401
+ "label": "Equal parallelepipeds: bases reciprocally proportional to heights",
402
+ "shortLabel": "Prop. XI.34",
403
+ "short": "Equal: bases reciprocally proportional",
404
+ "book": 11,
405
+ "number": 34,
406
+ "colorClass": "proposition"
407
+ },
408
+ {
409
+ "id": "Prop35",
410
+ "type": "proposition",
411
+ "label": "Equal plane angles, elevated lines with equal angles: perpendiculars, joins",
412
+ "shortLabel": "Prop. XI.35",
413
+ "short": "Equal plane angles: elevated lines",
414
+ "book": 11,
415
+ "number": 35,
416
+ "colorClass": "proposition"
417
+ },
418
+ {
419
+ "id": "Prop36",
420
+ "type": "proposition",
421
+ "label": "Three proportional lines: parallelepiped from three equals that on mean equilateral",
422
+ "shortLabel": "Prop. XI.36",
423
+ "short": "Three proportional: parallelepiped",
424
+ "book": 11,
425
+ "number": 36,
426
+ "colorClass": "proposition"
427
+ },
428
+ {
429
+ "id": "Prop37",
430
+ "type": "proposition",
431
+ "label": "Four proportional: similar parallelepipeds proportional; converse",
432
+ "shortLabel": "Prop. XI.37",
433
+ "short": "Four proportional: parallelepipeds",
434
+ "book": 11,
435
+ "number": 37,
436
+ "colorClass": "proposition"
437
+ },
438
+ {
439
+ "id": "Prop38",
440
+ "type": "proposition",
441
+ "label": "Cube opposite sides bisected, planes through: intersection and diameter bisect each other",
442
+ "shortLabel": "Prop. XI.38",
443
+ "short": "Cube: bisected by planes",
444
+ "book": 11,
445
+ "number": 38,
446
+ "colorClass": "proposition"
447
+ },
448
+ {
449
+ "id": "Prop39",
450
+ "type": "proposition",
451
+ "label": "Two prisms equal height, parallelogram and triangle bases, parallelogram double: equal",
452
+ "shortLabel": "Prop. XI.39",
453
+ "short": "Prisms: parallelogram, triangle",
454
+ "book": 11,
455
+ "number": 39,
456
+ "colorClass": "proposition"
457
+ }
458
+ ],
459
+ "edges": [
460
+ {
461
+ "from": "BookI",
462
+ "to": "Prop1"
463
+ },
464
+ {
465
+ "from": "BookVI",
466
+ "to": "Prop1"
467
+ },
468
+ {
469
+ "from": "BookI",
470
+ "to": "Prop2"
471
+ },
472
+ {
473
+ "from": "BookVI",
474
+ "to": "Prop2"
475
+ },
476
+ {
477
+ "from": "BookI",
478
+ "to": "Prop3"
479
+ },
480
+ {
481
+ "from": "BookVI",
482
+ "to": "Prop3"
483
+ },
484
+ {
485
+ "from": "BookI",
486
+ "to": "Prop4"
487
+ },
488
+ {
489
+ "from": "BookVI",
490
+ "to": "Prop4"
491
+ },
492
+ {
493
+ "from": "BookI",
494
+ "to": "Prop5"
495
+ },
496
+ {
497
+ "from": "BookVI",
498
+ "to": "Prop5"
499
+ },
500
+ {
501
+ "from": "BookI",
502
+ "to": "Prop6"
503
+ },
504
+ {
505
+ "from": "BookVI",
506
+ "to": "Prop6"
507
+ },
508
+ {
509
+ "from": "BookI",
510
+ "to": "Prop7"
511
+ },
512
+ {
513
+ "from": "BookVI",
514
+ "to": "Prop7"
515
+ },
516
+ {
517
+ "from": "BookI",
518
+ "to": "Prop8"
519
+ },
520
+ {
521
+ "from": "BookVI",
522
+ "to": "Prop8"
523
+ },
524
+ {
525
+ "from": "BookI",
526
+ "to": "Prop9"
527
+ },
528
+ {
529
+ "from": "BookVI",
530
+ "to": "Prop9"
531
+ },
532
+ {
533
+ "from": "BookI",
534
+ "to": "Prop10"
535
+ },
536
+ {
537
+ "from": "BookVI",
538
+ "to": "Prop10"
539
+ },
540
+ {
541
+ "from": "BookI",
542
+ "to": "Prop11"
543
+ },
544
+ {
545
+ "from": "BookVI",
546
+ "to": "Prop11"
547
+ },
548
+ {
549
+ "from": "BookI",
550
+ "to": "Prop12"
551
+ },
552
+ {
553
+ "from": "BookVI",
554
+ "to": "Prop12"
555
+ },
556
+ {
557
+ "from": "BookI",
558
+ "to": "Prop13"
559
+ },
560
+ {
561
+ "from": "BookVI",
562
+ "to": "Prop13"
563
+ },
564
+ {
565
+ "from": "BookI",
566
+ "to": "Prop14"
567
+ },
568
+ {
569
+ "from": "BookVI",
570
+ "to": "Prop14"
571
+ },
572
+ {
573
+ "from": "BookI",
574
+ "to": "Prop15"
575
+ },
576
+ {
577
+ "from": "BookVI",
578
+ "to": "Prop15"
579
+ },
580
+ {
581
+ "from": "BookI",
582
+ "to": "Prop16"
583
+ },
584
+ {
585
+ "from": "BookVI",
586
+ "to": "Prop16"
587
+ },
588
+ {
589
+ "from": "BookI",
590
+ "to": "Prop17"
591
+ },
592
+ {
593
+ "from": "BookVI",
594
+ "to": "Prop17"
595
+ },
596
+ {
597
+ "from": "BookI",
598
+ "to": "Prop18"
599
+ },
600
+ {
601
+ "from": "BookVI",
602
+ "to": "Prop18"
603
+ },
604
+ {
605
+ "from": "BookI",
606
+ "to": "Prop19"
607
+ },
608
+ {
609
+ "from": "BookVI",
610
+ "to": "Prop19"
611
+ },
612
+ {
613
+ "from": "BookI",
614
+ "to": "Prop20"
615
+ },
616
+ {
617
+ "from": "BookVI",
618
+ "to": "Prop20"
619
+ },
620
+ {
621
+ "from": "BookI",
622
+ "to": "Prop21"
623
+ },
624
+ {
625
+ "from": "BookVI",
626
+ "to": "Prop21"
627
+ },
628
+ {
629
+ "from": "BookI",
630
+ "to": "Prop22"
631
+ },
632
+ {
633
+ "from": "BookVI",
634
+ "to": "Prop22"
635
+ },
636
+ {
637
+ "from": "BookI",
638
+ "to": "Prop23"
639
+ },
640
+ {
641
+ "from": "BookVI",
642
+ "to": "Prop23"
643
+ },
644
+ {
645
+ "from": "BookI",
646
+ "to": "Prop24"
647
+ },
648
+ {
649
+ "from": "BookVI",
650
+ "to": "Prop24"
651
+ },
652
+ {
653
+ "from": "BookI",
654
+ "to": "Prop25"
655
+ },
656
+ {
657
+ "from": "BookVI",
658
+ "to": "Prop25"
659
+ },
660
+ {
661
+ "from": "BookI",
662
+ "to": "Prop26"
663
+ },
664
+ {
665
+ "from": "BookVI",
666
+ "to": "Prop26"
667
+ },
668
+ {
669
+ "from": "BookI",
670
+ "to": "Prop27"
671
+ },
672
+ {
673
+ "from": "BookVI",
674
+ "to": "Prop27"
675
+ },
676
+ {
677
+ "from": "BookI",
678
+ "to": "Prop28"
679
+ },
680
+ {
681
+ "from": "BookVI",
682
+ "to": "Prop28"
683
+ },
684
+ {
685
+ "from": "BookI",
686
+ "to": "Prop29"
687
+ },
688
+ {
689
+ "from": "BookVI",
690
+ "to": "Prop29"
691
+ },
692
+ {
693
+ "from": "BookI",
694
+ "to": "Prop30"
695
+ },
696
+ {
697
+ "from": "BookVI",
698
+ "to": "Prop30"
699
+ },
700
+ {
701
+ "from": "BookI",
702
+ "to": "Prop31"
703
+ },
704
+ {
705
+ "from": "BookVI",
706
+ "to": "Prop31"
707
+ },
708
+ {
709
+ "from": "BookI",
710
+ "to": "Prop32"
711
+ },
712
+ {
713
+ "from": "BookVI",
714
+ "to": "Prop32"
715
+ },
716
+ {
717
+ "from": "BookI",
718
+ "to": "Prop33"
719
+ },
720
+ {
721
+ "from": "BookVI",
722
+ "to": "Prop33"
723
+ },
724
+ {
725
+ "from": "BookI",
726
+ "to": "Prop34"
727
+ },
728
+ {
729
+ "from": "BookVI",
730
+ "to": "Prop34"
731
+ },
732
+ {
733
+ "from": "BookI",
734
+ "to": "Prop35"
735
+ },
736
+ {
737
+ "from": "BookVI",
738
+ "to": "Prop35"
739
+ },
740
+ {
741
+ "from": "BookI",
742
+ "to": "Prop36"
743
+ },
744
+ {
745
+ "from": "BookVI",
746
+ "to": "Prop36"
747
+ },
748
+ {
749
+ "from": "BookI",
750
+ "to": "Prop37"
751
+ },
752
+ {
753
+ "from": "BookVI",
754
+ "to": "Prop37"
755
+ },
756
+ {
757
+ "from": "BookI",
758
+ "to": "Prop38"
759
+ },
760
+ {
761
+ "from": "BookVI",
762
+ "to": "Prop38"
763
+ },
764
+ {
765
+ "from": "BookI",
766
+ "to": "Prop39"
767
+ },
768
+ {
769
+ "from": "BookVI",
770
+ "to": "Prop39"
771
+ }
772
+ ],
773
+ "colorScheme": {
774
+ "foundation": {
775
+ "fill": "#95a5a6",
776
+ "stroke": "#7f8c8d"
777
+ },
778
+ "proposition": {
779
+ "fill": "#1abc9c",
780
+ "stroke": "#16a085"
781
+ }
782
+ }
783
+ }
data/euclid-elements-book-xii.json ADDED
@@ -0,0 +1,567 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-xii",
5
+ "name": "Euclid's Elements, Book XII",
6
+ "subject": "measurement",
7
+ "variant": "classical",
8
+ "description": "Measurement of figures: circles, pyramids, cones, cylinders, spheres. 18 propositions. Depends on Books I, V, VI, XI. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 12,
11
+ "propositions": 18,
12
+ "foundationTypes": [
13
+ "foundation"
14
+ ]
15
+ }
16
+ },
17
+ "metadata": {
18
+ "created": "2026-03-18",
19
+ "lastUpdated": "2026-03-18",
20
+ "version": "1.0.0",
21
+ "license": "CC BY 4.0",
22
+ "authors": [
23
+ "Welz, G."
24
+ ],
25
+ "methodology": "Programming Framework",
26
+ "citation": "Welz, G. (2026). Euclid's Elements Book XII Dependency Graph. Programming Framework.",
27
+ "keywords": [
28
+ "Euclid",
29
+ "Elements",
30
+ "Book XII",
31
+ "measurement",
32
+ "pyramid",
33
+ "cone",
34
+ "cylinder",
35
+ "sphere"
36
+ ]
37
+ },
38
+ "sources": [
39
+ {
40
+ "id": "joyce",
41
+ "type": "digital",
42
+ "authors": "Joyce, David E.",
43
+ "title": "Euclid's Elements, Book XII",
44
+ "year": "1996",
45
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookXII/bookXII.html",
46
+ "notes": "Clark University"
47
+ }
48
+ ],
49
+ "nodes": [
50
+ {
51
+ "id": "BookI",
52
+ "type": "foundation",
53
+ "label": "Book I — Plane geometry",
54
+ "shortLabel": "Book I",
55
+ "short": "Foundation",
56
+ "book": 1,
57
+ "colorClass": "foundation"
58
+ },
59
+ {
60
+ "id": "BookV",
61
+ "type": "foundation",
62
+ "label": "Book V — Proportions",
63
+ "shortLabel": "Book V",
64
+ "short": "Foundation",
65
+ "book": 5,
66
+ "colorClass": "foundation"
67
+ },
68
+ {
69
+ "id": "BookVI",
70
+ "type": "foundation",
71
+ "label": "Book VI — Similar figures",
72
+ "shortLabel": "Book VI",
73
+ "short": "Foundation",
74
+ "book": 6,
75
+ "colorClass": "foundation"
76
+ },
77
+ {
78
+ "id": "BookXI",
79
+ "type": "foundation",
80
+ "label": "Book XI — Solid geometry",
81
+ "shortLabel": "Book XI",
82
+ "short": "Foundation",
83
+ "book": 11,
84
+ "colorClass": "foundation"
85
+ },
86
+ {
87
+ "id": "Prop1",
88
+ "type": "proposition",
89
+ "label": "Similar polygons in circles: to one another as squares on diameters",
90
+ "shortLabel": "Prop. XII.1",
91
+ "short": "Similar polygons: as squares on diameters",
92
+ "book": 12,
93
+ "number": 1,
94
+ "colorClass": "proposition"
95
+ },
96
+ {
97
+ "id": "Prop2",
98
+ "type": "proposition",
99
+ "label": "Circles are to one another as the squares on their diameters",
100
+ "shortLabel": "Prop. XII.2",
101
+ "short": "Circles: as squares on diameters",
102
+ "book": 12,
103
+ "number": 2,
104
+ "colorClass": "proposition"
105
+ },
106
+ {
107
+ "id": "Prop3",
108
+ "type": "proposition",
109
+ "label": "Pyramid with triangular base: divided into two pyramids, two prisms; prisms greater than half",
110
+ "shortLabel": "Prop. XII.3",
111
+ "short": "Pyramid divided",
112
+ "book": 12,
113
+ "number": 3,
114
+ "colorClass": "proposition"
115
+ },
116
+ {
117
+ "id": "Prop4",
118
+ "type": "proposition",
119
+ "label": "Two pyramids same height, triangular bases, divided: base to base as all prisms",
120
+ "shortLabel": "Prop. XII.4",
121
+ "short": "Pyramids: base as prisms",
122
+ "book": 12,
123
+ "number": 4,
124
+ "colorClass": "proposition"
125
+ },
126
+ {
127
+ "id": "Prop5",
128
+ "type": "proposition",
129
+ "label": "Pyramids same height, triangular bases: to one another as bases",
130
+ "shortLabel": "Prop. XII.5",
131
+ "short": "Pyramids: as bases",
132
+ "book": 12,
133
+ "number": 5,
134
+ "colorClass": "proposition"
135
+ },
136
+ {
137
+ "id": "Prop6",
138
+ "type": "proposition",
139
+ "label": "Pyramids same height, polygonal bases: to one another as bases",
140
+ "shortLabel": "Prop. XII.6",
141
+ "short": "Pyramids polygonal: as bases",
142
+ "book": 12,
143
+ "number": 6,
144
+ "colorClass": "proposition"
145
+ },
146
+ {
147
+ "id": "Prop7",
148
+ "type": "proposition",
149
+ "label": "Prism with triangular base: divided into three equal pyramids",
150
+ "shortLabel": "Prop. XII.7",
151
+ "short": "Prism into three pyramids",
152
+ "book": 12,
153
+ "number": 7,
154
+ "colorClass": "proposition"
155
+ },
156
+ {
157
+ "id": "Prop8",
158
+ "type": "proposition",
159
+ "label": "Similar pyramids triangular bases: in triplicate ratio of corresponding sides",
160
+ "shortLabel": "Prop. XII.8",
161
+ "short": "Similar pyramids: triplicate ratio",
162
+ "book": 12,
163
+ "number": 8,
164
+ "colorClass": "proposition"
165
+ },
166
+ {
167
+ "id": "Prop9",
168
+ "type": "proposition",
169
+ "label": "Equal pyramids triangular bases: bases reciprocally proportional to heights",
170
+ "shortLabel": "Prop. XII.9",
171
+ "short": "Equal pyramids: bases reciprocally proportional",
172
+ "book": 12,
173
+ "number": 9,
174
+ "colorClass": "proposition"
175
+ },
176
+ {
177
+ "id": "Prop10",
178
+ "type": "proposition",
179
+ "label": "Any cone is third part of cylinder same base and equal height",
180
+ "shortLabel": "Prop. XII.10",
181
+ "short": "Cone third of cylinder",
182
+ "book": 12,
183
+ "number": 10,
184
+ "colorClass": "proposition"
185
+ },
186
+ {
187
+ "id": "Prop11",
188
+ "type": "proposition",
189
+ "label": "Cones and cylinders same height: to one another as bases",
190
+ "shortLabel": "Prop. XII.11",
191
+ "short": "Cones, cylinders: as bases",
192
+ "book": 12,
193
+ "number": 11,
194
+ "colorClass": "proposition"
195
+ },
196
+ {
197
+ "id": "Prop12",
198
+ "type": "proposition",
199
+ "label": "Similar cones and cylinders: in triplicate ratio of diameters of bases",
200
+ "shortLabel": "Prop. XII.12",
201
+ "short": "Similar cones, cylinders: triplicate",
202
+ "book": 12,
203
+ "number": 12,
204
+ "colorClass": "proposition"
205
+ },
206
+ {
207
+ "id": "Prop13",
208
+ "type": "proposition",
209
+ "label": "Cylinder cut by plane parallel to opposite: cylinder to cylinder as axis to axis",
210
+ "shortLabel": "Prop. XII.13",
211
+ "short": "Cylinder cut: as axes",
212
+ "book": 12,
213
+ "number": 13,
214
+ "colorClass": "proposition"
215
+ },
216
+ {
217
+ "id": "Prop14",
218
+ "type": "proposition",
219
+ "label": "Cones and cylinders on equal bases: to one another as heights",
220
+ "shortLabel": "Prop. XII.14",
221
+ "short": "Cones, cylinders equal bases: as heights",
222
+ "book": 12,
223
+ "number": 14,
224
+ "colorClass": "proposition"
225
+ },
226
+ {
227
+ "id": "Prop15",
228
+ "type": "proposition",
229
+ "label": "Equal cones and cylinders: bases reciprocally proportional to heights",
230
+ "shortLabel": "Prop. XII.15",
231
+ "short": "Equal cones, cylinders: reciprocally proportional",
232
+ "book": 12,
233
+ "number": 15,
234
+ "colorClass": "proposition"
235
+ },
236
+ {
237
+ "id": "Prop16",
238
+ "type": "proposition",
239
+ "label": "Given two circles same center: inscribe in greater equilateral polygon even sides not touching lesser",
240
+ "shortLabel": "Prop. XII.16",
241
+ "short": "Inscribe polygon in greater circle",
242
+ "book": 12,
243
+ "number": 16,
244
+ "colorClass": "proposition"
245
+ },
246
+ {
247
+ "id": "Prop17",
248
+ "type": "proposition",
249
+ "label": "Given two spheres same center: inscribe in greater polyhedral solid not touching lesser",
250
+ "shortLabel": "Prop. XII.17",
251
+ "short": "Inscribe polyhedron in greater sphere",
252
+ "book": 12,
253
+ "number": 17,
254
+ "colorClass": "proposition"
255
+ },
256
+ {
257
+ "id": "Prop18",
258
+ "type": "proposition",
259
+ "label": "Spheres are to one another in triplicate ratio of their diameters",
260
+ "shortLabel": "Prop. XII.18",
261
+ "short": "Spheres: triplicate ratio",
262
+ "book": 12,
263
+ "number": 18,
264
+ "colorClass": "proposition"
265
+ }
266
+ ],
267
+ "edges": [
268
+ {
269
+ "from": "BookI",
270
+ "to": "Prop1"
271
+ },
272
+ {
273
+ "from": "BookV",
274
+ "to": "Prop1"
275
+ },
276
+ {
277
+ "from": "BookVI",
278
+ "to": "Prop1"
279
+ },
280
+ {
281
+ "from": "BookXI",
282
+ "to": "Prop1"
283
+ },
284
+ {
285
+ "from": "BookI",
286
+ "to": "Prop2"
287
+ },
288
+ {
289
+ "from": "BookV",
290
+ "to": "Prop2"
291
+ },
292
+ {
293
+ "from": "BookVI",
294
+ "to": "Prop2"
295
+ },
296
+ {
297
+ "from": "BookXI",
298
+ "to": "Prop2"
299
+ },
300
+ {
301
+ "from": "BookI",
302
+ "to": "Prop3"
303
+ },
304
+ {
305
+ "from": "BookV",
306
+ "to": "Prop3"
307
+ },
308
+ {
309
+ "from": "BookVI",
310
+ "to": "Prop3"
311
+ },
312
+ {
313
+ "from": "BookXI",
314
+ "to": "Prop3"
315
+ },
316
+ {
317
+ "from": "BookI",
318
+ "to": "Prop4"
319
+ },
320
+ {
321
+ "from": "BookV",
322
+ "to": "Prop4"
323
+ },
324
+ {
325
+ "from": "BookVI",
326
+ "to": "Prop4"
327
+ },
328
+ {
329
+ "from": "BookXI",
330
+ "to": "Prop4"
331
+ },
332
+ {
333
+ "from": "BookI",
334
+ "to": "Prop5"
335
+ },
336
+ {
337
+ "from": "BookV",
338
+ "to": "Prop5"
339
+ },
340
+ {
341
+ "from": "BookVI",
342
+ "to": "Prop5"
343
+ },
344
+ {
345
+ "from": "BookXI",
346
+ "to": "Prop5"
347
+ },
348
+ {
349
+ "from": "BookI",
350
+ "to": "Prop6"
351
+ },
352
+ {
353
+ "from": "BookV",
354
+ "to": "Prop6"
355
+ },
356
+ {
357
+ "from": "BookVI",
358
+ "to": "Prop6"
359
+ },
360
+ {
361
+ "from": "BookXI",
362
+ "to": "Prop6"
363
+ },
364
+ {
365
+ "from": "BookI",
366
+ "to": "Prop7"
367
+ },
368
+ {
369
+ "from": "BookV",
370
+ "to": "Prop7"
371
+ },
372
+ {
373
+ "from": "BookVI",
374
+ "to": "Prop7"
375
+ },
376
+ {
377
+ "from": "BookXI",
378
+ "to": "Prop7"
379
+ },
380
+ {
381
+ "from": "BookI",
382
+ "to": "Prop8"
383
+ },
384
+ {
385
+ "from": "BookV",
386
+ "to": "Prop8"
387
+ },
388
+ {
389
+ "from": "BookVI",
390
+ "to": "Prop8"
391
+ },
392
+ {
393
+ "from": "BookXI",
394
+ "to": "Prop8"
395
+ },
396
+ {
397
+ "from": "BookI",
398
+ "to": "Prop9"
399
+ },
400
+ {
401
+ "from": "BookV",
402
+ "to": "Prop9"
403
+ },
404
+ {
405
+ "from": "BookVI",
406
+ "to": "Prop9"
407
+ },
408
+ {
409
+ "from": "BookXI",
410
+ "to": "Prop9"
411
+ },
412
+ {
413
+ "from": "BookI",
414
+ "to": "Prop10"
415
+ },
416
+ {
417
+ "from": "BookV",
418
+ "to": "Prop10"
419
+ },
420
+ {
421
+ "from": "BookVI",
422
+ "to": "Prop10"
423
+ },
424
+ {
425
+ "from": "BookXI",
426
+ "to": "Prop10"
427
+ },
428
+ {
429
+ "from": "BookI",
430
+ "to": "Prop11"
431
+ },
432
+ {
433
+ "from": "BookV",
434
+ "to": "Prop11"
435
+ },
436
+ {
437
+ "from": "BookVI",
438
+ "to": "Prop11"
439
+ },
440
+ {
441
+ "from": "BookXI",
442
+ "to": "Prop11"
443
+ },
444
+ {
445
+ "from": "BookI",
446
+ "to": "Prop12"
447
+ },
448
+ {
449
+ "from": "BookV",
450
+ "to": "Prop12"
451
+ },
452
+ {
453
+ "from": "BookVI",
454
+ "to": "Prop12"
455
+ },
456
+ {
457
+ "from": "BookXI",
458
+ "to": "Prop12"
459
+ },
460
+ {
461
+ "from": "BookI",
462
+ "to": "Prop13"
463
+ },
464
+ {
465
+ "from": "BookV",
466
+ "to": "Prop13"
467
+ },
468
+ {
469
+ "from": "BookVI",
470
+ "to": "Prop13"
471
+ },
472
+ {
473
+ "from": "BookXI",
474
+ "to": "Prop13"
475
+ },
476
+ {
477
+ "from": "BookI",
478
+ "to": "Prop14"
479
+ },
480
+ {
481
+ "from": "BookV",
482
+ "to": "Prop14"
483
+ },
484
+ {
485
+ "from": "BookVI",
486
+ "to": "Prop14"
487
+ },
488
+ {
489
+ "from": "BookXI",
490
+ "to": "Prop14"
491
+ },
492
+ {
493
+ "from": "BookI",
494
+ "to": "Prop15"
495
+ },
496
+ {
497
+ "from": "BookV",
498
+ "to": "Prop15"
499
+ },
500
+ {
501
+ "from": "BookVI",
502
+ "to": "Prop15"
503
+ },
504
+ {
505
+ "from": "BookXI",
506
+ "to": "Prop15"
507
+ },
508
+ {
509
+ "from": "BookI",
510
+ "to": "Prop16"
511
+ },
512
+ {
513
+ "from": "BookV",
514
+ "to": "Prop16"
515
+ },
516
+ {
517
+ "from": "BookVI",
518
+ "to": "Prop16"
519
+ },
520
+ {
521
+ "from": "BookXI",
522
+ "to": "Prop16"
523
+ },
524
+ {
525
+ "from": "BookI",
526
+ "to": "Prop17"
527
+ },
528
+ {
529
+ "from": "BookV",
530
+ "to": "Prop17"
531
+ },
532
+ {
533
+ "from": "BookVI",
534
+ "to": "Prop17"
535
+ },
536
+ {
537
+ "from": "BookXI",
538
+ "to": "Prop17"
539
+ },
540
+ {
541
+ "from": "BookI",
542
+ "to": "Prop18"
543
+ },
544
+ {
545
+ "from": "BookV",
546
+ "to": "Prop18"
547
+ },
548
+ {
549
+ "from": "BookVI",
550
+ "to": "Prop18"
551
+ },
552
+ {
553
+ "from": "BookXI",
554
+ "to": "Prop18"
555
+ }
556
+ ],
557
+ "colorScheme": {
558
+ "foundation": {
559
+ "fill": "#95a5a6",
560
+ "stroke": "#7f8c8d"
561
+ },
562
+ "proposition": {
563
+ "fill": "#1abc9c",
564
+ "stroke": "#16a085"
565
+ }
566
+ }
567
+ }
data/euclid-elements-book-xiii.json ADDED
@@ -0,0 +1,650 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "discourse": {
4
+ "id": "euclid-elements-book-xiii",
5
+ "name": "Euclid's Elements, Book XIII",
6
+ "subject": "regular_solids",
7
+ "variant": "classical",
8
+ "description": "Regular solids: tetrahedron, octahedron, cube, icosahedron, dodecahedron. 18 propositions. Depends on Books I, IV, VI, X, XI. Source: David E. Joyce.",
9
+ "structure": {
10
+ "books": 13,
11
+ "propositions": 18,
12
+ "foundationTypes": [
13
+ "foundation"
14
+ ]
15
+ }
16
+ },
17
+ "metadata": {
18
+ "created": "2026-03-18",
19
+ "lastUpdated": "2026-03-18",
20
+ "version": "1.0.0",
21
+ "license": "CC BY 4.0",
22
+ "authors": [
23
+ "Welz, G."
24
+ ],
25
+ "methodology": "Programming Framework",
26
+ "citation": "Welz, G. (2026). Euclid's Elements Book XIII Dependency Graph. Programming Framework.",
27
+ "keywords": [
28
+ "Euclid",
29
+ "Elements",
30
+ "Book XIII",
31
+ "regular solids",
32
+ "Platonic",
33
+ "tetrahedron",
34
+ "octahedron",
35
+ "cube",
36
+ "icosahedron",
37
+ "dodecahedron"
38
+ ]
39
+ },
40
+ "sources": [
41
+ {
42
+ "id": "joyce",
43
+ "type": "digital",
44
+ "authors": "Joyce, David E.",
45
+ "title": "Euclid's Elements, Book XIII",
46
+ "year": "1996",
47
+ "url": "https://mathcs.clarku.edu/~djoyce/java/elements/bookXIII/bookXIII.html",
48
+ "notes": "Clark University"
49
+ }
50
+ ],
51
+ "nodes": [
52
+ {
53
+ "id": "BookI",
54
+ "type": "foundation",
55
+ "label": "Book I — Plane geometry",
56
+ "shortLabel": "Book I",
57
+ "short": "Foundation",
58
+ "book": 1,
59
+ "colorClass": "foundation"
60
+ },
61
+ {
62
+ "id": "BookIV",
63
+ "type": "foundation",
64
+ "label": "Book IV — Inscribed figures",
65
+ "shortLabel": "Book IV",
66
+ "short": "Foundation",
67
+ "book": 4,
68
+ "colorClass": "foundation"
69
+ },
70
+ {
71
+ "id": "BookVI",
72
+ "type": "foundation",
73
+ "label": "Book VI — Similar figures",
74
+ "shortLabel": "Book VI",
75
+ "short": "Foundation",
76
+ "book": 6,
77
+ "colorClass": "foundation"
78
+ },
79
+ {
80
+ "id": "BookX",
81
+ "type": "foundation",
82
+ "label": "Book X — Incommensurables",
83
+ "shortLabel": "Book X",
84
+ "short": "Foundation",
85
+ "book": 10,
86
+ "colorClass": "foundation"
87
+ },
88
+ {
89
+ "id": "BookXI",
90
+ "type": "foundation",
91
+ "label": "Book XI — Solid geometry",
92
+ "shortLabel": "Book XI",
93
+ "short": "Foundation",
94
+ "book": 11,
95
+ "colorClass": "foundation"
96
+ },
97
+ {
98
+ "id": "Prop1",
99
+ "type": "proposition",
100
+ "label": "Line cut in extreme and mean ratio: square on greater plus half whole equals five times square on half",
101
+ "shortLabel": "Prop. XIII.1",
102
+ "short": "Extreme and mean: square on greater",
103
+ "book": 13,
104
+ "number": 1,
105
+ "colorClass": "proposition"
106
+ },
107
+ {
108
+ "id": "Prop2",
109
+ "type": "proposition",
110
+ "label": "If square on line five times square on segment: double segment cut in extreme and mean, greater is remainder",
111
+ "shortLabel": "Prop. XIII.2",
112
+ "short": "Square five times: extreme and mean",
113
+ "book": 13,
114
+ "number": 2,
115
+ "colorClass": "proposition"
116
+ },
117
+ {
118
+ "id": "Prop3",
119
+ "type": "proposition",
120
+ "label": "Line cut in extreme and mean: square on lesser + half greater equals five times square on half",
121
+ "shortLabel": "Prop. XIII.3",
122
+ "short": "Extreme and mean: sum of segments",
123
+ "book": 13,
124
+ "number": 3,
125
+ "colorClass": "proposition"
126
+ },
127
+ {
128
+ "id": "Prop4",
129
+ "type": "proposition",
130
+ "label": "Line cut in extreme and mean: sum of squares on whole and lesser triple square on greater",
131
+ "shortLabel": "Prop. XIII.4",
132
+ "short": "Extreme and mean: sum of squares",
133
+ "book": 13,
134
+ "number": 4,
135
+ "colorClass": "proposition"
136
+ },
137
+ {
138
+ "id": "Prop5",
139
+ "type": "proposition",
140
+ "label": "Line cut in extreme and mean, add greater: whole cut in extreme and mean, original is greater",
141
+ "shortLabel": "Prop. XIII.5",
142
+ "short": "Extreme and mean: add greater",
143
+ "book": 13,
144
+ "number": 5,
145
+ "colorClass": "proposition"
146
+ },
147
+ {
148
+ "id": "Prop6",
149
+ "type": "proposition",
150
+ "label": "Rational line cut in extreme and mean ratio: each segment is apotome",
151
+ "shortLabel": "Prop. XIII.6",
152
+ "short": "Rational cut: apotome",
153
+ "book": 13,
154
+ "number": 6,
155
+ "colorClass": "proposition"
156
+ },
157
+ {
158
+ "id": "Prop7",
159
+ "type": "proposition",
160
+ "label": "Equilateral pentagon: if three angles equal (order or not), pentagon equiangular",
161
+ "shortLabel": "Prop. XIII.7",
162
+ "short": "Equilateral pentagon: three angles",
163
+ "book": 13,
164
+ "number": 7,
165
+ "colorClass": "proposition"
166
+ },
167
+ {
168
+ "id": "Prop8",
169
+ "type": "proposition",
170
+ "label": "Equilateral equiangular pentagon: diagonals subtending two angles cut in extreme and mean ratio",
171
+ "shortLabel": "Prop. XIII.8",
172
+ "short": "Pentagon: diagonals in extreme and mean",
173
+ "book": 13,
174
+ "number": 8,
175
+ "colorClass": "proposition"
176
+ },
177
+ {
178
+ "id": "Prop9",
179
+ "type": "proposition",
180
+ "label": "Side of hexagon + decagon in same circle: cut in extreme and mean, greater is hexagon",
181
+ "shortLabel": "Prop. XIII.9",
182
+ "short": "Hexagon + decagon: extreme and mean",
183
+ "book": 13,
184
+ "number": 9,
185
+ "colorClass": "proposition"
186
+ },
187
+ {
188
+ "id": "Prop10",
189
+ "type": "proposition",
190
+ "label": "Equilateral pentagon in circle: square on side equals sum of squares on hexagon and decagon",
191
+ "shortLabel": "Prop. XIII.10",
192
+ "short": "Pentagon: square equals hexagon + decagon",
193
+ "book": 13,
194
+ "number": 10,
195
+ "colorClass": "proposition"
196
+ },
197
+ {
198
+ "id": "Prop11",
199
+ "type": "proposition",
200
+ "label": "Equilateral pentagon in circle with rational diameter: side is minor",
201
+ "shortLabel": "Prop. XIII.11",
202
+ "short": "Pentagon in rational circle: minor",
203
+ "book": 13,
204
+ "number": 11,
205
+ "colorClass": "proposition"
206
+ },
207
+ {
208
+ "id": "Prop12",
209
+ "type": "proposition",
210
+ "label": "Equilateral triangle in circle: square on side triple square on radius",
211
+ "shortLabel": "Prop. XIII.12",
212
+ "short": "Equilateral triangle: side triple radius",
213
+ "book": 13,
214
+ "number": 12,
215
+ "colorClass": "proposition"
216
+ },
217
+ {
218
+ "id": "Prop13",
219
+ "type": "proposition",
220
+ "label": "To construct pyramid (tetrahedron) in given sphere; diameter squared 1.5 times side squared",
221
+ "shortLabel": "Prop. XIII.13",
222
+ "short": "Construct tetrahedron in sphere",
223
+ "book": 13,
224
+ "number": 13,
225
+ "colorClass": "proposition"
226
+ },
227
+ {
228
+ "id": "Prop14",
229
+ "type": "proposition",
230
+ "label": "To construct octahedron in sphere; diameter squared double side squared",
231
+ "shortLabel": "Prop. XIII.14",
232
+ "short": "Construct octahedron in sphere",
233
+ "book": 13,
234
+ "number": 14,
235
+ "colorClass": "proposition"
236
+ },
237
+ {
238
+ "id": "Prop15",
239
+ "type": "proposition",
240
+ "label": "To construct cube in sphere; diameter squared triple side squared",
241
+ "shortLabel": "Prop. XIII.15",
242
+ "short": "Construct cube in sphere",
243
+ "book": 13,
244
+ "number": 15,
245
+ "colorClass": "proposition"
246
+ },
247
+ {
248
+ "id": "Prop16",
249
+ "type": "proposition",
250
+ "label": "To construct icosahedron in sphere; side is minor",
251
+ "shortLabel": "Prop. XIII.16",
252
+ "short": "Construct icosahedron in sphere",
253
+ "book": 13,
254
+ "number": 16,
255
+ "colorClass": "proposition"
256
+ },
257
+ {
258
+ "id": "Prop17",
259
+ "type": "proposition",
260
+ "label": "To construct dodecahedron in sphere; side is apotome",
261
+ "shortLabel": "Prop. XIII.17",
262
+ "short": "Construct dodecahedron in sphere",
263
+ "book": 13,
264
+ "number": 17,
265
+ "colorClass": "proposition"
266
+ },
267
+ {
268
+ "id": "Prop18",
269
+ "type": "proposition",
270
+ "label": "To set out sides of five figures and compare them; no other such figure exists",
271
+ "shortLabel": "Prop. XIII.18",
272
+ "short": "Compare five regular solids",
273
+ "book": 13,
274
+ "number": 18,
275
+ "colorClass": "proposition"
276
+ }
277
+ ],
278
+ "edges": [
279
+ {
280
+ "from": "BookI",
281
+ "to": "Prop1"
282
+ },
283
+ {
284
+ "from": "BookIV",
285
+ "to": "Prop1"
286
+ },
287
+ {
288
+ "from": "BookVI",
289
+ "to": "Prop1"
290
+ },
291
+ {
292
+ "from": "BookX",
293
+ "to": "Prop1"
294
+ },
295
+ {
296
+ "from": "BookXI",
297
+ "to": "Prop1"
298
+ },
299
+ {
300
+ "from": "BookI",
301
+ "to": "Prop2"
302
+ },
303
+ {
304
+ "from": "BookIV",
305
+ "to": "Prop2"
306
+ },
307
+ {
308
+ "from": "BookVI",
309
+ "to": "Prop2"
310
+ },
311
+ {
312
+ "from": "BookX",
313
+ "to": "Prop2"
314
+ },
315
+ {
316
+ "from": "BookXI",
317
+ "to": "Prop2"
318
+ },
319
+ {
320
+ "from": "BookI",
321
+ "to": "Prop3"
322
+ },
323
+ {
324
+ "from": "BookIV",
325
+ "to": "Prop3"
326
+ },
327
+ {
328
+ "from": "BookVI",
329
+ "to": "Prop3"
330
+ },
331
+ {
332
+ "from": "BookX",
333
+ "to": "Prop3"
334
+ },
335
+ {
336
+ "from": "BookXI",
337
+ "to": "Prop3"
338
+ },
339
+ {
340
+ "from": "BookI",
341
+ "to": "Prop4"
342
+ },
343
+ {
344
+ "from": "BookIV",
345
+ "to": "Prop4"
346
+ },
347
+ {
348
+ "from": "BookVI",
349
+ "to": "Prop4"
350
+ },
351
+ {
352
+ "from": "BookX",
353
+ "to": "Prop4"
354
+ },
355
+ {
356
+ "from": "BookXI",
357
+ "to": "Prop4"
358
+ },
359
+ {
360
+ "from": "BookI",
361
+ "to": "Prop5"
362
+ },
363
+ {
364
+ "from": "BookIV",
365
+ "to": "Prop5"
366
+ },
367
+ {
368
+ "from": "BookVI",
369
+ "to": "Prop5"
370
+ },
371
+ {
372
+ "from": "BookX",
373
+ "to": "Prop5"
374
+ },
375
+ {
376
+ "from": "BookXI",
377
+ "to": "Prop5"
378
+ },
379
+ {
380
+ "from": "BookI",
381
+ "to": "Prop6"
382
+ },
383
+ {
384
+ "from": "BookIV",
385
+ "to": "Prop6"
386
+ },
387
+ {
388
+ "from": "BookVI",
389
+ "to": "Prop6"
390
+ },
391
+ {
392
+ "from": "BookX",
393
+ "to": "Prop6"
394
+ },
395
+ {
396
+ "from": "BookXI",
397
+ "to": "Prop6"
398
+ },
399
+ {
400
+ "from": "BookI",
401
+ "to": "Prop7"
402
+ },
403
+ {
404
+ "from": "BookIV",
405
+ "to": "Prop7"
406
+ },
407
+ {
408
+ "from": "BookVI",
409
+ "to": "Prop7"
410
+ },
411
+ {
412
+ "from": "BookX",
413
+ "to": "Prop7"
414
+ },
415
+ {
416
+ "from": "BookXI",
417
+ "to": "Prop7"
418
+ },
419
+ {
420
+ "from": "BookI",
421
+ "to": "Prop8"
422
+ },
423
+ {
424
+ "from": "BookIV",
425
+ "to": "Prop8"
426
+ },
427
+ {
428
+ "from": "BookVI",
429
+ "to": "Prop8"
430
+ },
431
+ {
432
+ "from": "BookX",
433
+ "to": "Prop8"
434
+ },
435
+ {
436
+ "from": "BookXI",
437
+ "to": "Prop8"
438
+ },
439
+ {
440
+ "from": "BookI",
441
+ "to": "Prop9"
442
+ },
443
+ {
444
+ "from": "BookIV",
445
+ "to": "Prop9"
446
+ },
447
+ {
448
+ "from": "BookVI",
449
+ "to": "Prop9"
450
+ },
451
+ {
452
+ "from": "BookX",
453
+ "to": "Prop9"
454
+ },
455
+ {
456
+ "from": "BookXI",
457
+ "to": "Prop9"
458
+ },
459
+ {
460
+ "from": "BookI",
461
+ "to": "Prop10"
462
+ },
463
+ {
464
+ "from": "BookIV",
465
+ "to": "Prop10"
466
+ },
467
+ {
468
+ "from": "BookVI",
469
+ "to": "Prop10"
470
+ },
471
+ {
472
+ "from": "BookX",
473
+ "to": "Prop10"
474
+ },
475
+ {
476
+ "from": "BookXI",
477
+ "to": "Prop10"
478
+ },
479
+ {
480
+ "from": "BookI",
481
+ "to": "Prop11"
482
+ },
483
+ {
484
+ "from": "BookIV",
485
+ "to": "Prop11"
486
+ },
487
+ {
488
+ "from": "BookVI",
489
+ "to": "Prop11"
490
+ },
491
+ {
492
+ "from": "BookX",
493
+ "to": "Prop11"
494
+ },
495
+ {
496
+ "from": "BookXI",
497
+ "to": "Prop11"
498
+ },
499
+ {
500
+ "from": "BookI",
501
+ "to": "Prop12"
502
+ },
503
+ {
504
+ "from": "BookIV",
505
+ "to": "Prop12"
506
+ },
507
+ {
508
+ "from": "BookVI",
509
+ "to": "Prop12"
510
+ },
511
+ {
512
+ "from": "BookX",
513
+ "to": "Prop12"
514
+ },
515
+ {
516
+ "from": "BookXI",
517
+ "to": "Prop12"
518
+ },
519
+ {
520
+ "from": "BookI",
521
+ "to": "Prop13"
522
+ },
523
+ {
524
+ "from": "BookIV",
525
+ "to": "Prop13"
526
+ },
527
+ {
528
+ "from": "BookVI",
529
+ "to": "Prop13"
530
+ },
531
+ {
532
+ "from": "BookX",
533
+ "to": "Prop13"
534
+ },
535
+ {
536
+ "from": "BookXI",
537
+ "to": "Prop13"
538
+ },
539
+ {
540
+ "from": "BookI",
541
+ "to": "Prop14"
542
+ },
543
+ {
544
+ "from": "BookIV",
545
+ "to": "Prop14"
546
+ },
547
+ {
548
+ "from": "BookVI",
549
+ "to": "Prop14"
550
+ },
551
+ {
552
+ "from": "BookX",
553
+ "to": "Prop14"
554
+ },
555
+ {
556
+ "from": "BookXI",
557
+ "to": "Prop14"
558
+ },
559
+ {
560
+ "from": "BookI",
561
+ "to": "Prop15"
562
+ },
563
+ {
564
+ "from": "BookIV",
565
+ "to": "Prop15"
566
+ },
567
+ {
568
+ "from": "BookVI",
569
+ "to": "Prop15"
570
+ },
571
+ {
572
+ "from": "BookX",
573
+ "to": "Prop15"
574
+ },
575
+ {
576
+ "from": "BookXI",
577
+ "to": "Prop15"
578
+ },
579
+ {
580
+ "from": "BookI",
581
+ "to": "Prop16"
582
+ },
583
+ {
584
+ "from": "BookIV",
585
+ "to": "Prop16"
586
+ },
587
+ {
588
+ "from": "BookVI",
589
+ "to": "Prop16"
590
+ },
591
+ {
592
+ "from": "BookX",
593
+ "to": "Prop16"
594
+ },
595
+ {
596
+ "from": "BookXI",
597
+ "to": "Prop16"
598
+ },
599
+ {
600
+ "from": "BookI",
601
+ "to": "Prop17"
602
+ },
603
+ {
604
+ "from": "BookIV",
605
+ "to": "Prop17"
606
+ },
607
+ {
608
+ "from": "BookVI",
609
+ "to": "Prop17"
610
+ },
611
+ {
612
+ "from": "BookX",
613
+ "to": "Prop17"
614
+ },
615
+ {
616
+ "from": "BookXI",
617
+ "to": "Prop17"
618
+ },
619
+ {
620
+ "from": "BookI",
621
+ "to": "Prop18"
622
+ },
623
+ {
624
+ "from": "BookIV",
625
+ "to": "Prop18"
626
+ },
627
+ {
628
+ "from": "BookVI",
629
+ "to": "Prop18"
630
+ },
631
+ {
632
+ "from": "BookX",
633
+ "to": "Prop18"
634
+ },
635
+ {
636
+ "from": "BookXI",
637
+ "to": "Prop18"
638
+ }
639
+ ],
640
+ "colorScheme": {
641
+ "foundation": {
642
+ "fill": "#95a5a6",
643
+ "stroke": "#7f8c8d"
644
+ },
645
+ "proposition": {
646
+ "fill": "#1abc9c",
647
+ "stroke": "#16a085"
648
+ }
649
+ }
650
+ }
data/peano-arithmetic-addition-multiplication.mmd ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ graph TD
2
+ A5["A5\nInduction"]
3
+ DefAdd["DefAdd\nDefinition of +"]
4
+ T5["T5\nAssociativity of +"]
5
+ T6["T6\nLeft identity"]
6
+ T7["T7\nSuccessor and add"]
7
+ T8["T8\nCommutativity of +"]
8
+ T9["T9\nCancellation for +"]
9
+ DefMul["DefMul\nDefinition of ·"]
10
+ T10["T10\nMul well-defined"]
11
+ T11["T11\nZero times"]
12
+ T12["T12\nZero from left"]
13
+ T13["T13\nSuccessor and mul"]
14
+ T14["T14\nCommutativity of ·"]
15
+ T15["T15\nAssociativity of ·"]
16
+ T16["T16\nDistributivity"]
17
+ T17["T17\nDistributivity (right)"]
18
+ A5 --> DefAdd
19
+ DefAdd --> T5
20
+ A5 --> T5
21
+ DefAdd --> T6
22
+ A5 --> T6
23
+ DefAdd --> T7
24
+ T6 --> T7
25
+ A5 --> T7
26
+ DefAdd --> T8
27
+ T5 --> T8
28
+ T6 --> T8
29
+ T7 --> T8
30
+ A5 --> T8
31
+ DefAdd --> T9
32
+ T8 --> T9
33
+ A5 --> T9
34
+ DefAdd --> DefMul
35
+ A5 --> DefMul
36
+ DefMul --> T10
37
+ A5 --> T10
38
+ DefMul --> T11
39
+ DefMul --> T12
40
+ T6 --> T12
41
+ A5 --> T12
42
+ DefMul --> T13
43
+ T8 --> T13
44
+ A5 --> T13
45
+ DefMul --> T14
46
+ T12 --> T14
47
+ T13 --> T14
48
+ A5 --> T14
49
+ DefMul --> T15
50
+ T5 --> T15
51
+ T8 --> T15
52
+ A5 --> T15
53
+ DefMul --> T16
54
+ T5 --> T16
55
+ T8 --> T16
56
+ T15 --> T16
57
+ A5 --> T16
58
+ T16 --> T17
59
+ T8 --> T17
60
+ classDef axiom fill:#e74c3c,color:#fff,stroke:#c0392b
61
+ classDef definition fill:#3498db,color:#fff,stroke:#2980b9
62
+ classDef theorem fill:#1abc9c,color:#fff,stroke:#16a085
63
+ class A5 axiom
64
+ class DefAdd,DefMul definition
65
+ class T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 theorem