Deutsch   English   Français   Italiano  
<vk785m$1jg0n$1@solani.org>

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

Path: ...!news.mixmin.net!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: Mild Shock <janburse@fastmail.fm>
Newsgroups: sci.logic
Subject: Re: A Christmas Miracle (Was: Curry-Howard Correspondence where?)
Date: Sat, 21 Dec 2024 21:24:21 +0100
Message-ID: <vk785m$1jg0n$1@solani.org>
References: <vjks2t$sghb$1@solani.org> <vjksaq$sgo6$1@solani.org>
 <vjksdb$sgo6$2@solani.org> <vjs63g$1m603$1@dont-email.me>
 <vk76kj$1jf9l$1@solani.org> <vk772u$1jfhe$1@solani.org>
 <vk77tr$1jg02$1@solani.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 21 Dec 2024 20:24:22 -0000 (UTC)
Injection-Info: solani.org;
	logging-data="1687575"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Firefox/91.0 SeaMonkey/2.53.19
Cancel-Lock: sha1:KZ6SJQF3H/fQkyevXUEik3CdVKw=
In-Reply-To: <vk77tr$1jg02$1@solani.org>
X-User-ID: eJwNyskBwCAMA7CZguMc44Ah+4/Q6i0iLJQeDOdwfM7UurkS1ttc8ovs/wDKiT54WmBPGKzK91OTR6jeed8HR04VTQ==
Bytes: 7520
Lines: 191

Hi,

But it also explains why you need to apply the
Dragalin "Copying". If you would really implement:

 >        Γ ⊢ α1    ....  Γ ⊢ αn
 >     -----------------------------
 >       Γ, (β :- α1, .., αn) ⊢ β

The above could indicate that you remove the applied
rule (β :- α1, .., αn). But you might have subgoals
that need the rule again. So the Prolog-ish and

als the intuitionistic system has in fact:

    Γ, γ ⊢ α1    ....  Γ, γ ⊢ αn
   -------------------------------
            Γ, γ ⊢ β

Where γ = (β :- α1, .., αn). So we are in the mist
of Affine logic, which would probaly forbid the
use of the rule a second or third time.

Lets see whether we can solve Weekend 3.

Bye

