Deutsch   English   Français   Italiano  
<vloa2b$2dkpd$12@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Julio Di Egidio <julio@diegidio.name>
Newsgroups: sci.logic
Subject: Re: A miraculous match? (Was: Honoring Raymond Smullyan)
Date: Thu, 9 Jan 2025 11:57:14 +0100
Organization: A noiseless patient Spider
Lines: 108
Message-ID: <vloa2b$2dkpd$12@dont-email.me>
References: <vlkfq7$1vh4j$1@solani.org> <vlkrge$2dkpc$1@dont-email.me>
 <vllgli$2039r$1@solani.org> <vlmdk8$2dkpd$6@dont-email.me>
 <vlme6h$2dkpc$3@dont-email.me> <vlo9os$2dkpd$11@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 09 Jan 2025 11:57:15 +0100 (CET)
Injection-Info: dont-email.me; posting-host="e9d42356b81d42d02d68289eca9ecab3";
	logging-data="2544429"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18zSbCoDW30qFOgGQ7VTv2JrtLfX7zzh3U="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:i7R0gd6jG7Fajrau5Raehwz0FS4=
In-Reply-To: <vlo9os$2dkpd$11@dont-email.me>
Content-Language: en-GB
Bytes: 4722

On 09/01/2025 11:52, Julio Di Egidio wrote:
> On 08/01/2025 18:55, Julio Di Egidio wrote:
>> On 08/01/2025 18:45, Julio Di Egidio wrote:
>>> On 08/01/2025 10:31, Mild Shock wrote:
>>>> Julio Di Egidio schrieb:
>>>>> On 08/01/2025 01:10, Mild Shock wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Now you can listen to Bird songs for a minute:
>>>>>>
>>>>>> 2016 Dana Scott gave a talk honoring Raymond Smullyan
>>>>>> https://www.youtube.com/watch?v=omz6SbUpFQ8
>>>>>
>>>>> Define Smullyan.
>>>>>
>>>>>> A little quiz:
>>>>>>
>>>>>> Q: And also on the Curry-Howard Isomorphism. Is
>>>>>> there a nice way to put it in bird-forest form like To
>>>>>> Mock a Mocking Bird. This book made everything so
>>>>>> simple and intuitive for me.
>>>>>>
>>>>>> A: Hardly, because xx has no simple type.
>>>>>>
>>>>>> Right?
>>>>>
>>>>> Let `F : forall (X Y : Type), X -> Y`, then we can
>>>>> (almost) write `F F`.  Simple seems simple, it just
>>>>> doesn't end well:
>>>>>
>>>>> ```coq
>>>>> (** There exists a function
>>>>>      from any type to any type! *)
>>>>> Axiom F : forall (X Y : Type), X -> Y.
>>>>>
>>>>> (** Any two types: might be False False if
>>>>>      that's all there is, an uninhabited type. *)
>>>>> Parameters (T U : Type).
>>>>>
>>>>> (** Now we can prove False. *)
>>>>> Definition absurd : False :=
>>>>>    F (T -> U) False (F T U).
>>>>> ```
>>>>
>>>> Thats System F and not simple types. also
>>>> known as the polymorphic lambda-calculus
>>>> or second-order lambda-calculus, it is an
>>>> extension of simply typed lambda-calculus.
>>>
>>> It's as simple as a mocking bird... :)
>>>
>>> Why do you care so much about simply-typed?  If not as a foundation 
>>> for the theory of functional languages: yet xx is an object of 
>>> interest in its own right, simply beyond the simply-typed.
>>>
>>>> But in simple types itself, th self application
>>>> x x has no type. You can try yourself:
>>>>
>>>> /* Typed Variable */
>>>> typeof(_:A, B) :-
>>>>     unify_with_occurs_check(A, B).
>>>> /* Modus Ponens */
>>>> typeof((S*T), B) :-
>>>>     typeof(S, (A -> B)),
>>>>     typeof(T, A).
>>>>
>>>> And then the query:
>>>>
>>>> ?- X=_:_, typeof((X*X), T).
>>>> false.
>>>>
>>>> The query will though succeed if you remove
>>>> the occurs check.
>>>
>>> Which is more interesting: what it is, not what it is not.
>>>
>>> With plain unification (on SWI):
>>>
>>> ```
>>> ?- X=_:_, typeof((X*X), T).
>>> X = _:_S1, % where
>>>      _S1 = (_S1->T).
>>> ```
>>>
>>> That is also somewhat reminiscent of Coq's result, except that here 
>>> the type is a ground and cyclic term (a "cyclic type"?), as such not 
>>> even polymorphic...  Nor, OTOH, can I think of a way to construct a 
>>> cyclic term in Coq.
>>
>> Correction: it's not really ground since T isn't...
> 
> Anyway, looking back at the Coq term for `absurd`, i.e. `F (T -> U) 
> False (F T U)`, unifying the parameter `U` with `False` would be no 
> prob, and unifying `T` with `T->U` would give the exact same cyclic term 
> as `_S1` above.
> 
> A miraculous match?  A significant one?
> 
> (But I still wouldn't know how to create a cyclic term proper in Coq or 
> in fact in any total functional language, despite the mechanism 
> underlying conversion/definitional equality is logical unification, and 
> we can even somewhat access it in Coq, via the definition of 
> `eq`/reflexivity.)

Although maybe a coinductive definition...

-Julio