-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Alphabet generalisation #28
base: master
Are you sure you want to change the base?
Changes from 10 commits
37a40a5
e7ad592
a427b6e
ec18cd9
316404a
4328c40
20795ea
6cc1017
65f8408
6d0d753
e5a4fe2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,5 @@ | ||
import "10-theory-definedness.mm0"; | ||
|
||
term a_symbol : Symbol ; | ||
def a : Pattern = $sym a_symbol$ ; | ||
term b_symbol : Symbol ; | ||
def b : Pattern = $sym b_symbol$ ; | ||
|
||
Comment on lines
-3
to
-7
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd like to keep a copy of the theory we used for the paper submission separate from the generated theorems for reference. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can have that in a separate branch, like |
||
def emptyset : Pattern = $bot$ ; | ||
|
||
term epsilon_symbol : Symbol ; | ||
|
@@ -18,9 +13,8 @@ def kleene_l {X: SVar} (alpha: Pattern X) : Pattern = $mu X (epsilon \/ sVar X . | |
def kleene_r {X: SVar} (alpha: Pattern X) : Pattern = $mu X (epsilon \/ alpha . sVar X)$; | ||
def kleene {X: SVar} (alpha: Pattern X) : Pattern = $(kleene_r X alpha)$; | ||
|
||
--- We assume that the alphabet has only two letters. | ||
--- This, however, captures the full expressivity. | ||
def top_letter : Pattern = $a \/ b$; | ||
term top_letter_symbol: Symbol; | ||
def top_letter: Pattern = $sym top_letter_symbol$; | ||
|
||
def top_word_l {X: SVar} : Pattern = $(kleene_l X top_letter )$ ; | ||
def top_word_r {X: SVar} : Pattern = $(kleene_r X top_letter )$ ; | ||
|
@@ -30,12 +24,9 @@ def top_word {X: SVar} : Pattern = $(kleene X top_letter )$ ; | |
|
||
axiom domain_words {X: SVar} : $ top_word X $; | ||
|
||
axiom functional_epsilon {x : EVar} : $exists x (eVar x == epsilon)$; | ||
axiom functional_a {x : EVar} : $exists x (eVar x == a)$; | ||
axiom functional_b {x : EVar} : $exists x (eVar x == b)$; | ||
axiom functional_concat {w v x: EVar} : $exists x (eVar x == (eVar w . eVar v))$; | ||
axiom functional_epsilon : $ is_func epsilon $; | ||
axiom functional_concat {w v: EVar} : $ is_func (eVar w . eVar v)$; | ||
|
||
axiom no_confusion_ab_e : $a != b$; | ||
axiom no_confusion_ae_e : $~(epsilon C= top_letter)$; | ||
axiom no_confusion_ec_e {u v: EVar} : $(epsilon == eVar u . eVar v) -> (epsilon == eVar u) /\ (epsilon == eVar v)$; | ||
axiom no_confusion_cc_e {u v x y: EVar} : $(x in top_letter) -> (y in top_letter) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because of weird conflicts with the theory of words when running the tests I had to rename all
a
's in this file toaa
and allb
's tobb
.Feel free to rename them to whatever else if you don't like this.