A proof-of-concept parser demonstrating that programming languages can be built entirely from mathematical notation, enabling cognitive universality in computing. MPL replaces English keywords with mathematical symbols, making programming accessible to the 80% of humanity who don't speak English. Every design decision follows the Fatima Test: "Will this make sense to a 10-year-old who doesn't speak English?" Current implementation: - Complete ANTLR 4 grammar with 70+ mathematical operators - Parser supporting all major programming paradigms - Zero grammar ambiguities - ASCII escape sequences for every Unicode symbol This release contains: - Core parser implementation - Grammar specification - Example programs - Comprehensive documentation - Whitepaper outlining the vision Note: This is a parser-only proof of concept. Programs can be parsed but not executed. The interpreter and runtime are future work.
17 KiB
Mathematical Programming Languages: Complete Appendices
Appendix A: Complete Symbol Reference
A.1 Core Mathematical Operators
Greek Letters (Variables)
All 24 Greek letters serve as single-character identifiers, following mathematical convention:
| Symbol | ASCII Escape | Unicode | Mathematical Usage | MPL Usage |
|---|---|---|---|---|
| α | \alpha |
U+03B1 | Angle, coefficient | General variable |
| β | \beta |
U+03B2 | Angle, coefficient | General variable |
| γ | \gamma |
U+03B3 | Euler constant | General variable |
| δ | \delta |
U+03B4 | Small change | General variable |
| ε | \epsilon |
U+03B5 | Small positive | General variable |
| ζ | \zeta |
U+03B6 | Zeta function | General variable |
| η | \eta |
U+03B7 | Efficiency | General variable |
| θ | \theta |
U+03B8 | Angle | General variable |
| ι | \iota |
U+03B9 | Imaginary unit | General variable |
| κ | \kappa |
U+03BA | Curvature | General variable |
| λ | \lambda, \lam |
U+03BB | Eigenvalue | Lambda/function |
| μ | \mu |
U+03BC | Mean, measure | General variable |
| ν | \nu |
U+03BD | Frequency | General variable |
| ξ | \xi |
U+03BE | Random variable | General variable |
| ο | \omicron |
U+03BF | - | General variable |
| π | \pi |
U+03C0 | Pi constant | Variable/constant |
| ρ | \rho |
U+03C1 | Density | General variable |
| σ | \sigma |
U+03C3 | Standard deviation | General variable |
| τ | \tau |
U+03C4 | Time constant | General variable |
| υ | \upsilon |
U+03C5 | - | General variable |
| φ | \phi |
U+03C6 | Golden ratio | General variable |
| χ | \chi |
U+03C7 | Chi distribution | General variable |
| ψ | \psi |
U+03C8 | Wave function | General variable |
| ω | \omega |
U+03C9 | Angular velocity | General variable |
Logical Operators
| Symbol | ASCII Escape | Unicode | Precedence | Associativity | Description |
|---|---|---|---|---|---|
| ∧ | \and, \wedge |
U+2227 | 3 | Left | Logical AND |
| ∨ | \or, \vee |
U+2228 | 2 | Left | Logical OR |
| ¬ | \not, \neg |
U+00AC | 8 | Prefix | Logical NOT |
| ⟹ | \implies, \Rightarrow |
U+27F9 | 1 | Right | Implication |
| ⟺ | \iff, \Leftrightarrow |
U+27FA | 1 | Right | If and only if |
| ∀ | \forall |
U+2200 | - | - | Universal quantifier |
| ∃ | \exists |
U+2203 | - | - | Existential quantifier |
Arithmetic Operators
| Symbol | ASCII Escape | Unicode | Precedence | Associativity | Description |
|---|---|---|---|---|---|
| + | - | U+002B | 5 | Left | Addition |
| - | - | U+002D | 5 | Left | Subtraction |
| × | \times |
U+00D7 | 6 | Left | Multiplication |
| ÷ | \div |
U+00F7 | 6 | Left | Division |
| ^ | - | U+005E | 7 | Right | Exponentiation |
| √ | \sqrt |
U+221A | 8 | Prefix | Square root |
| Σ | \sum |
U+2211 | - | - | Summation |
Set Theory Operators
| Symbol | ASCII Escape | Unicode | Description |
|---|---|---|---|
| ∅ | \emptyset |
U+2205 | Empty set |
| ∈ | \in |
U+2208 | Element of |
| ∉ | \notin |
U+2209 | Not element of |
| ⊂ | \subset |
U+2282 | Proper subset |
| ⊆ | \subseteq |
U+2286 | Subset or equal |
| ∪ | \union, \cup |
U+222A | Set union |
| ∩ | \intersect, \cap |
U+2229 | Set intersection |
| | | - | U+007C | Set size/cardinality |
Comparison Operators
| Symbol | ASCII Escape | Unicode | Precedence | Description |
|---|---|---|---|---|
| = | - | U+003D | 4 | Equality |
| ≠ | \neq, \ne |
U+2260 | 4 | Not equal |
| < | - | U+003C | 4 | Less than |
| > | - | U+003E | 4 | Greater than |
| ≤ | \leq, \le |
U+2264 | 4 | Less or equal |
| ≥ | \geq, \ge |
U+2265 | 4 | Greater or equal |
| ≈ | \approx |
U+2248 | 4 | Approximately |
A.2 Programming Extensions
I/O and Assignment
| Symbol | ASCII Escape | Unicode | Usage | Example |
|---|---|---|---|---|
| ✎ | \pencil |
U+270E | Output/print | ✎ "Hello" |
| ← | \leftarrow, \gets |
U+2190 | Assignment | x ← 42 |
| → | \rightarrow, \to |
U+2192 | Function type | ℕ → ℕ |
| ≜ | \coloneq |
U+225C | Definition | fact ≜ λn: ... |
Exception Handling
| Symbol | ASCII Escape | Unicode | Usage | Example |
|---|---|---|---|---|
| ↯ | \lightning |
U+21AF | Raise exception | ↯"Error!" |
| ↴ | \downarrow |
U+21B4 | Handle exception | expr ↴ {handler} |
Concurrency
| Symbol | ASCII Escape | Unicode | Usage | Example |
|---|---|---|---|---|
| ‖ | \parallel |
U+2016 | Parallel composition | task1 ‖ task2 |
| ⇀ | \send |
U+21C0 | Channel send | value ⇀ channel |
| ↽ | \receive |
U+21BD | Channel receive | ↽ channel |
Resource Management
| Symbol | ASCII Escape | Unicode | Usage | Example |
|---|---|---|---|---|
| ⊕ | \oplus |
U+2295 | Resource acquire | file ← ⊕open(path) |
| ⊖ | \ominus |
U+2296 | Resource release | ⊖file |
| 〔〕 | \lbracket, \rbracket |
U+3014/5 | RAII scope | 〔resource ops〕 |
Type Symbols
| Symbol | ASCII Escape | Unicode | Type | Set Definition |
|---|---|---|---|---|
| ℕ | \nat, \N |
U+2115 | Natural numbers | {0, 1, 2, ...} |
| ℤ | \int, \Z |
U+2124 | Integers | {..., -2, -1, 0, 1, 2, ...} |
| ℚ | \rat, \Q |
U+211A | Rational numbers | {p/q : p,q ∈ ℤ, q ≠ 0} |
| ℝ | \real, \R |
U+211D | Real numbers | Complete ordered field |
| ℂ | \complex, \C |
U+2102 | Complex numbers | {a + bi : a,b ∈ ℝ} |
| 𝔹 | \bool, \B |
U+1D539 | Booleans | {true, false} |
Appendix B: Annotated Example Programs
B.1 Hypothetical Student Journey - Progressive Examples
Month 1: First Program
✎ "Jambo!"
Annotations:
✎(pencil): Output operator - intuitively "write this out"- No semicolon needed for single expressions
- String literals use standard double quotes
- Passes Fatima Test: A child would see a pencil and know it means "write"
Month 3: Variables and Arithmetic
-- Calculate rectangle area
ℓ ← 5 -- length
w ← 3 -- width
A ← ℓ × w -- area formula
✎ A -- output: 15
Annotations:
←(left arrow): Assignment matches math notation- Variables can be single letters or Greek symbols
×for multiplication (not*)- Comments use
--(double dash)
Month 6: Loops and Summation
-- Sum numbers 1 to 10
Σ ← 0
∀ n ∈ [1..10]: Σ ← Σ + n
✎ "Sum: " + Σ
Annotations:
∀(for all): Universal quantifier for iteration∈(element of): Natural set membership[1..10]: Range notation- String concatenation with
+
Month 6: Conditional Logic
-- Classify a number
x ← -5
x < 0 ⟹ ✎ "Negative"
x = 0 ⟹ ✎ "Zero"
x > 0 ⟹ ✎ "Positive"
Annotations:
⟹(implies): If-then as logical implication- No explicit "if" keyword needed
- Conditions evaluated in order
Month 6: Recursion (Factorial)
-- Factorial function
fact ≜ λn: n ≤ 1 ⟹ 1 ∣ n × fact(n - 1)
✎ fact(5) -- Output: 120
Annotations:
≜(define as): Function definitionλ(lambda): Function notation∣(pipe): Else separator in conditionals- Recursion mirrors mathematical definition
B.2 Advanced Examples
Quadratic Solver
-- Solve ax² + bx + c = 0
quadratic ≜ λa,b,c:
Δ ← b² - 4×a×c
Δ < 0 ⟹ ✎ "No real solutions"
Δ = 0 ⟹ ✎ "One solution: " + (-b÷(2×a))
Δ > 0 ⟹
r₁ ← (-b + √Δ) ÷ (2×a)
r₂ ← (-b - √Δ) ÷ (2×a)
✎ "Two solutions: " + r₁ + ", " + r₂
List Processing
-- Filter and map
numbers ← [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-- Get even numbers
evens ← {n ∈ numbers | n mod 2 = 0}
-- Square them
squares ← {n² | n ∈ evens}
✎ squares -- Output: [4, 16, 36, 64, 100]
Error Handling
-- Safe division with exceptions
safeDivide ≜ λx,y:
y = 0 ⟹ ↯"Division by zero!"
x ÷ y
-- Using with handler
result ← safeDivide(10, 0) ↴ {
↯"Division by zero!" ⟹ ✎ "Error caught"
↯e ⟹ ↯e -- Re-raise other errors
}
Concurrent Downloads
-- Download multiple URLs in parallel
urls ← ["http://a.com", "http://b.com", "http://c.com"]
-- Launch parallel downloads
∀ url ∈ urls:
fetch(url) ⇀ results ‖
-- Collect results
∀ i ∈ [1..|urls|]:
data ← ↽results
✎ "Downloaded: " + |data| + " bytes"
File Processing with RAII
-- Process file with automatic cleanup
processFile ≜ λpath: 〔
file ← ⊕open(path) -- Acquire
lines ← readLines(file)
∀ line ∈ lines:
words ← split(line, " ")
✎ "Word count: " + |words|
-- file automatically released here
〕
B.3 Real-World Application Examples
Data Analysis
-- Statistical analysis
analyze ≜ λdata:
n ← |data|
μ ← (Σ x ∈ data: x) ÷ n -- mean
σ² ← (Σ x ∈ data: (x-μ)²) ÷ n -- variance
σ ← √σ² -- std dev
✎ "n=" + n + ", μ=" + μ + ", σ=" + σ
Simple Web Server
-- HTTP server
server ≜ λport:
∀ req ∈ listen(port):
-- Handle request in parallel
handleRequest(req) ‖
handleRequest ≜ λreq:
req.path = "/" ⟹
respond(200, "<h1>Welcome!</h1>")
req.path = "/api/data" ⟹
respond(200, getData())
true ⟹ -- default case
respond(404, "Not found")
Machine Learning - Perceptron
-- Simple perceptron
perceptron ≜ λweights,bias:
λinputs:
z ← (Σ i ∈ [1..|inputs|]:
weights[i] × inputs[i]) + bias
z > 0 ⟹ 1 ∣ 0 -- Step activation
-- Training step
train ≜ λp,inputs,target,α:
output ← p(inputs)
error ← target - output
-- Update weights
∀ i ∈ [1..|inputs|]:
p.weights[i] ← p.weights[i] + α×error×inputs[i]
p.bias ← p.bias + α×error
Appendix C: Grammar Validation
C.1 ANTLR 4 Grammar Statistics
Grammar Metrics:
- Total Lines: 373
- Parser Rules: 32
- Lexer Rules: 89
- Unique Operators: 71
- Precedence Levels: 12
- Unicode Code Points: 76
Validation Results:
ANTLR 4.9.3 Grammar Analysis
============================
Grammar: MPL.g4
Conflicts: 0
Ambiguities: 0
Left Recursion: Resolved
Start Symbol: program
Target: Java
C.2 Precedence Table
Full precedence hierarchy with examples:
| Level | Operators | Example | Parses As |
|---|---|---|---|
| -2 | ; |
a; b; c |
((a); b); c |
| -1 | ‖ |
a ‖ b ‖ c |
(a ‖ b) ‖ c |
| 0 | ← |
a ← b ← c |
a ← (b ← c) |
| 1 | ⟹ |
a ⟹ b ⟹ c |
a ⟹ (b ⟹ c) |
| 2 | ∨ |
a ∨ b ∨ c |
(a ∨ b) ∨ c |
| 3 | ∧ |
a ∧ b ∧ c |
(a ∧ b) ∧ c |
| 4 | =,<,> |
a < b = c |
Error (non-assoc) |
| 5 | +,- |
a + b - c |
(a + b) - c |
| 6 | ×,÷ |
a × b ÷ c |
(a × b) ÷ c |
| 7 | ^ |
a ^ b ^ c |
a ^ (b ^ c) |
| 8 | √,¬,↯ |
√√a |
√(√a) |
| 9 | (app) | f g h |
(f g) h |
C.3 Ambiguity Resolution Examples
Lambda vs Variable λ
- Context:
λas operator vs Greek variable - Resolution: Grammar rule precedence
- Test:
λ ← λx: xparses correctly
Application vs Multiplication
- Context:
f g(application) vsa × b - Resolution: Whitespace-sensitive lexing
- Test:
f g×hparses asApp(f, Mul(g, h))
Appendix D: Symbol Pedagogy Guide
D.1 Teaching Core Symbols
Teaching λ (Lambda/Function)
Physical Activity: "Function Machine"
- Students form input/output pairs
- One student is the "lambda" transforming inputs
- Example: λx: x×2 - student doubles any number given
Metaphor: "Recipe with blanks"
- λ is like a recipe that says "take ___ and do something"
- Fill in the blank when you use it
Progressive Introduction:
- Start with simple:
λx: x + 1 - Multiple parameters:
λx,y: x + y - With conditions:
λn: n > 0 ⟹ n ∣ 0
Teaching ∀ (For All/Loops)
Physical Activity: "Everyone Does"
- "∀ student in class: stand up"
- Students understand "for each" naturally
Mathematical Connection:
- Connect to set notation they know
- ∀ x ∈ {1,2,3}: means "do for 1, then 2, then 3"
Code Progression:
- Simple iteration:
∀ n ∈ [1..5]: ✎ n - With accumulation:
∀ n ∈ list: sum ← sum + n - Nested loops:
∀ i ∈ [1..3]: ∀ j ∈ [1..3]: ✎(i,j)
Teaching ✎ (Output)
Physical Activity: "Pencil and Paper"
- Students literally write on paper when they see ✎
- Reinforces the connection
No Translation Needed:
- Universal symbol - pencil means write everywhere
- Students grasp immediately
D.2 Symbol Introduction Sequence
Week 1: Basic I/O
- ✎ (output)
- ← (assignment)
- Basic arithmetic: +, -, ×, ÷
Week 2: Variables and Types
- Greek letters as variables
- Type symbols: ℕ, ℝ, 𝔹
- Comparisons: <, >, =, ≠
Week 3: Control Flow
- ⟹ (if-then)
- ∣ (else)
- Simple conditions
Week 4: Loops
- ∀ (for all)
- ∈ (element of)
- Ranges: [1..10]
Week 5: Functions
- λ (lambda)
- ≜ (define)
- Function calls
Week 6+: Advanced Concepts
- Exceptions: ↯, ↴
- Concurrency: ‖
- Resources: ⊕, ⊖
Appendix E: Implementation Details
E.1 Unicode Normalization
All input undergoes Unicode normalization to NFC:
// Ensure consistent handling
String normalize(String input) {
return Normalizer.normalize(input, Normalizer.Form.NFC);
}
E.2 Error Messages
Context-aware error reporting maintains symbol clarity:
Error at line 3:14: Expected '⟹' after condition
x < 0 ∣ "negative"
^
Hint: Use '⟹' for if-then. '∣' is only for else-branches.
E.3 ASCII Escape Processing
Flexible escape sequences with shortcuts:
LAMBDA : 'λ' | '\\lambda' | '\\lam' ;
FORALL : '∀' | '\\forall' | '\\all' ;
IMPLIES : '⟹' | '\\implies' | '\\=>' ;
Appendix F: Input Method Documentation
F.1 Visual Palette
Beginner-Friendly Symbol Picker
- Organized by category (Math, Logic, I/O, etc.)
- Hover shows name and usage
- Recently used section
- Search by meaning ("output" finds ✎)
F.2 Text Shortcuts
Common Patterns:
\lam→ λ (shorter than\lambda)\all→ ∀ (shorter than\forall)->→ → (arrow shortcuts):=→ ≜ (definition)!=→ ≠ (not equal)
F.3 Voice Input
Multilingual Support:
- "lambda" (English) → λ
- "لامدا" (Arabic) → λ
- "लैम्ब्डा" (Hindi) → λ
- "拉姆达" (Chinese) → λ
Context-Aware Recognition:
- "for all" → ∀
- "sum" → Σ
- "element of" → ∈
F.4 Handwriting Recognition
Symbol Training:
- System learns from user's writing style
- Common variations supported
- Quick correction gestures
F.5 Platform-Specific Methods
Windows:
- Alt+Numpad codes
- Windows emoji picker (Win+.)
macOS:
- Character Viewer
- Custom keyboard layouts
Linux:
- Compose key sequences
- IBus/FCITX input methods
Mobile:
- Custom keyboard app
- Symbol panels in IDEs
Appendix G: Envisioned Pilot Program Materials
G.1 Potential Lesson Plan Template
Lesson 1: Hello World
- Objective: Write first program
- Materials: Tablets/computers, symbol chart
- Activity: Each student writes greeting in their language
- Assessment: Program runs successfully
Key Teaching Points:
- ✎ means "write/output"
- Strings in quotes
- Run button executes code
- Celebrate first success!
G.2 Envisioned Teacher Training Guide
Day 1: MPL Philosophy
- The Fatima Test
- Cognitive justice principles
- Symbol over keyword approach
Day 2: Core Language
- Basic symbols and operations
- Common patterns
- Hands-on coding
Day 3: Pedagogy
- Symbol introduction sequence
- Physical activities
- Common misconceptions
Day 4: Classroom Management
- Pair programming with MPL
- Managing limited devices
- Assessment strategies
G.3 Potential Student Workbook Outline
Chapter 1: My First Program
- Understanding the design philosophy
- Writing with ✎
- Your turn: Hello in your language
Chapter 2: Calculator Magic
- Variables with ←
- Math symbols you know
- Build a calculator
Chapter 3: Making Decisions
- If-then with ⟹
- Comparing numbers
- Choose your adventure
Chapter 4: Repeat After Me
- Loops with ∀
- Patterns and sequences
- Draw with loops
G.4 Proposed Assessment Rubrics
First Program (Formative)
- Program runs: ✓/✗
- Uses ✎ correctly: ✓/✗
- Shows creativity: ✓/✗
Week 4 Project (Summative)
- Novice: Uses basic I/O and arithmetic
- Developing: Includes variables and conditions
- Proficient: Uses loops effectively
- Advanced: Defines and uses functions
G.5 Planned Community Resources
Online Forums
- Teacher discussion boards
- Student showcase gallery
- Symbol reference wiki
- Troubleshooting guides
Offline Materials
- Printable symbol charts
- Unplugged activities
- Parent information sheets
- Certificate templates
These appendices provide comprehensive technical and pedagogical resources for implementing MPL. For the latest updates and community contributions, visit: https://github.com/developtheweb/mpl