In un recente thread sulla mailing list di Agda, è emersa la questione delle leggi , in cui Peter Hancock ha fatto un'osservazione stimolante .
La mia comprensione è che le leggi di tipi negativi, vale a dire. connettivi le cui regole di introduzione sono invertibili. Per disabilitare per le funzioni, Hank suggerisce di usare un eliminatore su misura, funsplit , invece della solita regola dell'applicazione. Vorrei capire l'osservazione di Hank in termini di polarità.η
Ad esempio, ci sono due presentazioni -types. Esiste il tradizionale eliminatore di split Martin-Löf , in uno stile positivo:
E c'è la versione negativa:
Quest'ultima presentazione semplifica l'ottenimento di per le coppie, ad es. per qualsiasi coppia (dove == sta per l'uguaglianza di definizione). In termini di provabilità, questa differenza non ha importanza: intuizionisticamente, è possibile implementare le proiezioni con split o viceversa.( π 0 p , π 1 p ) = = p p
Ora, i tipi di sono di solito (e non controverso, credo) presi negativamente:
Il che ci dà per le funzioni: .λ x . f x = = f
Tuttavia, in quella mail, Hank ricorda l' eliminatore funsplit (Programmazione nella teoria dei tipi ML, [http://www.cse.chalmers.se/research/group/logic/book/], p.56). È descritto nel framework logico da:
È interessante notare che Nordstrom et al. motivare questa definizione dicendo che "[questa] forma non canonica alternativa si basa sul principio dell'induzione strutturale". C'è un forte odore di positività in questa affermazione: le funzioni sarebbero "definite" dal loro costruttore, .
Tuttavia, non riesco a delineare una presentazione soddisfacente di tale regola nella deduzione naturale (o, ancora meglio, nel calcolo sequenziale). L'uso (ab) del framework logico per introdurre sembra cruciale qui.
Quindi, funsplit è una presentazione positiva di -types? Abbiamo anche qualcosa di simile nel calcolo sequenziale (non dipendente)? Come sarebbe?
Quanto è comune / curioso ciò per i teorici delle prove sul campo?