Skip to content

Commit 1c20e07

Browse files
committed
Merge branch 'ys-working' into beta
2 parents 26aa45e + f278c5c commit 1c20e07

11 files changed

Lines changed: 525 additions & 535 deletions

README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Trace Theory Lean
2+
3+
This repository contains a formalization of Mazurkiewicz trace theory in the Lean theorem prover.
4+
5+
## Structure
6+
7+
### Core
8+
- `Defs.lean` contains fundamental definitions for traces.
9+
- `Basic.lean` contains basic properties of the algebra of traces.
10+
- `DependenceMorphism.lean` provides a way to show isomorphism to the algebra of traces via dependence morphisms.
11+
12+
### Isomorphic Algebras
13+
- `DependenceGraph.lean` contains a definition of the algebra of dependence graphs and proof of its isomorphism to traces.
14+
- `Histories.lean` contains a definition of the algebra of histories and proof of its isomorphism to traces.
15+
16+
### Ochmański's Theorem
17+
- `Language.lean` contains basic definitions and lemmas for trace languages.
18+
- `MyhillNerode.lean` supplies a proof of the Myhill-Nerode theorem in the context of monoids.
19+
- `Hashiguchi.lean` currently contains just the statement of Hashiguchi's theorem on sufficient conditions for a trace language to have finite rank.
20+
- `RegularExpressions.lean` reinterprets mathlib4's `RegularExpression` on traces.
21+
- `Ochmanski.lean` contains the proof of Ochmański's theorem on recognizable trace languages and lemmas leading up to it.
22+
23+
### Misc
24+
- `List.lean` contains misc. definitions and lemmas for `List` (string) manipulation.
25+
- `Occurences.lean` formalizes ordering of symbol occurrences.
26+
- `EdgeSubset.lean` is a proof of the negation of a claim in The Book of Traces (Proposition 1.4.2).
27+
- `Computability.lean` supplies a full proof of Kleene's theorem together with mathlib4.
28+
29+
## Naming Convention
30+
31+
General guideline:
32+
33+
- `a, b, c, d, e` for symbols.
34+
- `i, j, k` for indices.
35+
- `n, m` for sizes.
36+
- `u, v, w, x, y, z` for strings, `x', x''` or `x₁, x₂` or `p, q, r` for factoring.
37+
- `s, t, u, v` for traces or monoid elements.
38+
- `S` for (subsets of) alphabets.
39+
- `X` for word (string) languages.
40+
- `T` for trace langauges.

0 commit comments

Comments
 (0)