Open GoogleCodeExporter opened 9 years ago
Tim suggested to just change in the predefines
"data DiffLabel" to "prop DiffLabel" and see what happens. Unfortunately it did
not work, see r236.
But I think that we can add a new Axiom (rewrite rule) like this:
Axiom (DiffLabel): ['a /= 'b] => DiffLabel 'a 'b --> []
This means we have to introduce non-equality constraints with all their axioms.
Original comment by ggr...@gmail.com
on 5 Aug 2009 at 8:05
Okay, I have branched:
branches/issue-67
contains a first attempt.
DiffLabel now automatically adds an axiom:
Axiom (DiffLabel): [] => 'a != 'b --> []
actually this should read:
Axiom (DiffLabel): ['a != 'b] => DiffLabel 'a 'b --> []
which means that (DiffLabel 'a 'b) can be immediately discharged if the tags
differ.
I am working on this next.
NB.: The branch is very messy, and contains many hacks to appease the compiler,
even if they are semantically
invalid.
Original comment by ggr...@gmail.com
on 8 Aug 2009 at 2:04
Since Label is an atomic singleton type, it is either 'Label <fixed>' or 'Label
a', i.e. universally quantified.
Here is another plan: to check whether 'DiffLabel a b' is a true proposition we
freshen it (so that we do not poison our world) and unify a and b. If that
fails, we have a proof of the difference. If not, the unifier is the refutation.
N.B. I hear some constructionists murmuring "DiffLabel a b -> ⊥"
Original comment by ggr...@gmail.com
on 8 Sep 2011 at 9:33
Original issue reported on code.google.com by
ggr...@gmail.com
on 4 Aug 2009 at 9:57