Sujet : Affine Logic, what Properties does it have? (Was: Counter Example by Troelstra & Schwichtenberg)
De : janburse (at) *nospam* fastmail.fm (Mild Shock)
Groupes : sci.logicDate : 06. Dec 2024, 20:15:08
Autres entêtes
Message-ID : <vivifs$t65b$1@solani.org>
References : 1 2 3
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.19
Ok, this here is classical logic,
deterministically expressed:
prove(L) :- select((A->B),L,R), !, prove([-A,B|R]).
prove(L) :- select(-(A->B),L,R), !, prove([A|R]), prove([-B|R]).
prove(L) :- select(-A,L,R), member(A,R), !.
It can readily prove Peirce Law:
?- prove([(((p->q)->p)->p)]).
true.
With Coq or Isabelle/HOL you should be
also able to prove these meta theorems about
the Prolog predicate prove/1:
prove([...,X,Y,...])
----------------------- (Exchange)
prove([...,Y,X,...])
prove([...,X,X,...])
----------------------- (Contraction)
prove([...,X,...])
prove([...,X,...])
----------------------- (Weakening)
prove([...,Y,X,...])
https://en.wikipedia.org/wiki/Structural_ruleIf you replace prove/1 with a deterministic prover
for affine logic, I guess you will still be
able to verify (Exchange) and (Weakening) for
an arbitary input. But not anymore (Contraction)
in general. What is the deterministic prover for
affine logic?
Julio Di Egidio schrieb:
On 04/12/2024 08:47, Mild Shock wrote:
Now I tried an example by Troelstra & Schwichtenberg:
>
solve_case(pos, schwichtenberg, [((((p->q)->q)->p)->q),(q->p)]=>q).
solve_case(neg, schwichtenberg2, [((((p->q)->q)->p)->q),(q->p)]=>q).
>
At least the second case shouldn't give false, as is seen here:
It fails if you do (the equivalent of) the intros before the TNT: I had a doubt about that, thanks for the test case. This works as expected:
?- solve([]=>tnt((((((p->q)->q)->p)->q)/\(q->p))->q)).
-Julio