Mild Shock schrieb:
> Hi,
> 
> Corr.: Typo., This way its not Natural Deduction:
> 
>  >      Γ ⊢ α1    ....  Γ ⊢ αn
>  >   -----------------------------
>  >     Γ, α1 → ...  → αn → β ⊢ β
> 
> 
> Only this way it would be Natural Deduction:
> 
>  >      Γ ⊢ α1    ....  Γ ⊢ αn
>  >   -----------------------------
>  >     Γ ⊢ (α1 → ...  → αn → β) → β
> 
> But lets stick to the first form. Interestingly the
> multi-premisse rule is Prolog itself in disguise.
> Just observe that we usually have for conjunction:
> 
>     α → (β → γ)  ==  α ∧ β → γ
> 
> So we can write the rule as:
> 
>        Γ ⊢ α1    ....  Γ ⊢ αn
>     -----------------------------
>       Γ,  α1 ∧  ... ∧ αn → β ⊢ β
> 
> Now use comman and Prolog implication and you can write it:
> 
>        Γ ⊢ α1    ....  Γ ⊢ αn
>     -----------------------------
>       Γ, (β :- α1, .., αn) ⊢ β
> 
> Thats basically the declarative reading,
> reading ⊢ as "is true":
> 
> "The goal β is true if the subgoals ​α1, .., αn are all true."
> 
> Bye
> 
> Mild Shock schrieb:
>> Hi,sub
>>
>> There are some reduction techniques that more
>> or less work for natural deduction. But its
>> not so easy, you need Long Head Normal form
>>
>> and stuff. But Prolog code, a description of it,
>> has been published for example here. Guess who
>> wrote the Prolog code paper?
>>
>> August 1988
>> https://www.researchgate.net/publication/322069446
>>
>> Its based on the original Howard paper which uses a
>> multi premisse rule. So its not a rule with a fixed
>> arity. Namely its this rule:
>>
>>      Γ ⊢ α1    ....  Γ ⊢ αn
>>   -----------------------------
>>     Γ, α1 → ...  → αn → β ⊢ β
>>
>> You can use the above for reduction. And it
>> has a Natural Deduction Flair. You can also related
>> the above rule to Sequent calculus.
>>
>> Its quite a Christmas Miracle.
>>
>> Bye
>>
>> Mild Shock schrieb:
>>> Hi,
>>>
>>> I even wonder why you talk about Proofs as Programs.
>>> Your calculus is not suitable. Proofs as Progams
>>> usually uses Natural Deduction. There are very few
>>>
>>> systems that use Sequent Calculus. Well if your rules
>>> here were really impI and impE:
>>>
>>>  > % (C=>X->Y) --> [(C,X=>Y)]
>>>  > reduction(impI, (C=>X->Y), [[X|C]=>Y], []).
>>>  >
>>>  > % (C,X->Y=>Z) --> [(C=>X),(C,Y=>Z)]
>>>  > reduction(impE, (C0=>Z), [C=>X,[Y|C]=>Z], [H]) :-
>>>  > use_hyp((_->_), C0, (X->Y), C, H).
>>> https://gist.github.com/jp-diegidio/b6a7a071f9f81a469c493c4afcc5cb11
>>>
>>> Then you would have solved Weekend 3 already for long.
>>> Because if they really were impI and impE you
>>> could easily extract lambda expression. After all
>>>
>>> Curry Howard has these two impI and impE rules:
>>>
>>>    Γ, α  ⊢  β
>>> -------------- (→I)
>>>    Γ ⊢ α → β
>>>
>>>    Γ ⊢ α → β  Γ ⊢ α
>>> --------------------- (→E)
>>>         Γ ⊢ β
>>>
>>> https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#Intuitionistic_Natural_deduction_and_typed_lambda_calculus 
>>>
>>>
>>> But your Prolog obviously doesn't realize
>>> the two rules (→I) and (→E).
>>>
>>> The rule impE is wrong. Also you cannot use
>>> reduction technique for Natural Deduction, because
>>> the (→E) rule invents a new formula β in backward
>>>
>>> chaining. So it wouldn't be a proper reduction,
>>> when it invents something. The formulas get sometimes
>>> in a first phase larger and not necessarey
>>>
>>> smaller in Natural Deduction. So you would need to
>>> deploy a similar search as in Weekend 2.
>>> The BCI search.
>>>
>>> Julio Di Egidio schrieb:
>>>> On 14/12/2024 22:13, Mild Shock wrote:
>>>>
>>>>> Create a proof search in Simple Types,
>>>>> that finds Lambda Expressions as proof,
>>>>> for a given formula in propositional logic.
>>>>
>>>> Thinking about it:
>>>>
>>>> Either by hand or with a 'solve', we/I [*] go from a Goal to a Proof 
>>>> (proof tree).  And, by Curry-Howard, that is (already!) our Type and 
>>>> witnessing Term, i.e. our Proof is a program whose type is the Goal. 
>>>> Indeed, we also already find type-checking: of a Proof against the 
>>>> Goal it alleges to be a proof of.
>>>>
>>>> What program does the Proof represent?  If a Goal is of the form 
>>>> `G=>Z`, where `G` is the context (some collection of Formulas as 
>>>> hypotheses), and Formula `Z` is the conclusion, we interpret a Goal 
>>>> as a function from the hypotheses to the conclusion.
>>>>
>>>> To execute a Proof we need a "machine", namely, a function 'eval' 
>>>> that takes the Proof as well as witnessing Terms for each 
>>>> hypothesis, and returns a Term witnessing the conclusion.  (Which 
>>>> also requires a system of Terms: but I am not yet sure about the 
>>>> details...)
>>>>
>>>> More than that, we can 'compile' the Proof to some target language 
>>>> (the system's host language being the first candidate), to produce a 
========== REMAINDER OF ARTICLE TRUNCATED ==========