If X has decidable equality and negationhttps://ncatlab.org/nlab/show/strongly+extensional+function#examples
of equality is an apartness relation, then
the negation of equality is a (in fact the
unique) decidable tight apartness relation
on X, and any function from X to any set
Y with a tight apartness relation on Y
must be strongly extensional.
In fact, how to constructive mathematics a la Bishop.--- Synchronet 3.21a-Linux NewsLink 1.2
I haven't got to the bottom of it, it turns out to be
a long term project in itself, for both theoretical and
technical reasons, but here are few notes and mainly the
references that I have managed to collect.
"How to formalize dependent setoid morphisms?" <https://discourse.rocq-prover.org/t/2759>
To be continued...
-Julio
Hi,
Some people like Juglio post references to
wonderful meandering along terminology like:
If X has decidable equality and negationhttps://ncatlab.org/nlab/show/strongly+extensional+function#examples
of equality is an apartness relation, then
the negation of equality is a (in fact the
unique) decidable tight apartness relation
on X, and any function from X to any set
Y with a tight apartness relation on Y
must be strongly extensional.
Still they are clueless how to sort rational
trees in Prolog. I am pretty sure such people
don't know how to do it practically in a Prolog system.
Bye
Julio Di Egidio schrieb:
In fact, how to constructive mathematics a la Bishop.
I haven't got to the bottom of it, it turns out to be
a long term project in itself, for both theoretical and
technical reasons, but here are few notes and mainly the
references that I have managed to collect.
"How to formalize dependent setoid morphisms?" <https://discourse.rocq-prover.org/t/2759>
To be continued...
-Julio
Hi,
Some precedent work in creating a notation
with sharing, is not only found in SWI-Prolog’s
term_factorized/3, but also in Ciao’s
Prolog uncycle_term/2:
uncycle_term(T,U)
Given a term T, U is a finite representation of T as an acyclic term. https://ciao-lang.org/ciao/build/doc/ciao.html/cyclic_terms.html#uncycle_term/2
Its even used in the Ciao Prolog debugger,
but I don’t know 100% whether it is used
for printing. Main take away from testing
the two top-levels:
- SWI-Prolog:
Uses internal term_factorized, possibly based on
same_term/2, so will still show X = f(f(X)) as such.
- Ciao Prolog:
Uses their uncycle_term/2, which is (==)/2 based,
so they can show X = f(f(X)) as X = f(X). But their
code has also a remark: slow!
But I guess the exclamation slow! might
be changed into a fast!, using some hash tables.
At least for a great deal of time, it would be faster.
Bye
Mild Shock schrieb:
Hi,
Some people like Juglio post references to
wonderful meandering along terminology like:
If X has decidable equality and negationhttps://ncatlab.org/nlab/show/strongly+extensional+function#examples
of equality is an apartness relation, then
the negation of equality is a (in fact the
unique) decidable tight apartness relation
on X, and any function from X to any set
Y with a tight apartness relation on Y
must be strongly extensional.
Still they are clueless how to sort rational
trees in Prolog. I am pretty sure such people
don't know how to do it practically in a Prolog system.
Bye
Julio Di Egidio schrieb:
In fact, how to constructive mathematics a la Bishop.
;
I haven't got to the bottom of it, it turns out to be
a long term project in itself, for both theoretical and
technical reasons, but here are few notes and mainly the
references that I have managed to collect.
;
"How to formalize dependent setoid morphisms?"
<https://discourse.rocq-prover.org/t/2759>
;
To be continued...
;
-Julio
:- module(cyclic_terms, )
That anything printing could be also used
for sort, was maybe never explored, but is
evident when we seek a representation based
comparator, since printing is of course
also a representation.
Ciao Prologs uncycle_term/2 is realized
in 100% Prolog, just like my current
explorations. The source code is found on
GitHub. It doesn’t need some special built-in,
since it uses (==)/2 and not same_term/2:
:- module(cyclic_terms, ) https://github.com/ciao-lang/ciao/blob/fdff410cf2b7f2b85baff97485a2db5522d785f3/core/lib/cyclic_terms.pl
The latest comment was 5 years ago, “(core)
faster prettysols.pl (toplevel)”, but this only
refers to bypassing uncycle_term/2 in case of
an acyclic term. Otherwise it has a separate
uncycle_eqs, uncycle_val, etc.. implementation.
A little bit the same evolution that happend
in my Prolog system over the last days.
Mild Shock schrieb:
Hi,
Some precedent work in creating a notation
with sharing, is not only found in SWI-Prolog’s
term_factorized/3, but also in Ciao’s
Prolog uncycle_term/2:
uncycle_term(T,U)
Given a term T, U is a finite representation of T as an acyclic term.
https://ciao-lang.org/ciao/build/doc/ciao.html/cyclic_terms.html#uncycle_term/2
Its even used in the Ciao Prolog debugger,
but I don’t know 100% whether it is used
for printing. Main take away from testing
the two top-levels:
- SWI-Prolog:
Uses internal term_factorized, possibly based on
same_term/2, so will still show X = f(f(X)) as such.
- Ciao Prolog:
Uses their uncycle_term/2, which is (==)/2 based,
so they can show X = f(f(X)) as X = f(X). But their
code has also a remark: slow!
But I guess the exclamation slow! might
be changed into a fast!, using some hash tables.
At least for a great deal of time, it would be faster.
Bye
Mild Shock schrieb:
Hi,
Some people like Juglio post references to
wonderful meandering along terminology like:
If X has decidable equality and negationhttps://ncatlab.org/nlab/show/strongly+extensional+function#examples
of equality is an apartness relation, then
the negation of equality is a (in fact the
unique) decidable tight apartness relation
on X, and any function from X to any set
Y with a tight apartness relation on Y
must be strongly extensional.
Still they are clueless how to sort rational
trees in Prolog. I am pretty sure such people
don't know how to do it practically in a Prolog system.
Bye
Julio Di Egidio schrieb:
In fact, how to constructive mathematics a la Bishop.
;
I haven't got to the bottom of it, it turns out to be
a long term project in itself, for both theoretical and
technical reasons, but here are few notes and mainly the
references that I have managed to collect.
;
"How to formalize dependent setoid morphisms?"
<https://discourse.rocq-prover.org/t/2759>
;
To be continued...
;
-Julio
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 1,064 |
Nodes: | 10 (0 / 10) |
Uptime: | 148:00:32 |
Calls: | 13,691 |
Calls today: | 1 |
Files: | 186,936 |
D/L today: |
33 files (6,120K bytes) |
Messages: | 2,410,927 |