Anda di halaman 1dari 209

Informasi dan Komputasi 179, 19-75 (2002)

doi:10.1006/inco.2001.2951
Linear Kerangka Kerja Logis
1
Iliano Cervesato
Teknik canggih dan Divisi Ilmu, ITT Industries, Inc., Alexandria, Virginia 22303-1410
E-mail: iliano@itd.nrl.navy.mil
dan
Frank Pfenning
Departemen Ilmu Komputer Carnegie Mellon University, Pittsburgh, Pennsylvania 15213-3891
E-mail: fp@cs.cmu.edu
Kami hadir dengan tipe linier teori
λ
&
sebagai dasar formal bagi LLF, konservatif perpanjangan
logis kerangka LF. LLF menggabungkan kekuatan ekspresif tergantung jenis dengan logika linier
untuk mengizinkan alami dan ringkas representasi dari seluruh kelas baru dari sistem deduktif, yaitu
orang-orang yang berurusan dengan negara. Sebagai contoh, kita encode versi Mini-ML dengan mutable referensi
termasuk jenis sistem dan operasionalnya semantik dan menjelaskan bagaimana untuk mengambil keuntungan praktis
dari representasi dari perhitungan.
C

2002 Elsevier Science (USA)

1. PENDAHULUAN
Sebuah kerangka kerja logis [27, 37] adalah formal meta-bahasa yang dirancang khusus untuk mewakili dan alasan
tentang bahasa pemrograman, logika, dan lain mekanika hamiltonian yang dapat digambarkan sebagai deduktif sys-
tems. Kerangka kerja ini terdiri dari meta-representasi bahasa dengan yang diinginkan komputasi dan
representasional sifat, biasanya logika atau jenis teori dan sebuah meta-representasi metodologi
yang menunjukkan cara terbaik untuk mengambil keuntungan dari yang mendasari meta-bahasa untuk mengkodekan diberikan
formal
sistem. Logical framework LF [27] adalah di antara yang paling sukses seperti usulan: berdasarkan
tergantung jenis teori
λ , bergantung pada penilaian-sebagai-jenis representasi metodologi, dan telah
diimplementasikan sebagai higher-order kendala logika bahasa pemrograman Elf [38, 41]. LF dan Elf telah
banyak digunakan untuk penelitian logis mekanika hamiltonian [43] dan bahasa pemrograman [33, 39] (lihat [44] untuk
survei).
Sayangnya, banyak gagasan-gagasan dan konsep-konsep yang diperlukan dalam pemrograman umum praktek tidak dapat
direpresentasikan dalam berbagai cara memuaskan dalam meta-bahasa berdasarkan intuitionistic logika dan intuitionistic jenis
teori, seperti LF. Secara khusus, konstruksi berdasarkan gagasan negara seperti yang ditemukan di imperative lan-
guages sering melarikan diri yang elegan formalisasi dengan cara alat ini. Demikian pula, logis sistem itu, dengan
definisi (misalnya, substructural logika) atau dengan presentasi (misalnya, Dyckhoff kontraksi-gratis intuitionistic
sequent kalkulus [17], bergantung pada destruktif konteks operasi memerlukan canggung pengkodean dalam sebuah intuisi-
istic framework. Akibatnya kecukupan representasi adalah sulit untuk membuktikan dan formal
meta-teori yang dengan cepat menjadi keras.
Logika linier [21] memberikan pandangan dari konteks rumus sebagai sumber daya yang dapat dimanfaatkan untuk model
gagasan negara, seperti yang dijelaskan misalnya di [12, 28, 34, 53]. Proposal saat ini menempatkan penekanan
pada isu yang mewakili penting konstruksi dan sumber daya berbasis logika, tapi tampaknya tidak memadai untuk
penalaran secara efektif tentang representasi ini. Misalnya, linear spesifikasi formalisme Forum
[34] telah digunakan untuk langsung memberikan representasi semantik pemrograman imperatif
bahasa [12]; namun, penting perhitungan yang tidak efektif dapat direpresentasikan dalam formal-
isme dan oleh karena itu meta-teori sifat-sifat yang telah dikodekan. Di sisi lain, intuitionistic
1
Karya ini didukung oleh NSF Grant CCR-9303383. Penelitian ini diselesaikan ketika pertama penulis di
Departemen Ilmu Komputer dari Universitas Carnegie Mellon. Kedua penulis ini didukung oleh Alexander-von-
Humboldt-Stiftung ketika bekerja di atas kertas ini selama kunjungan ke Departemen Matematika dari Universitas
Darmstadt.
19
0890-5401/02 $35.00
C

2002 Elsevier Science (USA)


Semua hak dilindungi undang-undang.
20
CERVESATO DAN PFENNING
jenis-teori kerangka kerja seperti LF membuat representasi dari meta-penalaran mudah, tetapi tidak
memiliki gagasan tentang linearitas yang dibangun di. Misalnya, perhitungan dari pemrograman fungsional
bahasa Mini-ML dengan mudah dapat dinyatakan dalam LF, yang memungkinkan mengotomatisasi meta-teori yang
bahasa [33]. Namun, JIKA tidak dilengkapi untuk menangani penting perhitungan secara efektif, menyebabkan
meta-penalaran tugas untuk menjadi tantangan besar [42].
Dalam makalah ini, kami mengusulkan sebuah konservatif perpanjangan kerangka logis JIKA yang memungkinkan repre-
senting linier benda-benda dan penalaran tentang mereka. Kita sebut ini formalisme Linear LF atau LLF untuk jangka pendek.
Dengan
bahasa yang mendasari LLF adalah tergantung jenis teori
λ
&
, yang meluas LF's
λ dengan linear
connectives
−◦ (linear implikasi), & (aditif hubungannya), dan
(aditif kebenaran), terlihat dalam pengaturan ini
sebagai jenis konstruktor. Bahasa dari benda-benda
λ akibatnya diperpanjang dengan linear fungsional
abstraksi, aditif pasang dan unit, yang sesuai destructors, dan mereka equational teori. Dalam rangka
untuk menjaga sistem sederhana kita membatasi indeks dari jenis keluarga untuk menjadi linear ditutup sehingga jenis dapat
bergantung hanya pada intuitionistic asumsi, tetapi tidak pada linear variabel. Sementara pada awalnya ini mungkin muncul untuk
menjadi kuat pembatasan, kekuatan ekspresif dari sistem yang dihasilkan tampaknya tidak akan terhalang oleh
keterbatasan ini.
Meta-representasi metodologi LLF meluas penilaian-sebagai-jenis teknik yang diadopsi di
JIKA dengan cara langsung untuk peta negara yang berhubungan dengan konstruksi dan perilaku ke operator linear dari
λ
&
.
Yang dihasilkan representasi mempertahankan keanggunan dan kedekatan yang menjadi ciri LF pengkodean dan
kemudahan membuktikan kecukupan mereka. LLF sejauh ini telah digunakan untuk mengkodekan sintaks logika linier, sequent
kalkulus, dan alami pengurangan presentasi dari semantik, pemrograman imperatif bahasa dan
operasional mereka perilaku, dan sejumlah negara-based game. Kami juga telah diterapkan LLF untuk menyusun
aspek meta-teori dari sistem ini seperti bukti potong eliminasi klasik linear
logika, terjemahan linear antara alam deduksi dan sequent kalkulus, dan sifat-sifat imperatif
bahasa seperti jenis pelestarian [6].
Pokok kontribusi dari makalah ini adalah (1) definisi yang seragam tipe teori mengakui
linear entitas dalam hubungannya dengan tergantung jenis; (2) menyeluruh meta-teoretis penyelidikan ini
kerangka kerja; dan (3) penggunaan sistem ini sebagai kerangka kerja logis untuk mewakili dan alasan tentang masalah-masalah
yang tidak ditangani dengan baik oleh sebelumnya mekanika hamiltonian, baik linear atau intuitionistic. Untuk pengetahuan kita,
λ
&
adalah contoh pertama dalam literatur dari jenis linear dengan teori dependensi. Kasus
sederhana jenis telah dianalisis misalnya di [1, 2, 5, 32]. Selanjutnya bekerja sepanjang baris yang sama
pemikiran yang telah dikemukakan oleh Ishtiaq dan Pym di [30]. Kedua jenis teori yang terinspirasi oleh ide-ide di
[35].
Makalah ini disusun sebagai berikut. Bagian 2 menjelaskan jenis linear teori
λ
&
yang
LLF didirikan. Hal ini juga menyajikan hasil utama dalam meta-teori, seperti kuat normalisasi
teorema dan decidability memverifikasi apakah sebuah istilah yang telah diberikan tipe (type-checking) dan
komputasi jenis untuk jangka waktu tertentu (jenis sintesis). Akhirnya, ia menjelaskan kanonik formulasi
dari bahasa ini, yang membentuk dasar untuk meta-representasi metodologi yang diadopsi di LLF .
Bagian 3 menunjukkan kekuatan ekspresif LLF sebagai kerangka kerja logis dengan memberikan encod-
ing dari sintaks dan semantik dari sebuah imperatif bahasa pemrograman dan dengan menunjukkan bagaimana untuk
mengambil keuntungan praktis yang dihasilkan representasi dari perhitungan. Akhirnya, Bagian 4 menilai
hasil dan menguraikan pekerjaan di masa depan. Rincian lebih lanjut tentang pekerjaan yang disajikan dalam makalah ini dapat
ditemukan
di [6].
2. TIPE LINIER TEORI
λ
&
Di bagian ini, kita mendefinisikan tipe linier teori
λ
&
yang LLF didirikan. Yang lebih penting, kami
menyajikan hasil utama dalam meta-teori yang membenarkan mengadopsi itu sebagai meta-representasi bahasa. Dalam
rangka memfasilitasi keterangan dari LLF dalam ruang yang tersedia, kita harus mengasumsikan bahwa pembaca lebih akrab
dengan kedua kerangka logis LF [27] dan berbagai presentasi dari logika linier [21, 22] dan linear
λ-bate [1, 2]. Kami juga akan mengambil keuntungan dari perpanjangan alami dari Kari–Howard isomorphism
dengan logika linier dengan melihat jenis sebagai rumus. Karena keterbatasan ruang, kita membatasi diskusi kita untuk
hasil utama dalam meta-teori LLF dan, selain itu, hadir hanya sketsa dari bukti-bukti mereka. Para
pembaca yang tertarik diundang untuk berkonsultasi [6] untuk rincian lebih lanjut tentang presentasi dan bukti-bukti dalam hal ini
bagian.
LINEAR KERANGKA KERJA LOGIS
21
Hasil diskusi sebagai berikut: pertama-tama kita menjelaskan sintaks dari
λ
&
dalam Bagian 2.1. Kemudian,
dalam Bagian 2.2, kami memperkenalkan semantik sebagai precanonical mengetik sistem, di mana typable hal yang
diharapkan akan di
η-bentuk panjang, meskipun mereka mungkin mengandung β-redices. Dalam Bagian 2.3, kami
memfokuskan
perhatian pada equational teori bahasa ini. Kami menyajikan beberapa sifat dasar dalam Bagian 2.4
dan membuktikan kuat normalisasi untuk sistem ini di Bagian 2.5. Di Bagian 2.6, kita mengeksploitasi hasil ini untuk
menyederhanakan precanonical presentasi semantik
λ
&
sebagai setara algoritmik sistem,
yang memungkinkan mudah bukti decidability dari jenis pemeriksaan dan jenis sintesis. Sifat ini
disajikan Bagian 2.7. Berdasarkan hasil penelitian ini, kami menemukan dalam Bagian 2.8 a kanonik sistem
untuk
λ
&
dan hanya typable hal yang baik
η-panjang dan β-normal. Cara λ
&
digunakan sebagai
bahasa logical framework LLF bergantung pada formulasi ini. Akhirnya, dalam rangka untuk menyederhanakan
pengobatan studi kasus di bagian berikutnya, kita memperpanjang beton sintaks dari Elf, utama
pelaksanaan LF, linear operator
λ
&
di Bagian 2.9.
2.1. Bahasa dan Operasi Dasar
Tipe linier teori
λ
&
yang mendasari LLF meluas bahasa
λ dari kerangka logis JIKA
dengan tiga connectives dari logika linier, dilihat dalam konteks ini sebagai jenis konstruktor, yaitu perkalian
implikasi (
−◦), aditif hubungannya (&), dan aditif kebenaran ( ). Bahasa benda ditambah
sesuai dengan masing-masing konstruktor dan destruktor. Linier jenis memanipulasi linear asumsi
yang kami hadirkan sebagai dibedakan deklarasi bentuk x selain: A dalam konteks; kita tulis x : A untuk
konteks elemen `a la
λ dan memanggil mereka intuitionistic asumsi. Sintaks dari λ
&
diberikan oleh
berikut dijelaskan tata bahasa, di mana kita telah dipisahkan konstruk yang tidak hadir dalam
λ dengan double
bar :
Jenis: K ::
= JENIS
(Kelas jenis)
|
x:A
.K
(Kelas tergantung jenis keluarga)
Jenis: A ::
=P
(Dasar jenis)
|
x:A
1
.A
2
(Intuitionistic fungsi jenis)
A
1
A
2
(Fungsi linier jenis)
|A
1
&A
2
(Aditif jenis produk)
|
(Aditif tipe unit)
Tipe keluarga: P ::
=a
(Tipe keluarga konstanta)
|PM
(Tipe keluarga instansiasi)
Benda-Benda: M ::
=c|x
(Objek konstanta dan variabel)
| λx : A. M | M
1
M
2
(Intuitionistic fungsi)
ˆλx : A. M | M
1
SelainM
2
(Fungsi linier)
|M
1
,M
2
|
(Aditif pasangan)
FST
M
|
SND
M
|
(Aditif unit elemen)
Konteks:
::

(Kosong konteks)
|
,x:A
(Intuitionistic asumsi)
, x selain: A
(Linear asumsi)
Tanda tangan:
::

(Kosong tanda tangan)
|
,a:K
(Tipe keluarga konstan deklarasi)
|
,c:A
(Objek konstan deklarasi)
Di sini x, c, dan merupakan kisaran dari objek-tingkat variabel, objek konstanta, dan tipe keluarga konstanta, masing-
tively. Kita mengadopsi konvensi yang menunjukkan linear variabel dengan huruf u, mungkin subscripted;
namun, kami akan terus menulis x generik variabel. Secara khusus, kita tulis x : selain: A untuk con-
teks asumsi yang tepat alam (linier, x selain: A, atau intuitionistic, x : A) tidak penting. Selain
nama-nama yang ditampilkan di atas, kita akan sering menggunakan N dan B untuk berbagai lebih dari benda-benda dan jenis,
masing-masing.
Selain itu, kami menunjukkan istilah generik, yaitu, objek, jenis, atau jenis, dengan huruf U dan V , mungkin
subscripted. Seperti biasa, kita menulis Sebuah
→ U untuk
x:A
.U setiap kali x tidak terjadi dalam tipe atau jenis U .
Akhirnya, sebuah indeks adalah argumen M
saya
untuk jenis keluarga di dasar jenis P
=M
1
...M
n
.
22
CERVESATO DAN PFENNING
s dot

·=·
·
=
s lin1

(
, u selain: A) = (
, u selain: A)
=
s int

(
, x : A) = (
, x : A)
(
, x : A)
=
s lin2

(
, u selain: A) =
(
, u selain: A)
GBR. 1.
Konteks membelah.
Pengertian bebas dan variabel terikat yang diadaptasi dari LF (melihat kehadiran mengikat baru
membangun: linear selain
λ-abstraksi). Kami menunjukkan dengan FV(U ) gratis (linear atau intuitionistic) variabel
istilah U . Kami memperluas notasi ini untuk konteks dan menulis FV( ) untuk menunjukkan kesatuan FV( A) untuk semua
x :selain: A di
. Seperti biasa, kami mengidentifikasi syarat-syarat yang berbeda dengan nama-nama mereka terikat variabel dan menulis
[M
/x]U untuk menangkap-menghindari substitusi M untuk x dalam jangka U ; perhatikan bahwa x dapat berupa linear
atau intuitionistic. Kami memperluas notasi ini untuk konteks dan menulis [M
/x]
untuk hasil menggantikan M
untuk x dalam jenis dari setiap asumsi di
. Akhirnya kita memerlukan variabel dan konstanta harus dideklarasikan di
paling sekali dalam konteks dan di tanda tangan, masing-masing.
Dalam pembahasan berikut, kita akan seperti biasa drop terkemuka kosong urutan (
·) dari repre-
sentation dari konteks. Demikian pula, kita overload konteks konstruktor (,) dan menggunakannya untuk menunjukkan urutan
rangkaian juga. Kami tidak negara atau membuktikan biasa sifat-sifat operasi ini. Setiap kali kita
menggabungkan dua konteks
1
dan
2
kami menganggap mereka tidak menyatakan variabel umum sehingga
sehingga konteks (
1
,
2
) hanya berisi satu asumsi untuk masing-masing variabel dinyatakan. Kami menunjukkan dengan dom
domain dari konteks
, didefinisikan sebagai seperangkat variabel yang dideklarasikan di dalamnya, dan menulis

untuk pembatasan
dari
untuk variabel-variabel yang muncul dalam
χ.
Di bawah ini kita akan sering perlu untuk merujuk ke intuitionistic bagian dari konteks
. Oleh karena itu, kami memperkenalkan
fungsi , yang didefinisikan sebagai berikut:





·

,x:A=,x:A
, x selain: A = .
Kami overload notasi ini dan gunakan untuk mengungkapkan fakta bahwa linear sebagian dilambangkan konteks ini
dibatasi menjadi kosong (misalnya, dalam semua aturan untuk jenis keluarga dalam Gbr. 3).
Multiplicative connectives dalam logika linier memerlukan konteks untuk dibagi di antara tempat biner
aturan (atau konteks di tempat yang akan bergabung dalam kesimpulan, tergantung pada sudut pandang).
Kita bergantung pada konteks membelah penilaian untuk menentukan bahwa asumsi-asumsi linear dalam konteks
harus
didistribusikan dalam konteks
1
dan
2
sedangkan intuitionistic asumsi-asumsi yang harus dibagi. Setiap kali
ini adalah kasus, hukuman
=
1

2
adalah derivable. Aturan dalam Gbr. 1 menentukan keputusan ini.
Perhatikan bahwa, setiap kali penghakiman
=
1

2
adalah derivable,
1
dan
2
berbeda dari
hanya dengan
hilang linear asumsi. Secara khusus, urutan relatif dari deklarasi masih disebutkan dalam
konteks yang sesuai dengan urutan di mana mereka terjadi di
. Kami mengantisipasi bahwa asumsi-asumsi, baik
intuitionistic atau linear, tidak tergantung pada linear variabel
λ
&
. Oleh karena itu, pemisahan konteks yang
sah sesuai dengan spesifikasi dalam bagian berikutnya hasil dua valid konteks. Demikian pula, penggabungan
berlaku konteks memiliki nama-nama yang berbeda untuk mereka linear variabel-variabel yang menghasilkan konteks yang valid.
2.2. Precanonical Bentuk
Makna sintaksis badan bahasa dapat disajikan dalam berbagai bentuk, pilihan
yang ditentukan oleh aspek-aspek yang kita ingin menekankan. Di bagian ini, kita mendefinisikan semantik
λ
&
dengan cara deduktif sistem yang kita sebut precanonical, yang memberlakukan derivable hal yang harus di
η-bentuk panjang, meskipun mereka mungkin mengandung β-redices. Tujuan dari bagian ini adalah untuk mempelajari utama
sifat dari jenis teori yang mendasari LLF, akhirnya decidability dari jenis pemeriksaan. Mengandalkan
sebuah precanonical sistem ini sangat nyaman untuk tujuan ini karena bersih memisahkan praktis
desideratum memiliki meluas, sebagai bagian dari bahasa kita, umumnya dinyatakan dengan cara
η-
konversi aturan, dari peran
β-redices sebagai landasan equational teori λ
&
.
LINEAR KERANGKA KERJA LOGIS
23
Sifat utama dari LF awalnya menyatakan dan membuktikan untuk jenis teori yang tidak menegakkan
meluas, tapi yang pengertian definisi persamaan dibatasi untuk
β-kesetaraan [27]. Namun,
kecukupan teorema yang berhubungan dengan sebuah objek sistem untuk LF pengkodean dan implementasi yang efisien
dari formalisme ini sebagai logika bahasa pemrograman memerlukan mempertimbangkan
λ istilah dalam bentuk kanonik.
Oleh karena itu, jenis teori yang digunakan sebagai meta-representasi bahasa didasarkan pada
βη-kesetaraan.
Perbedaan ini dikenal Harper et al. ketika mereka pertama kali disajikan LF pada tahun 1987 [27]. Perawatan penuh
dari meta-teori LF dengan
βη-kesetaraan berturut-turut yang dibuat oleh berbagai penulis [14, 20, 49]
dan mengakibatkan trivial komplikasi.
Rumusan semantik LLF sebagai precanonical sistem memiliki keuntungan memaksa
semua derivable penilaian untuk menyebutkan hanya istilah-istilah dalam
η-bentuk panjang, seperti yang dinyatakan secara formal dalam Lemma 2.11.
Memang, semua isu-isu mengenai
η-konversi yang tertanam ke dalam sistem dan tidak diperlukan eksplisit
pengobatan. Akibatnya, istilah bahwa kita pada akhirnya akan menghasilkan yang persis
βη-lama istilah-istilah yang diperlukan
dalam kecukupan theorems. Properti yang memungkinkan kita untuk fokus pada
β-konversi dan khususnya untuk mempertahankan
teknik-teknik sederhana yang digunakan dalam [27], tanpa disebutkan di atas anomali. Pendekatan kami terinspirasi
oleh Felty ini canonical LF [18].
Yang precanonical sistem untuk LLF ditentukan oleh berarti dari sejumlah penilaian. Pertama-tama kita memiliki tujuh
penilaian mendefinisikan precanonical syarat dan bantu gagasan preatomic ekspresi, serta
perpanjangan alami dari konsep-konsep ini untuk konteks dan tanda tangan. Inferensi aturan yang menjelaskan bagaimana
untuk mendapatkan mereka didistribusikan ke Ara. 2 dan 3. Aturan ini akan dibahas secara detail segera. Dalam
bentuk ekspresi ini dilaporkan di sini:
(i)
p
⇑ Sig
(
adalah precanonical tanda tangan)
(ii)
p
⇑ Ctx
(
adalah precanonical konteks di
)
(iii)
p
K
⇑ Jenis
(K adalah precanonical jenis dalam dan
)
(iv)
p
A

JENIS
(A precanonical ketik dan
)
(v)
p
P
↓K
(P adalah preatomic jenis keluarga dari jenis K dalam dan
)
(vi)
p
M
⇑ Yang
(M adalah precanonical objek dari tipe Yang di
dan
)
(vii)
p
M
↓A
(M adalah preatomic objek dari tipe Yang di
dan
)
Perhatikan bahwa penilaian yang mengacu pada jenis dan macam beroperasi di murni intuitionistic asumsi,
dinyatakan dengan menggunakan notasi untuk konteks mereka. Kita akan memperoleh kejelasan dan keringkasan dalam
berikut dengan mengandalkan beberapa singkatan. Setiap kali properti yang sama berlaku untuk masing-masing penilaian
(iii–vii) ketika diterapkan pada syarat-syarat sesuai kategori sintaksis, kita menulis
p
U
⇑↓ V dan kemudian
merujuk ke istilah generik U dan V jika diperlukan. Selain itu, jika dua atau lebih ekspresi tersebut terjadi dalam sebuah
pernyataan, kami berasumsi bahwa anak panah yang sebenarnya penilaian setara, kecuali dengan tegas dinyatakan lain.
Kami mengambil kebebasan mengadopsi notasi ini juga dalam kasus jenis, meskipun Jenis ini tidak panjang
dan tidak ada preatomic jenis. Setiap kali penghakiman
p
U
⇑↓ V memiliki derivasi P, sebuah fakta yang
kita kadang-kadang akan menulis sebagai
P :: (
p
U
⇑↓ V ), kita akan sering merujuk ke U sebagai istilah yang divalidasi
dalam penilaian ini, dan panggilan
P a validasi dari U .
Pengertian definisi persamaan kita pertimbangkan adalah
β-kesetaraan dan beroperasi pada tingkat objek,
tipe keluarga, dan jenis. Di antara berbagai kemungkinan presentasi, kita mengadopsi paralel bersarang pengurangan
(
→), yang didefinisikan dalam Gambar. 4 dan dibahas segera. Kita menulis →

dan
≡ untuk penutupan transitif dan
sesuai relasi ekivalensi. Kita menghilangkan aturan yang jelas mendefinisikan mereka. Secara kumulatif, kami memiliki
berikut sembilan penilaian:
(viii–x)
U
→V
(U mengurangi V)
(xi–xiii)
U


V
(U transitively mengurangi V)
(xiv–xvi)
U
≡V
(U definitionally sama dengan V)
Kita perlu satu lagi bahan untuk mengatasi multiplicative jenis konstruktor
−◦, yaitu konteks
membelah penilaian yang disajikan dalam bagian sebelumnya dan didefinisikan dalam Gambar. 1.
(xvii)
=

(
terbagi menjadi
dan
).
24
CERVESATO DAN PFENNING
Sekarang kita akan pergi melalui aturan-aturan yang mendefinisikan
λ
&
dan menggambarkan ide-ide utama di balik ini rumusan
dari semantik dari bahasa kita. Pertama-tama kita berkonsentrasi pada mengetik penilaian dalam buah Ara. 2 dan 3 dan kemudian
mendiskusikan pengertian definisi persamaan, didirikan pada pengurangan relasi pada Gambar. 4, yang akan dibahas
pada bagian berikutnya.
Istilah M tipe A di
η-long bentuk, atau precanonical, jika itu terstruktur sebagai sebuah urutan yang terdiri
semata-mata dari konstruktor (abstraksi, pasangan, dan unit) yang sesuai dengan struktur tipe A, diterapkan untuk
preatomic hal di posisi-posisi mana objek dari tipe dasar yang diperlukan. Sebuah preatomic jangka terdiri dari
urutan destruktor (aplikasi dan proyeksi) yang berakhir dengan sebuah konstanta, variabel, atau yang lain
precanonical istilah, di mana argumen bagian dari masing-masing aplikasi juga diperlukan untuk menjadi precanonical. Catatan
bahwa ini memungkinkan
β-redices. Definisi ini mencakup gagasan biasa pada η-lama bentuk λ linear
jenis operator
, &, dan
dari
λ
&
tanpa bersikeras
β-bentuk normal.
Ini adalah karakteristik untuk
η-long bentuk-bentuk yang jenis sendirian menentukan struktur jangka waktu sampai kita
mencapai dasar jenis, jadi, misalnya, setiap
η-panjang N jenis A = a & (a
a) akan memiliki bentuk
N
1
, ˆλy : a.N
2
,
di mana N
1
dan N
2
yang preatomic hal dari jenis yang. Variabel x dari tipe di atas Yang merupakan preatomic, tapi tidak
precanonical. Namun hal ini dapat ditulis ulang sebagai
FST
x
, ˆλy : a.(
SND
x)selain y
yang precanonical.
Simak dulu aturan ditampilkan di bagian atas dari Fig. 2. Mereka memvalidasi precanonical benda M dengan
berasal penilaian bentuk
p
M
⇑ A. Aturan opc unit, opc pasangan, opc llam, dan opc ilam memungkinkan
konstruksi dari segi bentuk
,M
1
,M
2
, Selain
λu : A.M, dan λx : A.M, masing-masing. Empat
operator adalah objek konstruktor kami kalkulus. Kita sebut ini kesimpulan pola pengenalan aturan
karena, jika kita memusatkan perhatian kita pada mereka jenis komponen, mereka memperkenalkan masing-masing jenis
konstruktor
λ
&
dalam kesimpulan mereka. Cara mereka menangani konteks mereka lebih akrab dari logika linier. Pemberitahuan
khususnya yang opc unit (untuk
) berlaku dengan sah konteks dan bahwa premis dari aturan
opc pasangan (untuk &) berbagi konteks yang sama, yang juga muncul dalam kesimpulan. Kedua adalah karena
aditif konstruktor, dalam arti logika linier.
Aturan opc llam (untuk
) dan opc ilam (untuk
→) hanya berbeda dengan sifat dari asumsi mereka tambahkan untuk
konteks di premis mereka: linear dalam kasus mantan, intuitionistic untuk yang terakhir. Dua yang tersisa
aturan yang mendefinisikan objek-tingkat precanonical penghakiman meninggalkan istilah di bagian tengah mereka tidak berubah.
Yang
jenis konversi aturan opc eq hanya memungkinkan mengganti jenis komponen precanonical penilaian
dengan tipe lain, di bawah kondisi yang berlaku dan definitionally setara dengan tipe yang asli.
Aturan opc yang merupakan paksaan dari preatomic untuk precanonical hal. Hal ini dibatasi untuk base tipe P. Sebagai
hasilnya, ada tepat satu aturan untuk masing-masing jenis konstruktor dan satu aturan untuk base tipe, jika kita mengabaikan jenis
konversi untuk saat ini. Ini adalah properti yang dinyatakan di atas, yaitu, bahwa struktur
precanonical istilah ditentukan oleh struktur dari jenis. Jenis konversi (aturan opc eq) tidak
menghancurkan properti ini karena itu hanya mempengaruhi benda-benda yang tertanam sebagai indeks dalam jenis dasar, karena
itu akan menjadi
jelas segera.
Aturan mendefinisikan preatomic penilaian pada tingkat dari benda-benda,
p
M
↓ A, yang ditampilkan di
bagian bawah Gambar. 2. Mereka memvalidasi konstanta (aturan opa con) dan linier dan intuitionistic variabel (aturan
opa lvar dan opa ivar, masing-masing). Mereka juga memungkinkan pembentukan istilah M N
, MselainN ,
FST
M,
dan
SND
M (aturan opa iapp, opa lapp, opa fst, dan opa dan, masing-masing), yang utama operator kami
call destruktor. Yang terakhir empat inferensi tokoh-tokoh yang disebut eliminasi aturan karena mereka mengizinkan mengambil
terpisah masing-masing jenis konstruktor
λ
&
dari salah satu premis mereka, dengan pengecualian dari
. Yang
peran yang dimainkan oleh linear asumsi di
λ
&
ini terutama jelas dalam aturan ini. Memang, aksioma
aturan (opa con, opa lvar, dan opa ivar) dapat diterapkan hanya jika bagian linear dari konteksnya adalah kosong atau
hanya berisi variabel yang akan divalidasi, dengan jenis yang tepat; hal ini diungkapkan dengan menggunakan
· · · notasi.
Linearitas muncul juga dalam penghapusan aturan untuk
−◦, di mana kita bergantung pada pemisahan penghakiman yang
didefinisikan dalam
Gambar. 1 untuk mengelola konteks ini ikat di aturan opa lapp. Mengamati juga bahwa konteks
argumen bagian dari intuitionistic aplikasi, dalam aturan opa iapp, terkendala tidak mengandung linear
LINEAR KERANGKA KERJA LOGIS
25
Benda-benda
p

M
↓P
opc yang
p

M
⇑P
p

M
⇑B
A
≡B
p

A

JENIS
opc eq
p

M
⇑ Yang
p

⇑ Ctx
opc unit
p


p

M
⇑ Yang
p

N
⇑B
opc pasangan
p

M
,N⇑A&B
, u selain: A
p

M
⇑B
opc llam
p

Selainλu : A. M ⇑ A −◦ B
,x:A
p

M
⇑B
opc ilam
p

λx : A. M ⇑
x:A
.B
............................................................................................
p

M
⇑ Yang
opa c
p

M
↓A
p
M
↓B
A
≡B
p

A

JENIS
opa eq
p

M
↓A
p
,c:A,

⇑ Ctx
opa con
p
,c:A,

c
↓A
p

, u selain: A,
⇑ Ctx
opa lvar

, u selain: A,
p

u
↓A
p

, x : A,
⇑ Ctx
opa ivar

, x : A,
p

x
↓A
(Tidak ada aturan untuk
)
p

M
↓ A&B
opa fst
p
FST
M
↓A
p

M
↓ A&B
opa snd
p
SND
M
↓B
p

M
↓ A −◦ B
p

N
⇑ Yang
=
opa lapp
p

M selain N
↓B
p

M

x:A
.B
p
N
⇑ Yang
opa iapp
p

MN
↓ [N /x]B
GBR. 2.
Precanonical pemotongan sistem untuk
λ
&
, benda-benda.
asumsi. Tersisa dua aturan yang mendefinisikan preatomic derivability untuk tingkat objek. Semantik
dari kesetaraan aturan opa eq adalah mirip dengan precanonical rekan.
Paksaan dari precanonical untuk preatomic benda, opa c, adalah terbatas pada jenisnya. Ini berarti
bahwa destruktor dapat langsung diterapkan untuk konstruktor; yaitu, objek yang dapat berisi redices. Jika kita mengabaikan
aturan ini (atau membatasi untuk base tipe, yang setara), kita memperoleh justru kanonik bentuk, yang
, mereka
η-long bentuk-bentuk yang tidak mengandung β-redices.
Aturan mengenai linier benda-benda dalam Gambar. 2 menentukan perilaku dari jenis linier. Jika kita mengabaikan benda-
benda
dan perbedaan antara precanonical dan preatomic penilaian, mereka sesuai dengan spesifikasi yang
akrab aturan untuk linear connectives
, &, dan
−◦, disajikan dalam alam deduksi gaya. Ini
adalah mudah untuk membuktikan kesetaraan biasa sequent formulasi. Benda-benda yang muncul di sebelah kiri
dari jenis catatan struktur alami pengurangan bukti untuk linear sesuai rumus.
Tergantung jenis fungsi
x:A
.B bahwa λ
&
mewarisi dari
λ generalisasi kedua intuitionistic
implikasi Yang
→ B (lazim didefinisikan sebagai !A −◦B dalam logika linier) dan universal quantifier ∀x.B,
mana Yang memainkan peran jenis (intuitionistic) variabel x. Dengan penafsiran ini,
λ
&
meliputi semua connectives dan quantifiers bebas yang dihasilkan fragmen dari bahasa
linier turun-temurun Harrop formula, di mana bahasa pemrograman Lolli didasarkan [28]. Selain itu,
λ
&
menawarkan fitur karakteristik dari jenis teori: tinggi-fungsi order, bukti istilah, dan jenis
keluarga diindeks oleh objek sewenang-wenang, yang mungkin lebih tinggi-order dan linear.
Mengakui lainnya linear connectives dalam bahasa ini bermasalah sejak tersisa operator
linear logika akan memperkenalkan di equational teori bentuk pengurangan dikenal sebagai komuter
konversi, yang akan menghancurkan kemungkinan mencapai unik bentuk normal. Di sisi lain,
semantik lainnya linear connectives dapat dengan mudah ditiru di
λ
&
, seperti yang ditunjukkan dalam [42].
26
CERVESATO DAN PFENNING
Tanda tangan
sp dot
p

· ⇑ Sig
p

⇑ Sig
·
p

A

JENIS
sp obj
p

, c : A ⇑ Sig
p

⇑ Sig
·
p

K
⇑ Jenis
sp fam
p

, a : K ⇑ Sig
Konteks
p

⇑ Sig
cp dot
p

· ⇑ Ctx
p

⇑ Ctx
p

A

JENIS
cp int
p

, x : A ⇑ Ctx
p

⇑ Ctx
p

A

JENIS
cp lin
p

, u selain: A ⇑ Ctx
Jenis
p

⇑ Ctx
kpc jenis
p
JENIS

⇑ Jenis
,x:A
p

K
⇑ Jenis
kpc dep
p

x:A
. K ⇑ Jenis
Jenis
/tipe keluarga
p

P

JENIS
fpc yang
p

P

JENIS
p

⇑ Ctx
fpc teratas
p


JENIS
p

A

JENIS
p

B

JENIS
fpc dengan
p

A&B

JENIS
p

A

JENIS
p

B

JENIS
fpc lemas
p

A
−◦ B ⇑
JENIS
,x:A
p

B

JENIS
fpc dep
p

x:A
.B⇑
JENIS
............................................................................................
(Tidak ada fpc eq, tidak ada fpa c)
p

P
↓K
K
≡K
p

K
⇑ Jenis
fpa eq
p

P
↓K
p
,a:K ,

⇑ Ctx
fpa con
p
,a:K ,

a
↓K
p

P

x:A
.K
p

N
⇑ Yang
fpa iapp
p

PN
↓ [N /x]K
GBR. 3.
Precanonical pemotongan sistem untuk
λ
&
, macam dan jenis.
Kita sekarang beralih ke penilaian memvalidasi jenis, macam, konteks, dan tanda tangan, dirawat di Gambar. 3. Yang
aturan mendefinisikan precanonical penghakiman
p
A

JENIS
hanya menentukan bahwa setiap valid jenis dalam
sistem harus hasil dari kombinasi dari jenis dasar (aturan fpc a) dengan cara ketik konstruktor
,
−◦, &, dan
(aturan fpc dep, fpc lemas, fpc, dan fpc atas, masing-masing). Melihat perbedaan
dalam aturan mengenai dua jenis fungsi konstruktor: validitas Yang di
x:A
.B secara implisit
dipastikan ketika memeriksa validitas dari konteks premis; sebaliknya, tipe A di A
−◦ B adalah
untuk dapat divalidasi secara jelas karena tidak ada asumsi dimasukkan ke dalam konteks. Aturan untuk preatomic
jenis keluarga penghakiman
p
A
↓ K hanya memverifikasi bahwa jenis dasar sintaksis terbentuk dengan baik dan
menghormati semacam deklarasi mereka memimpin tipe keluarga konstan (aturan fpa iapp dan fpa con). Pemberitahuan
adanya kesetaraan aturan: fpa eq. Akhirnya, aturan yang mendefinisikan precanonical jenis penilaian,
p
K
⇑ Jenis, periksa bahwa setiap jenis muncul di K berlaku. Perhatikan bahwa penghakiman ini dipanggil
hanya ketika memvalidasi tanda tangan. Yang tersisa aturan dalam Gbr. 3 mempertimbangkan tanda tangan dan konteks. Mereka
menentukan bahwa tanda tangan adalah sah jika tipe atau jenis dari setiap item dinyatakan dalam itu sendiri berlaku. Demikian
pula,
dalam konteks ini berlaku jika jenis dari masing-masing asumsi tersebut adalah valid.
Dalam aturan di Ara. 2 dan 3, jenis dan macam selalu diperiksa menggunakan murni intuitionistic konteks.
Ini memiliki efek mencegah valid dari jenis yang mengandung bebas linear variabel (meskipun terikat
linear variabel-variabel yang mengaku). Oleh karena itu, meskipun indeks-tipe keluarga secara umum linear
LINEAR KERANGKA KERJA LOGIS
27
benda, istilah-istilah ini dapat merujuk hanya untuk konteks variabel yang intuitionistic. Kita mengatakan bahwa indeks
linear ditutup. Melonggarkan pembatasan ini akan memerlukan mengakui linear tergantung tipe fungsi pada
bahasa kita, sesuai dengan linear bilangan. Penyelidikan awal menunjukkan bahwa hal ini akan
menyebabkan luar biasa komplikasi dalam mengetik aturan bahasa, tidak untuk berbicara tentang meta-teori.
Sebagai contoh, kita tidak bisa mengharapkan murni intuitionistic konteks lagi ketika mencari sebuah variabel,
kontek membelah akan mengandalkan mengetik penilaian sejak buta split mungkin melanggar linear dependensi,
dan linear tergantung jenis telah diamati untuk berinteraksi dalam cara yang kompleks dengan lain jenis
konstruktor, khususnya
. Di sisi lain, sangat sedikit dari contoh kita bisa mengambil keuntungan
linier versi
. Dalam setiap kasus, menggunakan intuitionistic rekan di tempat yang tidak substansial
mengubah dihasilkan representasi, atau kecukupan. Kesimpulannya, meskipun tergantung versi
−◦
muncul menguntungkan untuk aplikasi tertentu, kita dituntun untuk percaya bahwa akibat komplikasi dalam
meta-teori bahasa yang mungkin lebih besar daripada potensi keuntungan.
Kami mengklasifikasikan aturan dalam buah Ara. 2 dan 3 ke esensial dan nonesensial aturan. Kita menghitung antara kedua
kelas jenis konversi aturan (opc eq, opa eq, dan fpa eq) dan pemaksaan opa c. Semua aturan-aturan lain yang
dianggap penting. Tugas utama di bagian ini kertas akan menyembunyikan atau menghilangkan
mengeluarkan aturan
λ
&
. Menyembunyikan kesetaraan aturan akan mengizinkan mudah bukti decidability
dari jenis pemeriksaan untuk bahasa ini. Menunjukkan bahwa aturan opa c dapat dihilangkan (dalam arti bahwa
jenis ini dihuni dengan aturan ini jika dan hanya jika dihuni tanpa itu) jumlah untuk menunjukkan bahwa kanonik
bentuk-bentuk yang ada untuk semua benda dan jenis. Ini adalah kondisi yang diperlukan untuk mengadopsi
λ
&
sebagai underlying
jenis teori kerangka logis LLF.
Kita sekarang beralih ke pengurangan semantik
λ
&
, sebagian yang didefinisikan dalam Gambar. 4. Gagasan defini-
nasional kesetaraan yang kita anggap adalah relasi ekivalensi
≡ dibangun pada keselarasan hubungan →.
Dasar dari harmoni terdiri dari
β-pengurangan aturan:
β
fst
:
FST
M
,N→M
β
lapp
: (Selain
λu : A.M)selainN → [N /u]M
β
snd
:
SND
M
,N→N
β
iapp
:(
λx : A.M)N → [N /x]M
Seperti biasa, kita sebut ekspresi yang muncul pada sisi kiri panah redices. Hanya mungkin
redex di
λ adalah β
iapp
. Kami mengadopsi standar terminologi dan istilah U yang tidak mengandung
β-redices
normal, atau
β-normal. Definisi ini mencakup segera untuk konteks dan tanda tangan. Tugas lain dari
bagian ini akan menunjukkan bahwa setiap valid badan di
λ
&
dapat direduksi ke bentuk normal dan
bahwa ini normal bentuk ini sendiri berlaku di LLF. Akhirnya, istilah U adalah direduksi jika ada derivasi dari
penghakiman U
→VcV.
2.3. Equational Teori
Sekarang kita menyerang formal studi
λ
&
. Kami bertujuan untuk membuktikan bahwa jenis ini teori memiliki semua
sifat yang diinginkan bahwa formalisme harus memiliki dalam rangka untuk menjadi cocok meta-bahasa untuk
kerangka logis. Secara khusus, kami akan menunjukkan bahwa
λ
&
sangat normalisasi, mengakui unik
bentuk normal, dan yang typechecking adalah decidable untuk bahasa ini. Sifat ini bergantung pada besar
jumlah lemmas dan itu adalah sebuah tantangan tersendiri untuk mengatur keseluruhan meta-teori dalam linear
urutan hasil dengan sederhana dependensi. Organisasi ini krusial bergantung pada rincian
rumusan semantik kami jenis-teori. Penerapan precanonical sistem yang membebankan
meluas, bukan hanya memungkinkan melalui aturan tambahan, menyederhanakan pengembangan
meta-teori
λ
&
jauh. Kepala sekolah konsekuensi dari pilihan ini adalah bahwa definisi
kesetaraan dapat didasarkan sepenuhnya pada
β-pengurangan dan, yang lebih penting, dapat didefinisikan secara independen dari
mengetik, seperti yang ditunjukkan dalam Gbr. 4. Oleh karena itu, analisis equational teori
λ
&
dapat menjadi con-
menyalurkan pada yang benar-benar mandiri cara. Memang, hasil yang akan kami sajikan dalam bagian ini, secara
khusus Gereja–Rosser teorema, berlaku sewenang-wenang
λ
&
syarat dan tidak hanya untuk orang-orang yang
berlaku sesuai dengan mengetik aturan bahasa kita. Ini rupanya tidak perlu umum adalah yang pertama
langkah menuju menguraikan meta-teori
λ
&
. Telah kita santai meluas, dengan mempertimbangkan-
ing equational teori mengandung
η-konversi aturan, seperti yang biasanya dilakukan dalam literatur, kami
telah dipaksa untuk saling memberikan definisi rekursif untuk mengetik dan definisi yang sama-
ity penilaian. Secara khusus, equational teori yang dihasilkan formalisme tidak bisa belajar di
28
CERVESATO DAN PFENNING
Benda-benda
Congruences
atau con

c
−→ c
atau var

x
−→ x
atau unit

−→
M
−→ M
atau fst
FST
M
−→
FST
M
M
−→ M
atau snd
SND
M
−→
SND
M
M
−→ M
N
−→ N
atau pasangan

M
, N −→ M , N
M
−→ M
N
−→ N
atau lapp

M selain N
−→ M selain N
A
−→ A
M
−→ M
atau llam

Selainλu : A. M −→ selainλu : A . M
M
−→ M
N
−→ N
atau iapp

MN
−→ M N
A
−→ A
M
−→ M
atau ilam
λx : A. M −→ λx : A . M
............................................................................................
β−pengurangan

M
−→ M
atau beta fst
FST
M
, N −→ M
N
−→ N
atau beta snd
SND
M
, N −→ N
M
−→ M
N
−→ N
atau beta lin

( Selain
λu : A. M) selain N −→ [N /u]M
M
−→ M
N
−→ N
atau beta int

(
λx : A. M) N −→ [N /x]M
Jenis
/jenis keluarga
Congruences
fr con

a
−→ a
P
−→ P
N
−→ N
fr iapp

PN
−→ P N
fr top

−→
A
−→ A
B
−→ B
fr dengan

A&B
−→ A & B
A
−→ A
B
−→ B
fr lemas

A
−◦ B −→ A −◦ B
A
−→ A
B
−→ B
fr dep

x:A
. B −→
x:A
.B
............................................................................................
(Tidak ada
β-pengurangan untuk jenis dan tipe keluarga)
Jenis
Congruences
kr jenis
JENIS

−→
JENIS
A
−→ A
K
−→ K
kr dep

x:A
. K −→
x:A
.K
............................................................................................
(Tidak ada
β-pengurangan untuk jenis)
GBR. 4.
Paralel bersarang pengurangan untuk
λ
&
.
isolasi dan sebagian besar dari meta-teori yang akan runtuh dalam satu padat teorema yang terdiri dari discour-
penuaan jumlah yang saling tergantung dan offline. Kita akan kembali ke titik ini pada akhir
bagian.
Seperti yang sudah kita antisipasi, hasil utama dari bagian ini akan menjadi Gereja–Rosser teorema
untuk paralel bersarang pengurangan. Kita akan bergantung pada properti ini dalam rangka untuk membuktikan keunikan normal
bentuk, dan oleh karena itu decidability dari equational teori LLF.
Bukti-bukti dari hasil penelitian pada bagian ini mengadaptasi teknik ini awalnya dirancang oleh Tait dan Martin-Lof
tradisional untyped
λ-kalkulus [3]. Sangat rinci presentasi dari metode tersebut, serta
formalisasi dalam Elf, dapat ditemukan di [40]. Kita menyimpang dari presentasi ini dalam rangka untuk memperhitungkan
semua entitas LLF yang berpartisipasi dalam definisi paralel bersarang pengurangan. Secara khusus, kami memperlakukan
linear konstruksi bahasa dan bentuk-bentuk baru dari
β-pengurangan mereka memperkenalkan; kita juga perlu
mempertimbangkan tipe dan jenis.
Paralel bersarang strategi pengurangan didefinisikan dalam Gambar. 4 didasarkan pada empat
β-pengurangan aturan
atau beta fst, atau beta snd, atau beta lin, dan atau beta int. Semua aturan lainnya yang congruences yang memungkinkan
menerapkan pengurangan untuk subterms. Perhatikan bahwa
β-pengurangan aturan directional: ekspresi
sisi kiri tanda panah adalah
β-redex, dan kami suka berpikir tentang ekspresi pada sisi kanan
sebagai "sederhana," bahkan jika itu mungkin lebih besar, atau lebih banyak mengandung
β-redices, dari istilah di sisi lain
anak panah.
LINEAR KERANGKA KERJA LOGIS
29
Kunci hasil dalam studi definisi kesetaraan
λ
&
ini yang mengganti variabel dalam
direduksi jangka mempertahankan reducibility. Properti ini diformalkan dan umum berikut
lemma, di mana
R :: J digunakan sebagai singkatan untuk "ada derivasi R penghakiman J."
L
EMMA
2.1 (Substitusi).
Berasumsi bahwa ada suatu derivasi untuk N
→ N . Kemudian,
saya
. Jika R :: U → U , maka [N /x]U → [N /x]U ;
ii
. Jika R :: U →

U
, maka [N /x]U →

[N
/x]U ;
iii
. Jika R :: U ≡ U , maka [N /x]U ≡ [N /x]U .
Bukti.
Kita lanjutkan dengan induksi pada
R dalam setiap kasus.
Istilah dapat mengandung beberapa
β-redices dan paralel strategi pengurangan dapat mengurangi salah satu dari mereka,
mungkin nol atau lebih dari satu. Oleh karena itu, istilah yang U dapat secara umum mengurangi jumlah berbeda hal
U
1
,...,U
n
. Namun, properti yang mendasar dari strategi ini adalah bahwa tidak selalu ada istilah umum
V yang semua istilah-istilah ini dapat direduksi. Hal ini dikenal dalam literatur sebagai Diamond property dan
ini dinyatakan di bawah ini.
L
EMMA
2.2 (Diamond property).
Jika
R :: U → U dan R :: U → U , maka ada istilah seperti V
yang U
→ V dan U → V .
Bukti.
Oleh induksi pada struktur U dan inversi pada
R dan R . Fungsional β-pengurangan
ditangani melalui substitusi lemma.
Meskipun dijalankan paralel bersarang pengurangan memiliki kemungkinan mengurangi beberapa
β-redices, hal ini
tidak cukup pada umumnya untuk menghasilkan bentuk normal untuk jangka waktu, bahkan saat itu ada. Sebagai contoh,
berikut penilaian menunjukkan di sisi sebelah kanan yang paling sederhana istilah ekspresi pada sisi kiri
dapat dikurangi dalam satu langkah:
(
λx : (a → a) → (a → a). xc)(λy : a → a. y) → (λy : a → a. y)c.
Perhatikan bahwa satu langkah lebih lanjut akan cukup untuk mendapatkan bentuk normal dari ekspresi itu, c.
Dalam rangka untuk mencapai bentuk normal ketika mereka ada, kita perlu rantai paralel bersarang pengurangan oleh
dengan penutupan transitif. Pertemuan meluas diamond property untuk


sedangkan Gereja-
Rosser teorema menyatakan bahwa hal itu selalu mungkin untuk mengurangi setara badan kembali ke istilah umum.
Dua sifat yang dinyatakan di bawah ini. Mereka mengikuti dari diamond property berdasarkan umum
teknik [16].
T
HEOREM
2.1 (Gereja–Rosser).
Pertemuan:
Jika U


U dan U


U
, maka ada istilah V seperti yang U →

V
dan U


V.
Gereja-Rosser:
Jika U
≡ U , maka ada istilah V seperti yang U →

V dan U


V.
Sifat di atas berlaku sewenang-wenang hal, mungkin sakit-diketik atau secara umum tidak sah menurut
yang precanonical sistem di atas (memang, kami contoh di atas terdapat subterm
λy : a → a. y yang
tidak
η-diperluas). Meskipun definisi kesetaraan selalu dipanggil dengan sah, dalam hal ini aturan-aturan dalam
buah Ara. 2 dan 3, intermediate hal yang berpartisipasi dalam kesetaraan derivasi mungkin tidak precanonical.
Kami akan menunjukkan bahwa adalah mungkin untuk membatasi menengah syarat yang dihasilkan selama definisi kesetaraan
tes untuk entitas yang valid.
Sewenang-wenang istilah yang tidak pada umumnya memiliki bentuk normal. Contoh klasik adalah istilah (
λx : a. x x)
(
λx : a. x x). Istilah ini mengurangi untuk dirinya sendiri dan oleh karena itu tidak mungkin untuk menghilangkan β-redex
mengandung
dengan pengurangan. Namun, setiap yang berlaku istilah, yaitu, setiap istilah yang muncul dalam derivable mengetik penilaian
kami precanonical sistem, mengakui bentuk normal. Selain itu, kuat normalisasi teorema terbukti
di bawah ini akan menunjukkan bahwa urutan di mana
β-redices berkurang tidak penting.
30
CERVESATO DAN PFENNING
Kami menyimpulkan bagian ini dengan sebuah diskusi singkat tentang pengertian dari definisi kesetaraan yang meliputi
aturan untuk
η-konversi. Jika kita hanya menambahkan η-aturan yang didasarkan pada pengurangan berikut,
η
pasangan
:
FST
M
,
SND
M
→M
η
llam
: Selain
λu : A. M selain u → M
η
ilam
:
λx : A. M x → M,
dengan u dan x tidak terjadi gratis dalam M dalam dua aturan, maka Gereja–Rosser properti akan berhenti
untuk mengadakan: hal ini diamati di [27] bahwa istilah
λx : A. (λy : B. M)x mengurangi via η
ilam
untuk
λy : B. M dan
β untuk λx : A. [x/y]M, yaitu λy : A. M; namun, dua sehingga hal ini dapat disamakan hanya jika A dan B
memiliki kesamaan mengecil, yang tidak terjadi untuk beberapa sakit-diketik hal.
Oleh karena itu, sederhana
η-konversi aturan di atas tidak cukup untuk menangkap gagasan definisi
kesetaraan kita tertarik. Situasi ini benar-benar lebih serius dari itu: di hadapan
tipe unit,
dalam kasus kami, equational teori yang kita butuhkan tidak dapat axiomatized dengan cara skematis
pengurangan aturan-aturan seperti di atas. Memang,
adalah satu-satunya penghuni jenis
dan oleh karena itu setiap objek
jenis
ini
η-setara dengan
. Namun, menambahkan aturan M

ini jelas tidak sehat karena tidak
mengambil mengetik informasi ke dalam akun. Pendekatan yang benar untuk masalah ini memerlukan diketik definisi
kesetaraan penilaian. Tertentu inferensi aturan yang menangani
η-ekspansi yang disebut meluas aturan
dan hanya samar-samar menyerupai
η-konversi disajikan di atas. Tampaknya bahwa (untyped) η-aturan yang dapat berfungsi
sebagai dasar dari definisi kesetaraan jenis teori yang hanya sangat terbatas keadaan.
2.4. Sifat-Sifat Dasar
Tujuan dari bagian ini adalah untuk menggambarkan sifat dasar dari precanonical pengurangan sistem
yang disajikan sebelumnya. Banyak dari hasil ini menarik karena mereka memberikan wawasan tentang
jenis teori LLF melampaui apa yang terlihat dari inferensi aturan. Selain itu, sebagian besar
properti yang akan memainkan peran dalam perkembangan bukti decidability dari jenis pemeriksaan untuk
bahasa.
Pertama, kami merangkum sifat pokok mengenai kejadian dari variabel-variabel bebas. Panjang
bukti ini lemma dapat ditemukan di [6]. Hanya sejumlah selanjutnya hasil akan lagi bebas
variabel atau domain secara eksplisit. Dalam membaca pernyataan ini, ingat kita bisa diam-diam mengubah nama variabel terikat
dan bahwa nama-nama dari semua variabel yang dideklarasikan dalam sebuah konteks yang berbeda. Selain itu, kami
mengingatkan pembaca
bahwa
p
U
⇑↓ V adalah singkatan untuk precanonical atau preatomic penilaian pada tingkat dari benda-benda,
jenis, dan jenis.
L
EMMA
2.3 (variabel Bebas).
aku.
Jika
p
U
⇑↓ V, maka FV(U ) ⊆ dom
dan FV(V )
⊆ dom .
ii.
Jika
p
U
⇑↓ V atau
p
⇑ Ctx, maka FV( ) ⊆ dom .
iii.
Jika
p
U
⇑↓ V atau
p
⇑ Ctx atau
p
⇑ Sig, maka FV( ) =
.
iv.
Jika
, x :selain: A,
p
U
⇑↓ V atau
p
, x :selain: A,
⇑ Ctx, maka FV(A) ∪ FV( ) ⊆ dom .
Ini lemma memberikan beberapa wawasan tentang bagaimana dan di mana variabel-variabel bebas yang dapat muncul di derivable
penghakiman di
λ
&
. Oleh (i) dan (ii), kita mendapati bahwa semua variabel bebas yang terjadi dalam keputusan yang valid
harus
dinyatakan dalam konteksnya. Properti (iv) menunjukkan bahwa variabel-variabel bebas dalam asumsi harus telah
dinyatakan dalam bagian dari konteks yang lebih ke kiri; yaitu, asumsi dapat bergantung hanya pada deklarasi
yang dibuat di hadapan mereka. Butir (iii) di lemma menyatakan sebaliknya bahwa tanda tangan tidak dapat berisi variabel-
variabel bebas.
Semua sifat ini sudah memegang di
λ . Kekhasan bahasa kita muncul ketika menganalisis
peran variabel-variabel bebas yang diasumsikan linear. Karena konteks penilaian untuk jenis dan macam
ketat intuitionstic, (i) memerlukan yang bebas linear variabel-variabel yang diizinkan hanya di berlaku syarat-syarat dari
tingkat objek. Selain itu, (ii) menyiratkan bahwa tidak ada asumsi dalam konteks dapat bergantung pada satu variabel linear.
Ini kendala yang ketat adalah konsekuensi dari properti dari bahasa kita perijinan hanya linear
ditutup ekspresi sebagai indeks untuk jenis keluarga.
Kami sekarang hadir sejumlah sifat yang dapat dilihat diterima sebagai aturan inferensi. Pertama kita
memiliki asumsi bahwa dalam konteks dapat ditukar secara bebas asalkan mereka tidak melanggar dependensi
LINEAR KERANGKA KERJA LOGIS
31
di antara mereka. Lebih tepatnya, jika x :selain: A segera mendahului y :selain: B dan x tidak terjadi gratis di B, maka
urutan relatif dari dua asumsi yang dapat ditukar. Ide ini adalah umum di lemma
berikut. Permutasi tergantung pada melemahnya, yang dengan sendirinya membutuhkan permutasi dalam bukti. Oleh karena itu,
kita perlu negara dan membuktikan investasi properti pada waktu yang sama. Perhatikan bahwa melemahnya melarang
menambahkan linear
asumsi ke dalam konteks.
L
EMMA
2.4 (sifat Struktural dari konteks).
Permutasi :
aku.
Jika
P :: ( ,
, x :selain: A,
p
U
⇑↓ V ) dan P :: (
p
A

JENIS
)
, maka
, x :selain: A
,
,
p
U
⇑↓ V .
ii.
Jika
P :: (
p
,
, x :selain: A,
⇑ Ctx) dan P :: (
p
A
JENIS
)
, maka
p
, x :selain: A,
,
⇑ Ctx.
Melemahnya:
Jika
P :: (
p
U
⇑↓ V ) dan P :: (
p
, ⇑ Ctx), kemudian
,
p
U
⇑↓ V .
Bukti.
Oleh simultan induksi pada
P dan, dalam kasus permutasi, pada panjang
.
Permutasi properti memiliki konsekuensi penting pada linear asumsi dalam konteks. Sebagai
kami dijelaskan sebelumnya, tidak ada asumsi dalam konteks
dapat bergantung pada satu variabel linear. Oleh karena itu,
permutasi lemma memungkinkan kami untuk menggeser semua variabel ini untuk akhir
. Mari kita menulis selain untuk linear
asumsi dari konteks
. Perhatikan bahwa, karena mungkin ketergantungan pada intuitionistic variabel,
Selain belum tentu konteks yang valid. Maka kita dapat menulis
sebagai (
, Selain ), atau bahkan sebagai ", selain " seperti dalam
beberapa
presentasi dari logika linier yang menjaga intuitionistic dan linear asumsi dalam konteks yang berbeda
(dipisahkan oleh ";") [22, 28, 45]. Selain itu, karena variabel-variabel dalam domain selain tidak dapat terjadi dalam selain ,
kita bebas untuk mengubah urutan isi bagian ini dari konteks. Oleh karena itu, selain dapat diperlakukan sebagai suatu multiset.
Kita bisa mengharapkan lebih lanjut properti, penguatan, untuk menjadi bagian dari pernyataan dari lemma di atas;
kehadiran properti ini benar-benar akan membuat bukti itu mudah, tapi sayangnya kami tidak memiliki
lagi alat-alat untuk membuktikan itu.
Penguatan menyatakan bahwa, setiap kali variabel dinyatakan dalam konteks tetapi tidak terjadi gratis setiap-
mana dalam penilaian, maka dapat dengan aman dibuang dan penghakiman masih akan dibuktikan. Namun,
penguatan memerlukan kuat normalisasi teorema, terbukti dalam Bagian 2.5. Meskipun variabel
tidak terjadi di derivable penghakiman, itu adalah mungkin bahwa aplikasi dari salah satu definisi equiv-
alence aturan menghasilkan suatu istilah yang mengandung itu, sehingga tidak penghakiman itu sendiri, tapi turunannya
menyebutkan hal itu.
Ini menggunakan kesetaraan yang tidak penting dan dapat dihapus dari derivasi. Namun, kita akan
dapat membuktikan ini hanya sebagai produk dari kuat normalisasi.
Berikutnya, kami hadir teknis hasil bahwa, meskipun kurang penting dalam dirinya sendiri, memainkan penting
peran dalam pernyataan kecukupan theorems untuk representasi dari objek itu. Secara khusus,
ketika meta-teori dari objek bahasa mengharapkan objek tertentu untuk berperilaku seolah-olah mereka linear
hipotesis, yang memadai encoding akan membutuhkan gratis linear variabel-variabel dalam indeks dasar jenis. Hal ini
tidak dapat dicapai dalam LLF karena bahasa kita tidak mengakui linear tergantung jenis. Kami melewati masalah
dengan encoding ini linear entitas sebagai intuitionistic asumsi. Linearitas kondisi yang dapat diperiksa pada
awal tahap perhitungan, atau disimpan sebagai intrinsik invariants dari objek sistem deduktif. Ini
teknik yang memungkinkan kita untuk memberikan yang efektif representasi kompleks linear penilaian tanpa berurusan
dengan komplikasi linear tergantung jenis. Contoh-contoh yang menunjukkan bagaimana masalah ini ditangani di LLF
dapat ditemukan di [6].
Lemma di bawah ini menyatakan bahwa setiap kali derivable istilah menyebutkan linear variabel, kita dapat
membuatnya intuitionistic. Secara intuitif, linear variabel-variabel yang harus digunakan sekali saat intuitionistic variabel-variabel
yang dapat
digunakan sebanyak yang diinginkan.
L
EMMA
2.5 (Promosi).
Jika
P :: ( , u selain: A,
p
M
⇑↓ B), maka
, u : A,
p
M
⇑↓ B.
Bukti.
Oleh induksi pada struktur
P.
Unsur penting dari bukti-bukti dari teorema-teorema berikut ini adalah lemmas yang kita sebut transitivitas,
berikut istilah dalam [27]. Hasil ini izin menafsirkan asumsi-asumsi sebagai tempat-pemegang untuk
32
CERVESATO DAN PFENNING
tidak ditentukan panggal. Setiap kali dapat dibuktikan penilaian tergantung pada asumsi x :selain: A, setiap derivasi
dari istilah N dari jenis Yang memuaskan konteks tertentu kondisi-kondisi yang dapat diganti menjadi asli derivasi
dan mempertahankan keabsahannya. Oleh karena itu, penilaian yang berisi asumsi-asumsi yang dapat dianggap sebagai parametrik
ekspresi. Yang transitivitas lemmas menentukan cara untuk instantiate parameter ini.
Hasil ini memberikan kontribusi untuk kesesuaian
λ
&
sebagai meta-bahasa logical framework
LLF. Mereka adalah pembenaran formal representasi dari hipotesis parametrik dan penilaian,
yang begitu umum dalam sistem formal, sederhana, dan tergantung pada tipe fungsi masing-masing. Yang transitivitas
lemmas, bersama-sama dengan inversi kata pengantar singkat berikut, mendalilkan bahwa operator ini memiliki semantik yang
meniru perilaku bentuk-bentuk penghakiman. LLF meluas korespondensi ini, sudah hadir di
LF, untuk menangkap hipotetis penilaian di mana hipotesis adalah linear.
Yang transitivitas lemmas yang erat terhubung ke beberapa hasil dalam logika dan jenis teori. Dalam
interpretasi tergantung pada bagian mana dari penilaian kami fokus perhatian kita pada. Dari sudut
pandang
λ-kalkulus tertanam dalam bahasa kita, ini lemmas dapat dilihat sebagai substitusi
prinsip karena mereka menggambarkan bagaimana variabel-variabel yang bisa diganti menjadi berlaku ketentuan sambil menjaga
validitas. Dalam hal ini, mereka terkait erat dengan pengertian subjek pengurangan untuk benda-benda yang fungsional.
Dari perspektif logis, di bawah interpretasi jenis seperti rumus, transitivitas lemmas
negara diterimanya dari aturan dipotong untuk intuitionistic dan linear formula. Setiap kali formula B
bergantung pada asumsi Yang, bukti validitas dari Satu, mungkin atas dasar lebih lanjut sebagai-
sumptions, dapat dimasukkan langsung dalam ekuivalen bukti B yang tidak menyebutkan Satu di antara
hipotesis.
Linear dan intuitionistic asumsi-asumsi yang perlu diperlakukan secara terpisah karena mereka memerlukan berbagai
penataan konteks. Oleh karena itu, kita membedakan dua transitivitas lemmas. Ini sesuai dengan
membedakan dua substitusi atau prinsip-prinsip untuk memiliki linear dan intuitionistic aturan dipotong (lihat [29,
42]).
L
EMMA
2.6 (Intuitionistic transitivitas).
aku.
Jika
p
N
⇑ A dan P:: ( , x : A,
p
U
⇑↓ V ), kemudian , [N /x]
p
[N
/x]U ⇑↓ [N /x]V.
ii.
Jika
p
N
⇑ A dan P :: (
p
, x : A,
⇑ Ctx), kemudian
p
, [N /x]
⇑ Ctx.
Bukti.
Oleh induksi pada struktur
P.
Kita sekarang negara linear transitivitas lemma. Perhatikan bahwa, berbeda dengan intuitionistic kasus,
konteks dalam sehingga penilaian bisa lebih besar dari konteks yang disebutkan dalam premis.
L
EMMA
2.7 (Linear transitivitas).
Jika
p
N
⇑ A dan P :: ( , u selain: A,
p
M
⇑↓ B), maka ,
p
[N
/u]M ⇑↓ B.
Bukti.
Kita lanjutkan dengan induksi pada struktur
P. Melemahnya diperlukan dalam bukti ini.
Kumulatif validitas lemma di bawah ini menyatakan bahwa setiap kali penghakiman adalah derivable, semua entitas
disebutkan di dalamnya adalah diri yang masih berlaku, yaitu, memiliki derivasi memvalidasi mereka.
L
EMMA
2.8 (Konsistensi).
aku.
Jika
P ::
p
M
⇑↓ A, maka
p
A

JENIS
.
ii.
Jika
P ::
p
A
⇑↓ K , maka
p
K
⇑ Jenis.
iii.
Jika
P ::
p
U
⇑↓ V, maka
p
⇑ Ct x.
iv.
Jika
P ::
p
U
⇑↓ V atau P ::
p
⇑ Ctx, kemudian
p
⇑ Sig.
Bukti.
Oleh induksi pada struktur
P. Kita perlu intuitionistic transitivitas dalam rangka untuk menangani
tergantung jenis fungsi konstruktor.
Tradisional Kari–Howard interpretasi associates jenis dengan rumus dan istilah-istilah dengan bukti-bukti
dari rumus tersebut. Jelas, satu formula dapat memiliki lebih dari satu bukti, dinyatakan dalam jenis teori
dengan mengakui beberapa objek dari jenis yang sama, mungkin jauh lebih banyak. Hal ini juga sejalan dengan
melihat dari jenis set dan syarat-syarat sebagai unsur-unsur mereka. Dalam interpretasi logis, kami berharap setiap bukti untuk
menjadi bukti dari rumus tunggal. Properti ini mungkin tidak diinginkan di semua jenis teori, tapi itu berlaku
dalam kasus seperti bahasa LF dan LLF sehingga benda-benda yang memiliki makna independen dari jenis
LINEAR KERANGKA KERJA LOGIS
33
berasal dari mereka. Keunikan, dalam kerangka kerja ini, dianggap modulo definisi kesetaraan. Memang,
setiap berlaku
λ
&
objek-tingkat term memiliki jenis yang unik. Akomodasi ini, yang meluas secara alami untuk jenis,
penting dalam kami bukti decidability dari jenis pemeriksaan. Hal ini secara resmi dinyatakan dalam berikut
lemma.
L
EMMA
2.9 (Keunikan dari tipe dan jenis).
aku.
Jika
P ::
p
M
⇑↓ A dan P ::
p
M
⇑↓ A dengan
|FV(M)
=
|FV(M)
dan di mana
panah tidak perlu untuk mencocokkan
, maka A ≡ A .
ii.
Jika
P ::
p
A
⇑↓ K dan P ::
p
A
⇑↓ K mana panah tidak perlu untuk mencocokkan,
kemudian K
≡K.
Bukti.
Oleh induksi pada struktur
P dan P . Idenya adalah untuk memeriksa ini derivasi dari
bawah ke atas sampai pengantar atau penghapusan aturan terkena; kemudian kita menerapkan induksi
hipotesis pada subderivations.
Diberikan sebuah contoh khusus dari penghakiman, bukti teknik yang dikenal sebagai inversi memungkinkan mengidentifikasi
sejumlah aturan inferensi yang kesimpulannya pertandingan penghakiman ini. Masing-masing sesuai aturan
merupakan alternatif kasus dan penilaian yang diperoleh oleh instansiasi dari tempat yang dapat digunakan dalam
rangka untuk menarik lebih lanjut kesimpulan. Dalam rangka untuk membuktikan bahwa penghakiman adalah derivable, itu sudah
cukup
untuk menunjukkan derivasi untuk tempat dari semua sesuai aturan. Teknik ini sangat umum dan dapat
diterapkan dalam sistem kami. Sistem deduktif memiliki ciri khas yang setiap aturan inferensi adalah
sepenuhnya ditentukan oleh bentuk dari istilah tertentu dalam kesimpulan yang disebut syntax-directed. Mereka
sangat berguna karena pencocokan istilah ini menghasilkan aturan tunggal. Oleh karena itu, lanjut kesimpulan yang dapat
ditarik berdasarkan premis, tanpa harus mempertimbangkan alternatif-alternatif. Aturan penting dalam
precanonical deduktif sistem untuk
λ
&
ini adalah syntax-directed sehubungan dengan istilah mereka memvalidasi.
Namun, persamaan-persamaan dan aturan yang menjembatani preatomic dan precanonical penilaian tidak
mengubah istilah yang berasal dan karena itu dapat dilihat sebagai filter atau pipa yang menghubungkan penting
aturan, dari sudut pandang istilah ini. Sebuah analisis rinci dari aturan ini menunjukkan bahwa kita secara tidak langsung dapat
memulihkan bentuk yang lebih kuat dari inversi. Ini diinginkan properti ini diungkapkan oleh lemma berikut.
L
EMMA
2.10 (Inversi).
aku.
Jika
P :: (
p
M
, N ⇑↓ A&B), maka
p
M
⇑↓ A dan
p
N
⇑↓ B.
ii.
Jika
P :: (
p
ˆλu : A.M ⇑↓ A
B)
, maka
, u selain: A
p
M
⇑↓ B dan A ≡ A .
iii.
Jika
P :: (
p
λx : A.M ⇑↓
x:A
.B), maka
,x:A
p
M
⇑↓ B dan A ≡ A .
Bukti.
Oleh induksi pada struktur
P. Semua hasil ini menerapkan teknik yang sama: derivasi
ini berlangsung sampai suatu pengantar atau penghapusan muncul sebagai yang terakhir inferensi aturan.
Properti terakhir kami hadir di bagian ini meluas. Hal itu menegaskan bahwa semua ketentuan yang berlaku
menurut precanonical penilaian tingkat objek yang memang precanonical, yaitu, di
η-bentuk panjang.
Itu melarang, misalnya, konstan c dari jenis senyawa Yang akan derivable dengan cara penilaian
bentuk
p
c
⇑ A, apapun tanda tangan
dan konteks
adalah.
L
EMMA
2.11 (Meluas).
aku.
Jika
P ::
p
M

, maka M =
.
ii.
Jika
P ::
p
M
⇑ A&B, maka M = M
1
,M
2
.
iii.
Jika
P ::
p
M
⇑ Yang
B
, maka M = ˆλu : A . M
1
, dengan A ≡ A .
iv.
Jika
P ::
p
M

x:A
. B, maka M = λx : A . M
1
, dengan A ≡ A .
Bukti.
Oleh induksi pada struktur
P.
2.5. Kuat Normalisasi
Tujuan dari bagian ini adalah untuk membuktikan kuat untuk normalisasi
λ
&
. Properti ini berarti bahwa setiap
valid
λ
&
istilah U memiliki bentuk normal NF(U ), yang ini bentuk normal adalah unik, dan bahwa hal itu dapat
34
CERVESATO DAN PFENNING
diperoleh dengan melakukan
β-pengurangan dalam rangka sewenang-wenang dalam U . Kami mengadaptasi teknik ini awalnya diusulkan
untuk LF di [27]. Kami hanya sketsa ini di sini. Pembaca yang tertarik disebut [6] untuk rincian.
Bukti hasil melalui terjemahan
λ
&
dalam hanya diketik
λ-kalkulus dengan pasangan λ
×→
. Dengan
efek dari pengkodean ini akan menghilangkan ketergantungan dan linearitas, jauh menyederhanakan
pengobatan dari kalkulus. Terjemahan ini memiliki dua sifat dasar: pertama mempertahankan baik-
typedness, sehingga berlaku ketentuan dalam
λ
&
dipetakan ke ketentuan yang berlaku di
λ
×→
. Kedua, mempertahankan
pengurangan sehingga setiap pengurangan urutan di
λ
&
sesuai dengan pengurangan urutan di
λ
×→
.
Kuat normalisasi teorema
λ
&
kemudian konsekuensi dari properti yang sama dari
λ
×→
.
Langkah pertama menuju membuktikan kuat normalisasi teorema diberikan oleh lemma berikut. Ini
menyatakan bahwa derivability ditutup di bawah pengurangan; yaitu, jika istilah U berlaku di
λ
&
, maka setiap jangka U
yang berbeda dari U hanya dengan penerapan
β-langkah pengurangan ini juga berlaku. Properti ini dikenal
sebagai subjek pengurangan. Kita menulis U

+
V jika U


V dan U
= V . Perhatikan bahwa simetris properti
mengingat
β-ekspansi tidak berlaku secara umum.
L
EMMA
2.12 (Subjek pengurangan).
Jika
P ::
p
U
⇑↓ V dan R :: U →
+
U
, maka
p
U
⇑↓ V .
Bukti.
Oleh induksi pada struktur
P dan inversi pada R.
Kami tidak hadir dalam detail yang cukup diketik
λ-kalkulus dengan pasangan, λ
×→
[51]. Kami overload beberapa
operator
λ
&
untuk menunjukkan analog simbol
λ
×→
. Untuk tujuan kita, kita akan perlu tunggal
basis jenis yang kita maknai sebagai
ω. Kami mendasarkan equational teori λ
×→
pada satu langkah pengurangan hubungan

1
yang lebih tepat untuk tujuan kita dari paralel bersarang pengurangan. Kita menulis

+
1
untuk
penutupan transitif. Kita akan bergantung pada beberapa sifat dasar untuk penilaian ini. Kami tidak negara atau membuktikan
bahwa
mereka secara resmi karena mereka menyerupai sifat yang mirip LLF dan dikenal dari literatur. Sebuah
properti yang selanjutnya
λ
×→
adalah lebih kuat normalisasi: jika
M:
σ , maka setiap pengurangan urutan
pada M berakhir dan, oleh confluence, hasil yang unik bentuk normal untuk istilah ini. Bukti dari ini dan
lebih kuat properti untuk ekstensi dari bahasa ini dapat ditemukan dalam literatur [19, 51].
Pengkodean kami mengusulkan mengubah LLF penilaian
p
U
⇑↓ V ke λ
×→
penilaian
bentuk
, M : σ . Itu peta istilah generik U ke objek M di λ
×→
, V untuk tipe sederhana
σ,
untuk
tanda tangan
, dan
untuk konteks
. Kami sekarang hadir empat bagian yang merupakan terjemahan ini.
Kita menggunakan fungsi
τ ( ) untuk menunjukkan terjemahan dari istilah yang muncul di sisi kanan
panah dari LLF penghakiman. Ketentuan ini dapat berupa jenis, jenis, atau simbol Jenis, yang kami
peta untuk
ω. Diberikan sebuah tipe atau jenis U , τ (U ) adalah tipe sederhana λ
×→
yang mempertahankan struktur U , tapi
lupa dependensi dan linearitas. Tipe keluarga yang dipetakan ke dasar jenis
ω, aditif produk
jenis konstruktor & dari LLF dikodekan ke dalam (intuitionistic) jenis produk
×λ
×→
dan kedua fungsi
jenis konstruktor
dan
dari bahasa kita yang diwakili oleh unik panah itu kalkulus. Jenis
diperlakukan demikian. Secara khusus, kita mempunyai definisi berikut untuk
τ ( ):
Jenis
Jenis
τ (P) = ω
τ(
JENIS
)

τ()=ω
τ ( x : A.K ) = τ (A) → τ (K )
τ (A&B) = τ (A) × τ (B)
τ (A
B)
= τ (A) → τ (B)
τ ( x : A.B) = τ (A) → τ (B)
Sebagai contoh,
λ
&
jenis
A
=a
(( x : a
a
. a) & (a
y : yang
. a))
berikut pengkodean di
λ
×→
:
τ (A) = ω → (((ω → ω) → ω) × (ω → ω → ω)).
Istilah U muncul segera ke kiri panah dari LLF penghakiman
p
U
⇑↓ V adalah
dipetakan ke
λ
×→
objek dengan cara fungsi
| |. U dapat menjadi sebuah objek, jenis, tipe keluarga, atau sejenis.
LINEAR KERANGKA KERJA LOGIS
35
Pengkodean objek peta variabel untuk variabel, konstanta dengan konstanta, dan konstruktor dan
destruktor dari
λ
&
untuk yang sesuai operator
λ
×→
. Dua bentuk
λ-abstraksi LLF
harus dipetakan untuk
λ
×→
dengan cara yang mempertahankan redices dalam jenis label. Kita mengatasi hal ini
masalah dengan encoding selain
λx : A.M, misalnya, karena (λy : ω.λx : τ (A).|M|)|A|. Diharapkan terjemahan
mantan istilah adalah
λx : τ (A).|M|. Kami cantumkan dalam β-redex (λy : ω. )|A| dalam rangka untuk memperhitungkan kemungkinan
pengurangan dilakukan di
λ
&
jenis Yang. Ini redex adalah hampa karena y adalah variabel tidak
muncul di A atau M.
Pengkodean jenis dan macam diterjemahkan masing-masing
λ
&
operator sebagai konstan dalam
λ
×→
yang
diterapkan untuk pengkodean argumen. Tergantung tipe dan jenis konstruktor
membutuhkan
fungsional argumen kedua sejak semantik memperkenalkan asumsi dalam konteks.
Kita mempunyai definisi berikut ini fungsi encoding, dimana
π , mungkin subscripted, menunjukkan
konstanta dalam
λ
×→
:
Benda-benda
Jenis dan macam
|x| = x
|a| = π
a
|c| = π
c
|P N | = |P| |N |
||=π
||=π
| M, N | = |M|, |N |
|A&B| = π
&
|A| |B|
|
FST
M
|=
FST
|M|
|A
B
|=π
|A| |B|
|
SND
M
|=
SND
|M|
| x : A.B| = π
τ (A)
|A|(λx : τ (A).|B|)
|ˆλu : A.M| = (λy : ω.λu : τ (A).|M|)|A|
|MselainN | = |M| |N |
|
JENIS
|=π
JENIS
|λx : A.M| = (λy : ω.λx : τ (A).|M|)|A|
| x : A.K | = π
τ (A)
|A|(λx : τ (A).|K |)
|M N | = |M| |N |
dengan y tidak muncul di salah Satu atau M. Misalnya, terjemahan dari fungsional identitas
M
= λx : ( z : a.a).x
ini
|M| = (λy : ω.λx : ω → ω.x)(π
ω
π
a
(
λz : ω.π
a
))
.
Pengkodean konteks induktif meluas
τ ( ), menghilangkan perbedaan antara intuitionistic
dan asumsi-asumsi linear. Pengkodean
τ ( ) dari LLF tanda tangan
terdiri dari dua bagian: bagian variabel
mendefinisikan tipe dari setiap deklarasi
v : U di
sebagai
π
v
:
τ (U ) dan bagian tetap menyatakan jenis
konstanta diperlukan untuk mewakili tipe dan jenis operator dari bahasa kita. Pengobatan
hasil
tak terbatas keluarga deklarasi, satu untuk masing-masing tipe sederhana di
λ
×→
. Kita mempunyai definisi berikut:
Konteks
Tanda tangan
τ (·) = ·
τ()=
π
c
:
τ (A),
untuk c : Yang di
τ ( , u selain: A) = τ ( ), u : τ (A)
π
a
:
τ (K ),
untuk a : K di
τ ( , x : A) = τ ( ), x : τ (A)
π
σ
:
ω → (σ → ω) → ω,
π : ω,
π : ω,
π
&
:
ω → ω → ω,
π
:
ω → ω → ω,
π
JENIS
:
ω
Pengkodean hanya disajikan menjaga baik-typedness: Setiap kali istilah U berlaku di
λ
&
, the
objek
|U | berlaku di λ
×→
. Properti ini secara resmi dinyatakan dalam lemma berikut.
L
EMMA
2.13 (Kecukupan terjemahan).
aku.
Jika
P ::
p
M
⇑↓ A, maka τ ( )
τ()
|M| : τ (A).
36
CERVESATO DAN PFENNING
ii.
Jika
P ::
p
A
⇑↓ K , maka τ ( )
τ()
|A| : τ (K ).
iii.
Jika
P ::
p
K
⇑ Jenis, maka τ ( )
τ()
|K | : ω.
Bukti.
Kita lanjutkan dengan induksi pada struktur
P.
Usulan encoding memiliki lebih properti melestarikan pengurangan. Oleh karena itu, kapanpun,
istilah U mengurangi U di
λ
&
istilah
|U | mengurangi |U | di λ
×→
dalam setidaknya beberapa langkah. Yang
tambahan
β-redex dalam representasi λ-abstraksi menyebabkan individu pengurangan dalam bahasa kita menjadi
dipetakan ke tahapan pengurangan dalam bahasa target secara umum.
L
EMMA
2.14 (Pelestarian pengurangan urutan).
Jika
R :: U →
+
V
, maka |U | →
+
1
|V |.
Bukti.
Oleh induksi pada struktur
R.
Sekarang kita memiliki semua bahan untuk membuktikan kuat normalisasi teorema
λ
&
. Istilah U adalah
normalisasi jika tidak ada istilah U dalam bentuk normal seperti yang U


U
. U adalah kuat normalisasi jika
setiap pengurangan urutan hasil jangka normal.
Kuat normalisasi teorema menyatakan bahwa setiap derivable istilah ini sangat normalisasi. Ini
properti memegang di
λ
×→
, seperti yang dibuktikan misalnya di [19, 51], dan kami menggunakan fakta ini untuk membuktikan bahwa itu adalah berlaku
juga untuk
λ
&
.
T
HEOREM
2.2 (Kuat normalisasi).
Jika
p
U
⇑↓ V, maka U adalah kuat normalisasi.
Bukti.
Oleh kecukupan terjemahan (Lemma 2.13), kita memiliki yang
τ()
τ()
|U | : τ (V ) adalah
derivable di
λ
×→
.
Asumsikan kita memiliki (mungkin tak terbatas) pengurangan urutan di
λ
&
mulai dari U :
U
=U
0

+
U
1

+
···.
Oleh pengurangan pelestarian (Lemma 2.14) ada pengurangan yang sesuai urutan
|U
0
|→
+
1
|U
1
|→
+
1
···
di
λ
×→
. Sejak terakhir harus terbatas, mantan juga akan terbatas.
Validitas kuat normalisasi memungkinkan derivasi dari jumlah selanjutnya properti untuk kami
bahasa. Yang pertama adalah hasil yang normal yang bentuk derivable istilah yang unik, yang dinyatakan di bawah ini.
C
OROLLARY
2.1 (Keunikan dari bentuk normal).
Jika
p
U
⇑↓ V, U →

U
, dan U →

U dengan
kedua U dan U dalam bentuk normal
, maka U = U .
Bukti.
Dengan pertemuan, tidak ada istilah V seperti yang U


V dan U


V . Namun, sejak U
dan U adalah normal, mereka tidak mengandung
β-redices, dan oleh karena itu U = V = U .
Properti ini memungkinkan kita untuk mendefinisikan fungsi NF( ) dalam rangka untuk menunjukkan bentuk normal yang berlaku
jangka
U . NF(U ) dihitung dari U dengan menerapkan
β-pengurangan dalam istilah ini sampai bentuk normal akhirnya
tercapai. Kuat normalisasi menjamin bahwa ini bentuk normal muncul setelah jumlah terbatas langkah-langkah,
dan lemma di atas menjamin bahwa yang dihasilkan adalah istilah yang unik.
Lebih lanjut akibat normalisasi teorema adalah bahwa equational teori LLF ini
decidable; yaitu, dapat secara efektif memutuskan apakah ada derivasi untuk penghakiman U
≡U,
untuk U dan U valid syarat. Idenya adalah untuk memeriksa bahwa NF(U ) dan NF(U ) adalah identik.
C
OROLLARY
2.2 (Decidability dari equational teori).
Jika
p
U
⇑↓ V dan
p
U
⇑↓ V,
maka dapat rekursif memutuskan apakah U
≡ U derivable.
Bukti.
Oleh Gereja–Rosser properti, U dan U memiliki kesamaan mengecil U . Dengan subjek pengurangan,
U adalah valid. Oleh karena itu, dengan keunikan (Wajar 2.1), U , U , dan U berbagi sama bentuk normal NF(U ).
Oleh yang kuat normalisasi teorema, setiap urutan pengurangan pada U dan U akhirnya menghasilkan
NF(U ) setelah jumlah terbatas langkah-langkah. Oleh karena itu, kemungkinan prosedur keputusan untuk definisi kesetaraan
adalah sebagai berikut: menghitung normal bentuk U dan U , dan kemudian memeriksa apakah mereka sintaksis
yang sama. Jika mereka, maka U adalah definitionally sama dengan U . Jika tidak, mereka tidak setara.
LINEAR KERANGKA KERJA LOGIS
37
Namun konsekuensi lain dari kuat normalisasi teorema adalah bahwa setiap derivable
λ
&
penilaian
dapat dibatasi lagi hanya benda-benda dalam bentuk yang normal. Meskipun tidak benar-benar diperlukan, itu adalah umum
praktek untuk menulis LLF tanda tangan dalam bentuk normal.
C
OROLLARY
2.3 (bentuk Normal).
aku.
Jika
P ::
p
U
⇑↓ V, maka NF( )
p
NF( )
NF(U )
⇑↓ NF(V ).
ii.
Jika
P ::
p
ψ ⇑ Ctx, kemudian
p
NF
( ) NF( )
⇑ Ctx.
iii.
Jika
P ::
p
⇑ Sig, kemudian
p
NF( )
⇑ Sig.
Bukti.
Pertama kita mengurangi U ke bentuk normal dalam (i) dengan cara sebelumnya yang wajar dan kemudian melanjutkan
oleh induksi pada struktur
P.
Dalam pelaksanaan bahasa, mengubah istilah bentuk normal sesegera
β-redices muncul
sebagai hasil dari substitusi ini tidak selalu diperlukan. Hal ini biasanya lebih efisien untuk bekerja dengan lemah kepala-
bentuk normal, yang berbeda dari bentuk normal dengan mengizinkan redices dalam argumen dari aplikasi.
Akhir akibat normalisasi teorema aturan itu opa c dapat dijatuhkan sebagai segera
karena kita hanya tertarik pada berlaku hal normal. Seperti yang kita sebentar termotivasi sebelumnya, hanya saja dengan adanya
aturan ini memungkinkan pembentukan
β-redices di berlaku ketentuan (yaitu, dalam hal segera ke kiri
panah di precanonical atau preatomic penghakiman). Menghilangkan aturan ini bermanfaat dalam rangka untuk menggunakan
λ
&
sebagai bahasa logical framework LLF karena mencegah nonnormal syarat menjadi
divalidasi tanpa kehilangan apapun berlaku jangka normal.
2.6. Algoritma Sistem
Bukti decidability dari jenis pemeriksaan untuk LLF sulit untuk mencapai secara langsung di precanonical
sistem dalam buah Ara. 2 dan 3. Memang, hal ini tidak mungkin untuk memprediksi ukuran derivasi untuk penghakiman
karena aturan yang kita disebut tidak penting di Bagian 2.1 (kesetaraan aturan dan opa c) dapat
dirantai sewenang-wenang. Kuat normalisasi teorema dan diterimanya opa c membatasi kebutuhan untuk
aturan ini secara drastis. Di bagian ini, kita akan cantumkan pertama dari hasil ini secara deduktif sistem untuk
λ
&
memiliki karakteristik yang setiap derivable penghakiman memiliki derivasi yang ukurannya dibatasi
oleh fungsi dari istilah-istilah yang merupakan keputusan ini; kami akan datang kembali untuk aspek ini dalam Bagian 2.7.
Berikut terminologi [27], yang kita sebut sistem ini algoritmik. Sifat-sifat sistem ini
juga memungkinkan kita untuk akhirnya membuktikan validitas dari penguatan untuk bahasa kita.
Algoritma sistem untuk
λ
&
terdiri dari penilaian yang mirip dengan precanonical presentasi;
memang, kita menggunakan ungkapan yang sama, hanya menganotasi turnstile simbol dengan huruf yang bukan
dari p. Pengertian definisi persamaan adalah sama, tapi kita tidak mengakses mendefinisikan penilaian
yang equational teori ini diatas. Kita bergantung, bukan pada normalisasi fungsi NF( ), yang dikenal
untuk eksis dari bagian sebelumnya. Kami mengingatkan pembaca bahwa fungsi ini didefinisikan hanya untuk berlaku
syarat-syarat, dan itu akan mudah untuk memeriksa bahwa setiap kali hal ini digunakan dalam algoritma sistem, argumen yang
valid.
Inferensi aturan yang mendefinisikan perilaku algoritmik sistem ditampilkan dalam buah Ara. 5 dan 6. Ini
deduktif sistem saham dengan precanonical sistem Bagian 2.2 properti yang setiap derivable
istilah ini dalam
η-bentuk panjang. Aspek ini akan menjadi konsekuensi dari kesehatan teorema di bawah ini. Namun,
algoritma sistem mempunyai karakteristik lanjut bahwa semua hal yang disebutkan dalam setiap well-formed derivasi
adalah diri yang masih berlaku. Seperti yang kami katakan, sakit-terbentuk hal bisa muncul dalam kesetaraan subderivations
dengan menggunakan
β-ekspansi. Dalam algoritma sistem, kesetaraan relasi ≡ telah dieliminasi dalam mendukung
aplikasi normalisasi fungsi dalam aturan memperkenalkan tergantung tipe atau jenis konstruktor
(faa iapp dan oaa iapp), yang melibatkan penerapan substitusi. Algoritma sistem
juga memiliki properti bahwa istilah-istilah yang muncul di sebelah kanan panah selalu dalam bentuk kanonik.
Kami mencapai efek ini dengan normalisasi jenis dan macam ketika mengambil mereka dari tanda tangan atau
konteks (aturan faa con, oaa con, oaa lvar, oaa ivar, oca llam, dan oca ilam).
Korespondensi antara algoritma dan precanonical sistem ini diformalkan dengan cara
berikut kesehatan dan kelengkapan theorems. Pertama, setiap yang berlaku jangka waktu dalam algoritma sistem
ini juga berlaku di precanonical formulasi.
38
CERVESATO DAN PFENNING
Tanda tangan
sa dot
a

· ⇑ Sig
a

⇑ Sig
·
a

A

JENIS
sa obj
a

, c : A ⇑ Sig
a

⇑ Sig
·
a

K
⇑ Jenis
sa fam
a

, a : K ⇑ Sig
Konteks
a

⇑ Sig
ca dot
a

· ⇑ Ctx
a

⇑ Ctx
a

A

JENIS
ca int
a

, x : A ⇑ Ctx
a

⇑ Ctx
a

A

JENIS
ca lin
a

, u selain: A ⇑ Ctx
Jenis
a

⇑ Ctx
kca jenis
a
JENIS

⇑ Jenis
,x:A
a

K
⇑ Jenis
kca dep
a

x:A
. K ⇑ Jenis
Jenis
/tipe keluarga
a

P

JENIS
fca yang
a
P

JENIS
a

⇑ Ctx
fca atas
a


JENIS
a

A

JENIS
a

B

JENIS
fca dengan
a

A&B

JENIS
a

A

JENIS
a

B

JENIS
fca lemas
a

A
−◦ B ⇑
JENIS
,x:A
a

B

JENIS
fca dep
a

x:A
.B⇑
JENIS
............................................................................................
a
,a:K ,

⇑ Ctx
faa con
a
,a:K ,

a
↓ NF(K )
a

P

x:A
.K
a

N
⇑ Yang
faa iapp
a

PN
↓ NF([N /x]K )
GBR. 5.
Algoritma pemotongan sistem untuk
λ
&
, macam dan jenis.
T
HEOREM
2.3 (Kesehatan algoritmik system).
aku.
Jika
A ::
a
U
⇑↓ V, maka
p
U
⇑↓ V dan V adalah dalam bentuk normal.
ii.
Jika
A ::
a
⇑ Ctx, kemudian
p
⇑ Ctx.
iii.
Jika
A ::
a
⇑ Sig, kemudian
p
⇑ Sig.
Bukti.
Kita lanjutkan dengan induksi pada struktur
A.
Kelengkapan teorema menyatakan bahwa setiap penilaian memiliki derivasi dalam precanonical sistem
ini juga derivable dalam sistem yang disajikan dalam bagian ini. Oleh karena itu, tidak berlaku istilah ini hilang dengan pindah ke
algoritma sistem. Perhatikan, bagaimanapun, bahwa tipe atau jenis yang muncul pada sisi kanan dari
utama penilaian precanonical sistem harus dinormalisasi dalam algoritma sistem.
T
HEOREM
2.4 (Kelengkapan algoritmik system).
aku.
Jika
P ::
p
U
⇑↓ V, maka
a
U
⇑↓ NF(V ).
ii.
Jika
P ::
p
⇑ Ctx, kemudian
a
⇑ Ctx.
iii.
Jika
P ::
p
⇑ Sig, kemudian
a
⇑ Sig.
Bukti.
Oleh induksi pada struktur
P.
LINEAR KERANGKA KERJA LOGIS
39
Benda-benda
a

M
↓P
oca yang
a

M
⇑P
a

⇑ Ctx
oca unit
a


a

M
⇑ Yang
a

N
⇑B
pasangan oca
a

M
,N⇑A&B
, u selain: A
a

M
⇑B
oca llam
a

Selainλu : A. M ⇑ NF(A) −◦ B
,x:A
a

M
⇑B
oca ilam
a

λx : A. M ⇑
x : NF( A)
.B
............................................................................................
a

M
⇑ Yang
oaa c
a

M
↓A
a
,c:A,

⇑ Ctx
oaa con
a
,c:A,

c
↓ NF(A)
a

, u selain: A,
⇑ Ctx
oaa lvar
, u selain: A,
a

u
↓ NF(A)
a

, x : A,
⇑ Ctx
oaa ivar

, x : A,
a

x
↓ NF(A)
(Tidak ada aturan untuk
)
a

M
↓ A&B
oaa fst
a
FST
M
↓A
a

M
↓ A&B
oaa snd
a
SND
M
↓B
a

M
↓ A −◦ B
a

N
⇑ Yang
=
oaa lapp
a

M selain N
↓B
a

M

x:A
.B
a

N
⇑ Yang
oaa iapp
a

MN
↓ NF([N /x]B)
GBR. 6.
Algoritma pemotongan sistem untuk
λ
&
, benda-benda.
Bukti-bukti dari hasil penelitian ini adalah konstruktif dan oleh karena itu menentukan sebuah transformasi yang efektif da-
dure.
Ketat akses ke definisi kesetaraan, dan khususnya ketidakmungkinan menggunakan ini untuk
β-
perluasan, izin langsung bukti dari penguatan lemma dalam algoritma sistem.
L
EMMA
2.15 (Penguatan).
aku.
Jika
, s :selain: A,
p
U
⇑↓ V, dan x /
∈ FV(
)
∪ FV(U ) ∪ FV(V ), maka
,
p
U
⇑↓ V .
ii.
Jika
p
, x :selain: A,
⇑ Ctx, dan x /
∈ FV(
)
, maka
p
,
⇑ Ctx.
Bukti.
Pertama-tama kita membuktikan analog lemma untuk algoritmik sistem induksi pada derivasi
yang diberikan derivasi dan kemudian menggunakan atas kesehatan dan kelengkapan hasil untuk transfer ke
precanonical pengaturan.
2.7. Decidability
Tidak adanya eksplisit ekuivalensi dalam algoritma sistem membatasi pilihan dari inferensi
aturan yang dapat digunakan pada setiap langkah dari derivasi jauh. Setiap well-formed penghakiman pertandingan
kesimpulan dari satu aturan, dengan satu-satunya pengecualian dari penilaian bentuk
M
↓ A, untuk
mana pemaksaan oaa c dari canonical hal ini selalu tersedia. Selain itu, istilah-istilah yang muncul di
bagian tengah validitas penilaian menjadi lebih kecil ketika pergi dari kesimpulan untuk tempat
di semua aturan dalam buah Ara. 5 dan 6 kecuali fca a, oca a, dan oaa c, yang mereka tetap sama. Perhatikan bahwa
mungkin siklus yang dihasilkan oleh dua terakhir dapat dengan mudah dideteksi dan dihapus. Dalam prakteknya, kita membatasi
dengan oaa c paksaan untuk jenis A yang tidak dasar jenis P, demikian juga menghindari siklus sementara tetap mempertahankan
kelengkapan.
40
CERVESATO DAN PFENNING
Benda-benda:
x
=1
c
=1
=1
M
,N
=1+M+N
FST
M
=1+M
SND
M
=1+M
Selainλu : A. M = 2 + A + M
M selain N
=1+M+N
λx : A. M
=2+
A
+M
MN
=1+M+N
Jenis:
a
=1
PN
=1+P+N
=1
A&B
=1+A+B
A
−◦ B
=1+A+B
x:A
.B
=2+A+B
Jenis:
JENIS
=1
x:A
.K
=2+A+K
Konteks:
·
=1
, u selain: A
=1+
+A
,x:A
=1+
+A
Tanda tangan:
·
=1
,c:A
=1+
+A
,a:K
=1+
+K
Penilaian:
a

⇑ Sig
=
a

⇑ Ctx
=
+
a

K
⇑ Jenis
=
+
+
K
a

A

JENIS
=
+
+
A
a

A
↓K
=
+
+
A
a

M
⇑ Yang
=
+
+
M
a

M
↓A
=
+
+
M
=
=
GBR. 7.
Ukuran komputasi untuk algoritma sistem.
Di bagian ini, kami mengambil keuntungan dari karakteristik ini dalam rangka untuk membuktikan decidability di LLF
untuk memverifikasi apakah sepenuhnya ditentukan
λ
&
penghakiman adalah derivable atau tidak—jenis pemeriksaan—dan
komputasi jenis atau sejenis untuk penghakiman dan paling kanan adalah istilah kiri yang tidak ditentukan, atau menyatakan
bahwa
tidak ada istilah tersebut ada—jenis sintesis. Kedua masalah yang harus dihadapi secara bersamaan dalam bahasa kita.
Dalam rangka untuk mencapai tujuan ini, langkah awal terdiri dari mendefinisikan mengukur kompleksitas untuk
algoritma penghakiman. Jumlah ini menghasilkan batas atas untuk ukuran setidaknya salah satu derivasi.
Untuk tujuan ini, kita bergantung pada keluarga ukuran fungsi yang kita menunjukkan seragam seperti
. Kami merancang
fungsi-fungsi ini sehingga ukuran kesimpulan dari setiap aturan penting dalam algoritma sistem ini
benar-benar lebih besar dari ukuran masing-masing tempat.
Ukuran dari syarat-syarat, jenis, dan jenis didefinisikan dalam bagian atas dari Fig. 7. Numerik konstanta dalam
definisi ini memastikan bahwa sebuah istilah yang memiliki ukuran yang lebih besar dari subterms. Perhatikan bahwa ukuran
ekspresi dari
konstruksi yang mengikat variabel bergantung pada konstanta 2 bukan 1. Langkah ini memastikan bahwa ukuran
kesimpulan dari pengenalan mereka aturan ini lebih besar dari ukuran premis, yang menyebutkan
diperpanjang konteks.
LINEAR KERANGKA KERJA LOGIS
41
Definisi ini untuk konteks dan tanda tangan di bagian tengah dari Gambar. 7. Kami kemudian menggabungkan ukuran
dari kerangka, konteks, dan tanda tangan dalam rangka untuk menentukan ukuran dari semua penilaian yang berpartisipasi dalam
algoritma sistem di bagian bawah Gambar. 7. Perhatikan bahwa ukuran penghakiman tidak merujuk pada
istilah yang muncul di sebelah kanan anak panah. Hal ini diperlukan untuk tujuan kita karena ukuran dari istilah ini
di tempat penghapusan aturan-aturan yang dapat pada umumnya akan lebih besar dari pada kesimpulan.
Kami merancang fungsi di atas sehingga ukuran penilaian merupakan batas atas pada ketinggian
setidaknya salah satu derivasi dalam algoritma sistem (yang tidak langsung mengakses definisi
kesetaraan penilaian). Properti ini diungkapkan oleh lemma berikut. Hal ini terbukti dalam dua langkah: pertama
kita menghilangkan semua urutan dari aturan-aturan yang hanya terdiri dari pergantian oca a dan oaa c; kedua, kami
menunjukkan bahwa ukuran tempat dari pengenalan atau penghapusan aturan ini selalu lebih kecil dari ukuran
kesimpulan.
L
EMMA
2.16 (Atas terikat pada ukuran derivasi).
aku.
Biarkan jam
=
a
U
⇑↓ V . Jika A ::
a
U
⇑↓ V, maka A ::
a
U
⇑↓ V .
ii.
Biarkan jam
=
a
⇑ Ctx . Jika A ::
a
⇑ Ctx, maka A ::
a
⇑ Ctx.
iii.
Biarkan jam
=
a
⇑ Sig . Jika A ::
a
⇑ Sig, maka A ::
a
⇑ Sig.
Dalam setiap kasus
Yang memiliki ketinggian kurang dari 2h dan mengandung paling banyak 3
2jam
node-node.
Sekarang kita memiliki semua bahan yang diperlukan untuk membuktikan bahwa jenis memeriksa masalah ini decidable
di LLF. Diberikan penilaian validitas yang kita inginkan untuk memutuskan, pertama naif ide untuk pertandingan melawan
kesimpulan dari inferensi aturan yang mendefinisikan algoritma sistem. Jika tidak ada aturan-aturan ini berlaku, maka
penghakiman tidak derivable; jika tidak, kita periksa secara rekursif bahwa instantiated tempat
yang layak aturan derivable. Lemma di atas memberikan batas atas pada jumlah aturan yang perlu
untuk dipertimbangkan.
Sayangnya, seperti terikat adalah tidak cukup karena jenis di tempat penghapusan aturan-aturan
yang lebih besar dari pada kesimpulan dan akan harus menebak secara murni bottom-up strategi. Namun,
mereka ditentukan oleh tanda tangan dan konteks menggunakan jenis sintesis [4]. Membuktikan decidability dari jenis
sintesis memerlukan jenis pemeriksaan dalam rangka untuk memvalidasi konteks, jadi kita perlu untuk membuktikan dua sifat
secara bersamaan.
T
HEOREM
2.5 (Decidability type checking).
aku.
(Type checking) dapat secara rekursif memutuskan apakah
p
U
⇑↓ V,
p
⇑ Ctx, dan
p
⇑ Sig adalah derivable.
ii.
(Jenis sintesis) Diberikan tanda tangan
, konteks , dan istilah U, ada prosedur rekursif
yang menghitung jangka V tersebut bahwa penghakiman
p
U
⇑↓ V adalah derivable atau menentukan bahwa tidak ada seperti
V ada.
Bukti.
Kami membuktikan analog properti untuk algoritmik sistem dan mengandalkan konstruktif
aspek kesehatan dan kelengkapan teorema di atas untuk transfer ke precanonical pengaturan.
Ide, dalam rangka untuk membuktikan algoritmik perumusan hasil ini, adalah untuk menerapkan aturan inferensi yang
cocok U (dan V untuk jenis pemeriksaan) sampai baik derivasi dihasilkan, tidak ada aturan yang berlaku, atau
atas terikat pada ukuran asalan di tangan telah tercapai.
Saling rekursif bagian dari teorema ini menghasilkan prosedur yang efektif untuk jenis pemeriksaan dan jenis
sintesis. Setelah hasil ini telah terbukti, jenis pemeriksaan yang dapat mudah berkurang untuk jenis sintesis:
Dalam rangka untuk memeriksa apakah
p
M
⇑↓ A adalah derivable, itu sudah cukup untuk memeriksa yang Satu ini berlaku, menyimpulkan jenis
Yang seperti itu
p
M
⇑↓ A adalah derivable, dan periksa apakah A ≡ A memegang, yang, dengan Konsekuensi 2.2, adalah
decidable. Aplikasi dari aturan ekuivalen hasil
p
M
⇑↓ A. Bagian subproblem memeriksa
apakah Yang berlaku juga berkurang untuk menemukan semacam itu, tanpa indirections kali ini.
Decidability dari jenis pemeriksaan yang diperlukan properti untuk menggunakan formalisme sebagai meta-
representasi bahasa. Seperti LF, LLF encode penilaian dari suatu objek bahasa sebagai jenis dan
derivasi sebagai objek istilah level. Decidability dari jenis pemeriksaan untuk
λ
&
izin menentukan
efektif tidaknya suatu objek adalah representasi yang valid derivasi dari (program linear)
objek formalisme.
42
CERVESATO DAN PFENNING
2.8. Bentuk Kanonik
Seperti dalam precanonical kasus, algoritma sistem yang disajikan dalam Bagian 2.6 mencegah hal yang
tidak di
η-bentuk panjang dari yang divalidasi. Satu-satunya pengecualian menyangkut proses pembangunan
istilah U dengan cara penilaian
a
U
↓ V , dimana U tidak akan selalu menjadi η-diperluas, pada
umumnya. Di bagian ini, kami akan menyajikan bukti sistem yang memaksa semua entitas yang muncul dalam derivable
penilaian dapat juga dalam bentuk yang normal. Oleh karena itu, semua berlaku ketentuan akan kanonik, yaitu, di
η-long bentuk
dan tanpa
β-redices. Kita akan mencapai properti ini dengan menghapus aturan oaa c, yang, seperti yang kita lihat, izin
pembentukan
β-redices di derivable hal. Dalam sistem ini, kami juga akan menyesuaikan aturan
algoritma sistem untuk membuat mereka lebih cocok untuk otomatisasi. Kami akan bergantung pada sistem deduktif dalam
sisa kertas.
Ketika menurunkan penilaian bentuk
U
⇑↓ V , yang kanonik sistem dalam buah Ara. 8 dan 9
mengandaikan keabsahan tanda tangan
dan konteks
. Akibatnya, aturan-aturan yang berhubungan
dengan konstanta, variabel, dan atom lain hal tidak perlu mereka premis lagi; mereka adalah daun
dari derivasi. Ketika menerapkan aturan untuk
λ-abstraksi atau ketika memeriksa bahwa tipe dependen adalah
valid (aturan fc dep dan kc dep), kita perlu memeriksa bahwa jenis asumsi ditambahkan ke dalam konteks yang
lebih valid. Hal ini memastikan validitas dari konteks di premis dari aturan. Dalam aturan oa lapp, yang bergantung
pada konteks membelah, konteks yang terjadi di tempat yang berbeda dari konteks dalam kesimpulan hanya
dengan penghapusan beberapa linear asumsi. Konteks ini adalah, bagaimanapun, berlaku sejak dalam bahasa kita,
linear variabel tidak terjadi gratis dalam jenis, dan oleh karena itu tidak ada asumsi yang dapat bergantung pada mereka (lihat
Lemma 2.3).
Tanda tangan
sc dot

· ⇑ Sig
⇑ Sig
·
A

JENIS
sc obj

, c : A ⇑ Sig
⇑ Sig
·
K
⇑ Jenis
sc fam

, a : K ⇑ Sig
Konteks
cc dot

· ⇑ Ctx
⇑ Ctx
A

JENIS
cc int

, x : A ⇑ Ctx
⇑ Ctx
A

JENIS
cc lin

, u selain: A ⇑ Ctx
Jenis
kc tipe
JENIS

⇑ Jenis
A

JENIS
,x:A
K
⇑ Jenis
kc dep

x:A
. K ⇑ Jenis
Jenis
/tipe keluarga

P

JENIS
fc yang

P

JENIS
fc atas


JENIS
A

JENIS
B

JENIS
fc dengan

A&B

JENIS
A

JENIS
B

JENIS
fc lemas

A
−◦ B ⇑
JENIS
A

JENIS
,x:A
B

JENIS
fc dep

x:A
.B⇑
JENIS
............................................................................................
fa con
,a:K ,

a
↓K
P

x:A
.K
N
⇑ Yang
fa iapp

PN
↓ NF([N /x]K )
GBR. 8.
Canonical pemotongan sistem untuk
λ
&
, macam dan jenis.
LINEAR KERANGKA KERJA LOGIS
43
Benda-benda

M
↓P
oc a

M
⇑P
oc unit


M
⇑ Yang
N
⇑B
oc pasangan

M
,N⇑A&B
A

JENIS
, u selain: A
M
⇑B
oc llam

Selainλu : A. M ⇑ A −◦ B
A

JENIS
,x:A
M
⇑B
oc ilam

λx : A. M ⇑
x:A
.B
............................................................................................
oa con
,c:A,

c
↓A
oa lvar

, u selain: A,
u
↓A
oa ivar

, x : A,
x
↓A
(Tidak ada aturan untuk
)
M
↓ A&B
oa fst
FST
M
↓A
M
↓ A&B
oa snd
SND
M
↓B
M
↓ A −◦ B
N
⇑ Yang
=
oa lapp

M selain N
↓B
M

x:A
.B
N
⇑ Yang
oa iapp

MN
↓ NF([N /x]B)
GBR. 9.
Canonical pemotongan sistem untuk
λ
&
, benda-benda.
Hal baru lainnya dari canonical sistem adalah tidak adanya aturan yang sesuai dengan oaa c, paksaan
dari precanonical untuk preatomic hal. Kita sudah melihat bahwa hanya melalui aturan ini kita bisa menunjukkan
keabsahan syarat-syarat yang mengandung
β-redices. Tanpa itu, canonical sistem hanya dapat memperoleh η-lama istilah-istilah
yang
β-normal, yaitu, canonical, sebagai nama dari sistem ini menyiratkan.
Konsekuensi penting dari penghapusan oaa c adalah bahwa sistem yang dihasilkan adalah syntax-directed:
penilaian setiap pertandingan kesimpulan dari paling banyak satu inferensi aturan.
Kesetaraan antara algoritma dan sistem resmi di Ara. 8 dan 9 dinyatakan oleh
cara berikut kesehatan dan kelengkapan theorems.
T
HEOREM
2.6 (Kesehatan sistem kanonik).
aku.
Jika
⇑ Sig,
⇑ Ctx dan C ::
U
⇑↓ V, maka
a
U
⇑↓ V .
ii.
Jika
⇑ Sig dan C ::
⇑ Ctx, kemudian
a
⇑ Ctx.
iii.
Jika
C ::
⇑ Sig, kemudian
a
⇑ Sig.
Selain itu
,
, , U, dan V berada dalam bentuk normal.
Bukti.
Oleh induksi pada struktur
C.
Kebalikan dari pernyataan ini adalah tidak benar secara umum. Itu berlaku, namun, setiap kali semua entitas
yang muncul dalam derivable algoritmik penghakiman berada dalam bentuk normal. Kita tahu dengan bentuk normal
wajar 2.3 bahwa setiap derivable penilaian dalam sistem itu setara dengan penilaian yang menyebutkan
hanya hal normal. Oleh karena itu, korespondensi antara algoritma dan kanonik sistem ini
tidak sempurna, karena mempertahankan derivability tapi tidak derivasi, secara umum. Ini adalah, bagaimanapun, dapat diterima
untuk tujuan kita sejak, ketika melakukan pencarian dan ketika pengkodean sistem deduktif, kita hanya
tertarik pada hal yang
η-panjang dan β-normal, yaitu, canonical.
44
CERVESATO DAN PFENNING
T
HEOREM
2.7 (Kelengkapan sistem kanonik).
aku.
Jika
a
M
⇑↓ A, maka
• jika A adalah tipe dasar, maka NF( )
NF( )
NF(M)
⇑↓ A;
• jika NF(M) =
atau M
,M
atau selain
λu : A .M atau λx : A .M , maka NF( )
NF( )
NF(M)
⇑ A;
• jika NF(M) = x atau c atau
FST
M atau
SND
M atau M selainM atau M M , maka NF( )
NF( )
NF(M)
↓ A.
ii.
Jika
a
A
⇑↓ K , maka NF( )
NF( )
NF( A)
⇑↓ K .
iii.
Jika
a
K
⇑ Jenis, maka NF( )
NF( )
NF(K )
⇑ Jenis.
iv.
Jika
a
⇑ Ctx, kemudian
NF( )
NF( )
⇑ Ctx.
v.
Jika
a
⇑ Sig, kemudian
NF( )
⇑ Sig.
Bukti.
Kita lanjutkan dengan induksi pada diberikan penilaian setelah menerapkan bentuk normal
wajar 2.3 dan mengambil yang menjadi pertimbangan diterimanya dari aturan oaa c, yang berasal dari
analog milik dari aturan opa c di precanonical sistem.
Kita akan mengadopsi sistem yang disajikan dalam bagian ini untuk membandingkan fitur-fitur dari LLF untuk LF. Kami akan
bergantung pada sistem kanonik diadaptasi dari [39] untuk perbandingan. Rincian dapat ditemukan dalam [6]. Kita
akan membedakan
λ setara penilaian yang disampaikan sebelumnya oleh annotating mereka dengan
superscript
LF
.
Semua sintaksis entitas
λ tersedia dalam bahasa kita. Ini embedding dipertahankan pada tingkat
dari penilaian. Canonical sistem untuk
λ
&
dalam buah Ara. 8 dan 9 berbeda dari yang sesuai
λ
sistem hanya dengan penambahan aturan-aturan yang berhubungan dengan linear entitas dari bahasa kita. Oleh karena itu, setiap
penilaian derivable di
λ memiliki isomorfis asalan di λ
&
.
T
HEOREM
2.8 (Ekstensi lebih dari LF).
aku.
Jika
LF ::
LF
U
⇑↓ V, maka
U
⇑↓ V .
ii.
Jika
LF ::
LF
⇑ Ctx, kemudian
⇑ Ctx.
iii.
Jika
LF ::
LF
⇑ Sig, kemudian
⇑ Sig.
Bukti.
Kita lanjutkan dengan induksi pada struktur
LF. Semua kasus yang mendesak segera setelah kami
perhatikan bahwa, untuk
λ konteks , kita mendapati bahwa = .
LLF juga telah converse properti yang konservatif lebih dari LF; yaitu, setiap derivable
λ
&
penilaian yang menyebutkan hanya entitas di
λ fragmen dari sintaks memiliki derivasi yang sesuai
di
λ . Hal ini juga mensyaratkan bahwa setiap penilaian yang tidak derivable di LF tetap seperti di LLF.
T
HEOREM
2.9 (Conservativity lebih dari LF).
Mari
, , U, dan V menjadi LF signature, sebuah LF konteks, dan
dua hal LF
, masing-masing; kemudian
aku.
Jika
C ::
U
⇑↓ V, maka
LF
U
⇑↓ V .
ii.
Jika
C ::
⇑ Ctx, kemudian
LF
⇑ Ctx.
iii.
Jika
C ::
⇑ Sig, kemudian
LF
⇑ Sig.
Bukti.
Kita lanjutkan dengan induksi pada struktur
C. Kita perlu ingat bahwa untuk LF konteks
kami memiliki yang
=.
Properti ini memiliki konsekuensi penting. Tidak hanya setiap penilaian derivable di LF adalah derivable
juga dalam bahasa kita, tapi, yang lebih penting, semua teknik representasi, kecukupan theorems, dan
contoh-contoh yang dikembangkan untuk LF tetap berlaku untuk LLF.
2.9. Beton Sintaks untuk LLF
Di bagian ini, kita memperpanjang beton sintaks dari Elf [41] untuk mengekspresikan linear operator LLF.
Dalam melakukannya, kita ingin memenuhi dua kendala: pertama-tama, ada Elf program tidak harus menjalani
setiap perubahan sintaksis (kecuali mereka menyatakan beberapa cipta pengenal bahwa kita akan memperkenalkan)
jika kita mengeksekusi mereka dalam pelaksanaan LLF bergantung pada sintaks baru. Dengan kata lain,
ekstensi kami mengusulkan harus konservatif sehubungan dengan sintaks dari Elf. Kedua, kami ingin
LINEAR KERANGKA KERJA LOGIS
45
Abstrak sintaks
Beton sintaks
Jenis
JENIS
jenis
x:A
.K
{
x
:
A
}
K
A
->
K
K
<-
A
PM
PM
<T>
Jenis
A&B
A
&
B
A
−◦ B
A
-o
B
B
o-
A
x:A
.B
{
x
:
A
}
B
A
->
B
B
<-
A
()
M
,N
M
,
N
FST
M
<fst>
M
Benda-benda
SND
M
<snd>
M
Selainλx : A. M
[
x
^
A
]
M
M selain N
M
^
N
λx : A. M
[
x
:
A
]
M
MN
MN
GBR. 10.
Beton sintaks untuk LLF.
menghindari menjamurnya operator: menjaga jumlah mereka sekecil mungkin akan membuat masa depan ekstensi
lebih mudah untuk mengakomodasi jika mereka inklusi muncul menguntungkan.
Set karakter khusus dari Elf terdiri dari
% : . ) ( ] [ } {
. Kami menyampaikan ini dengan dua
simbol-simbol:
,
dan
^.
λ
&
objek dan tipe keluarga konstanta akibatnya direpresentasikan sebagai pengidentifikasi
terdiri dari nonempty string yang tidak mengandung spasi atau karakter
% : . ) ( ] [
}
{ , ^
. Seperti dalam Elf, pengidentifikasi harus dipisahkan satu sama lain oleh spasi (yaitu, kosong, tab, dan baru
garis-garis) atau karakter khusus. Kami meningkatkan set cipta pengenal Elf (jenis,
->
dan
<-
) dengan
<T>
,
&
,
−◦, ◦−,
<fst>
, dan
<snd>
. Meskipun tidak benar pengenal, simbol
()
ini juga disediakan;
string ini adalah dilarang dalam Elf.
Gambar 10 associates setiap
λ
&
operator untuk beton representasi. Istilah-istilah dalam
λ sublan-
mengukur LLF dipetakan ke sintaks dari Elf. Bahasa ini menawarkan kenyamanan menulis
->
sebagai
<-
dengan argumen-argumen yang terbalik dalam rangka untuk memberikan yang lebih operasional untuk membaca program, ketika
yang diinginkan:
dalam perspektif ini, kita membaca ekspresi A
<-
B sebagai " A jika B
." Kami memperluas kemungkinan ini untuk linear
implikasinya,
−◦. Jelas, ketika kita menggunakan ◦−, argumen harus bertukar: A ◦− B adalah sintaksis gula
untuk B
−◦ A.
Gambar 11 memberikan relatif precedence dan associativity dari operator ini. Seperti dalam Elf, tanda kurung
tersedia untuk mengesampingkan perilaku ini.
Diutamakan
Operator
Posisi
tertinggi
<fst>
<snd>
awalan
^
kiri asosiatif
&
tepat asosiatif
-o
->
tepat asosiatif
o-
<-
kiri asosiatif
{ : }
[ : ]
[ ^ ]
awalan
terendah
,
tepat asosiatif
GBR. 11.
Beton sintaks untuk LLF.
46
CERVESATO DAN PFENNING
Seperti dalam Elf, tanda tangan deklarasi c : Yang diwakili oleh program klausul:
c:A
.
Tipe keluarga konstanta yang menyatakan demikian. Untuk tujuan praktis, lebih mudah untuk menyediakan
sarana yang menyatakan linear asumsi. Memang, setiap kali objek formalisme yang kita inginkan untuk mewakili
membutuhkan banyak linier hipotesis, itu adalah sederhana untuk menulis mereka sebagai program klausul daripada
mengandalkan
beberapa inisialisasi rutin yang mengasumsikan mereka dalam konteks selama pelaksanaannya. Untuk tujuan ini, kami
mengizinkan
deklarasi bentuk
c selain A
.
dengan maksud bahwa deklarasi ini harus dimasukkan dalam konteks sebagai linear asumsi.
Kami mempertahankan dari Elf penggunaan
%
untuk komentar dan juru arahan. Kita mengadopsi konvensi
yang tersedia dalam bahasa itu dalam rangka untuk meningkatkan pembacaan LLF program [38]. Secara khusus, kami
mengizinkan menjaga jenis variabel terikat implisit setiap kali mereka dapat secara efektif direkonstruksi dengan
cara teknik-teknik yang mirip dengan yang saat ini dilaksanakan di Elf [38]. Kita menulis
{x}B, [x]B, dan [xselain ]B
ketika mempertahankan implisit tipe A dari variabel x di
{x : A}B, [x : A]B, dan [xselainA]B, masing-masing.
Konvensi yang sama berlaku untuk tergantung jenis. Seperti dalam Elf, pengikat untuk variabel-variabel yang diukur pada kepala
klausa dapat dihilangkan sama sekali jika kita menulis variabel-variabel tersebut dengan pengidentifikasi mulai dengan modal
surat. Selain itu, argumen instantiating mereka dapat terus implisit bila menggunakan deklarasi ini.
Akhirnya, kita bersantai persyaratan penulisan LLF deklarasi hanya di
η-bentuk panjang. Dengan cukup
mengetik informasi itu selalu mungkin untuk mengubah tanda tangan pada format tersebut.
3. METODOLOGI LINEAR META-REPRESENTASI
LF dan Elf merupakan alat yang berguna untuk mempelajari ada logika dan bahasa pemrograman dan sebuah
tempat bermain anak untuk bereksperimen dengan alternatif konstruksi pada tahap desain baru bahasa.
Kisaran praktis penerapan mekanika hamiltonian ini dibatasi oleh yayasan pada intuitionistic
jenis teori. Semua sistem formal yang telah berhasil dikodekan dalam LF (fungsional dan logika
bahasa pemrograman [33, 39],
λ-bate [40], dan sejumlah logika [27, 43]) berbagi mendasar
karakteristik: setiap kali penilaian yang menyebutkan konteks, bottom-up membaca inferensi aturan untuk
dapat menambahkan item, tapi itu tidak pernah menghilangkan asumsi-asumsi. Kita sebut konteks dengan properti ini permanen,
berbeda dengan volatile konteks, bebas dari pembatasan ini. Objek mekanika hamiltonian mengakui sewenang-wenang
operasi pada konteks mereka tidak dapat secara efektif dikodekan dalam LF: standar teknik, yang mewakili
objek konteks item seperti JIKA asumsi-asumsi, bukan suara dalam hal ini karena JIKA asumsi-asumsi yang permanen.
Alternatif adalah untuk mewakili objek konteks sebagai istilah di LF dan menerapkan secara eksplisit operasi yang
diperlukan untuk mengakses dan memanipulasi itu. Hal ini tidak diinginkan karena itu membuat kecukupan hasil sulit untuk
membuktikan dan sering mempersulit encoding dari meta-teori sifat sampai ke titik itu hampir tidak
dapat dikelola dalam praktek.
Situasi ini cukup disayangkan karena sebagian besar mekanika hamiltonian dari signifikansi praktis mengandalkan volatile
konteks penting dalam sebuah cara. Bahasa yang digunakan untuk pemrograman aplikasi komersial yang
penting: mereka memiliki sebuah toko dan instruksi tugas untuk mengubah nilai dari variabel. Paling nyata-
masalah dunia membawa keadaan yang berubah dengan waktu. Banyak logika dan jenis teori dasarnya
terikat untuk merusak konteks manipulasi. Permanen konteks yang tidak mencukupi bahkan untuk yang lebih tradisional
mekanika hamiltonian, misalnya ketika belajar efisien bukti–prosedur pencarian untuk intuitionistic logika [17].
Tipe linier teori
λ
&
disajikan dalam bagian sebelumnya mempertahankan semua sifat-sifat yang diinginkan
dari LF dan juga menambah formalisme ini dengan asumsi-asumsi linear, mengakui volatile manipulasi, dan
dengan satu set yang cocok dari operator untuk mengelola mereka. Fitur baru ini mengatasi atas kekurangan
dari LF: jika kita mewakili volatile konteks dari sebuah objek bahasa sebagai linear asumsi di
λ
&
,
merusak konteks operasi di objek formalisme dapat dimodelkan dengan suatu kombinasi yang tepat
dari operator linear.
Linear kerangka logis LLF ini didirikan pada jenis teori
λ
&
dan menggabungkan sebagai meta-
representasi metodologi penilaian-sebagai-jenis teknik LF dengan pengamatan di atas. Yang
LINEAR KERANGKA KERJA LOGIS
47
bagian ini menggambarkan menambahkan ekspresi LLF sebagai kerangka kerja logis dengan menggambarkan
meta-representasi metodologi ini mengadopsi, pertama secara abstrak dan kemudian pada beton studi kasus.
Formalisme yang kita inginkan untuk mewakili suatu keharusan perpanjangan Mini-ML [25, 33, 39], murni
pembatasan fungsional dari bahasa pemrograman ML [23, 36]. Lebih tepatnya, kita menambah bahwa lan
guage dengan toko dan penting instruksi untuk mengakses dan mengubah nilai-nilai yang dikandungnya, kami meresmikan
mengetik dan evaluasi semantik dari konstruksi ini, dan kami menunjukkan bahwa ini diperpanjang bahasa adalah
jenis properti pelestarian. Kita sebut ini bahasa MLR, untuk Mini-ML dengan Referensi. Linear
asumsi LLF dapat digunakan untuk mengkodekan memori individu sel dan linear operator kami jenis
teori menawarkan alat yang efektif untuk model manipulasi pada mereka.
Kami meninjau penilaian-sebagai-jenis representasi metodologi dan memperpanjang untuk menangani volatile seperti-
sumptions dalam Bagian 3.1. Kemudian, kami memberikan detil tapi informal presentasi dari sintaks, semantik,
dan jenis properti pelestarian untuk MLR dalam Bagian 3.2. Akhirnya, kami menunjukkan bagaimana untuk mengkodekan ini
berbagai
aspek di LLF dalam Bagian 3.7. Lampiran A berisi lengkap LLF tanda tangan untuk contoh ini. Dalam
berikut, kita akan berkonsentrasi terutama pada novel konstruksi yang tersedia di MLR, mengacu
pembaca untuk pustaka [13, 25, 33, 39] untuk aspek-aspek yang sudah hadir di Mini-ML.
3.1. Penilaian-sebagai-Jenis Revisited
Kami akan meninjau teknik penilaian-sebagai-jenis dari LF [27] dengan menganalisis sederhana berikut
aturan inferensi dari studi kasus di bagian ini:
,x:τ
e
e:
τ
e
perbaiki x
.e : τ
tpe memperbaiki
Mengabaikan untuk saat ini konteks
, hal itu menunjukkan bahwa perbaikan-titik ekspresi memperbaiki x
.e memiliki jenis τ jika e
memiliki jenis
τ dengan asumsi bahwa variabel x memiliki juga jenis τ . Kami akan menekankan fakta bahwa x dapat terjadi
dalam e dengan menulis e(x). Diberikan tertutup ekspresi memperbaiki x
.e(x), penghakiman di akhir tpe memperbaiki
dalil-dalil yang memperbaiki x
.e(x) memiliki jenis τ (kita perlu memberikan derivasi untuk memastikan bahwa ini memang
terjadi). Kami menyebutnya seperti sebuah penilaian yang sederhana. Penilaian-sebagai-jenis representasi metodologi encode
sederhana penilaian sebagai
λ jenis dasar. Dalam Bagian 3.7, kita akan menggunakan tipe keluarga konstanta EXP dan TP,
kedua jenis
JENIS
untuk mengklasifikasikan ekspresi dan jenis objek bahasa, masing-masing. Dalam
bentuk umum mengetik penghakiman atas berkaitan ekspresi dan jenis, dan oleh karena itu kita encode
sebagai jenis keluarga TPE, dari jenis
EXP

TP

JENIS
. Diberikan pernyataan (
MEMPERBAIKI
λx:
EXP
. e x) dan
τ (untuk
dapat dijelaskan di bawah ini) untuk ditutup ekspresi memperbaiki x
.e(x) dan untuk objek bahasa jenis τ , sederhana
penilaian
e
perbaiki x
.e(x) : τ adalah direpresentasikan sebagai
TPE
(
MEMPERBAIKI
(
λx :
EXP
. e x)) τ .
Penghakiman dalam premis dari aturan tpe memperbaiki berbeda di alam. Memang, hal itu menunjukkan bahwa mantan-
pression e(x) memiliki jenis
τ jika kita mengasumsikan bahwa variabel x memiliki juga jenis τ . Penilaian bentuk ini
disebut hipotesis. Perhatikan juga bahwa x adalah variabel terikat dalam memperbaiki x
.e(x), tapi itu adalah gratis di e(x). Oleh karena itu,
premis itu mengungkapkan fakta bahwa e(x) memiliki jenis
τ untuk generik ekspresi x tipe τ . Penghakiman
, x:τ
e
e(x) :
τ oleh karena itu dikatakan juga parametrik dalam x. Penilaian-sebagai-jenis representa-
tion metodologi encode hipotesis parametrik dan penilaian dengan cara sederhana dan tergantung
tipe fungsi masing-masing. Premis dari aturan di atas, yang merupakan parametrik dalam x dan hipotetis
di x :
τ , diwakili sebagai berikut:
x:
EXP
.
TPE
x
τ→
TPE
( e x)
τ
Perhatikan bahwa instantiating parameter x dengan beberapa istilah e hasil hipotetis penghakiman mendalilkan
bahwa e(e ) yang memiliki jenis
τ dengan asumsi bahwa e memiliki jenis τ . Ini mengurangi penilaian sederhana segera setelah kami
memberikan derivasi untuk hipotesis ini.
Upaya mencari kanonik LF derivasi dengan tipe di atas mengurangi untuk mencari
derivasi untuk base tipe
TPE
( e x)
τ setelah ditambahkan asumsi x :
EXP
dan t
x
:
TPE
x
τ
untuk konteks LF. Melihat ini sebagai alternatif pengkodean untuk premis dari aturan tpe memperbaiki menggambarkan
48
CERVESATO DAN PFENNING
cara konteks obyek dikodekan menurut penilaian-sebagai-jenis metodologi: setiap item dalam
konteks objek formalisme diwakili sebagai satu atau lebih asumsi dalam konteks LF. Ini
teknik menawarkan keuntungan lebih lanjut bahwa kita dapat mengandalkan primitif operasi LF untuk mensimulasikan
lookup dari tingkat objek asumsi. Kurang canggih representasi, misalnya orang-orang yang menyandikan
objek konteks sebagai sebuah istilah, harus memberikan eksplisit akses operasi.
Mengamati bahwa aturan tpe memperbaiki dapat dibaca sebagai penilaian yang bersifat parametrik dalam (fungsional) ekspresi e
dan jenis
τ , dan hipotetis di derivability dari premis. Memang, hal ini dikodekan sebagai berikut
deklarasi
TPE MEMPERBAIKI
:
e:
EXP

EXP
.τ:
TP
.
(x:
EXP
.
TPE
x
τ→
TPE
(ex)
τ)

TPE
(
MEMPERBAIKI
(
λx :
EXP
.ex))τ
atau, mengambil keuntungan dari beton sintaks dari Elf (lihat Bagian 2.9),
tpe memperbaiki
:
(
{
x:exp
}
tpe x T -> tpe (E x) T)
-> tpe (fix ([x:exp] E x)) T.
Secara ringkas, keputusan-sebagai-jenis representasi metodologi untuk LF encode sederhana penilaian sebagai
jenis dasar, hipotesis parametrik dan penilaian yang sederhana dan tergantung tipe fungsi, masing-masing,
dan unsur-unsur objek konteks sebagai item dalam konteks LF. Selain itu, derivasi sederhana
penilaian secara alami direpresentasikan sebagai hal yang sesuai tipe dasar.
Penilaian-sebagai-jenis metodologi berinteraksi dengan sangat baik dengan higher-order abstrak sintaks,
suatu teknik untuk representasi dari tingkat sintaksis suatu objek formalisme yang mengkode objek
variabel sebagai meta-variabel dan bergantung pada
λ-abstraksi dari λ untuk meniru objek generik-tingkat mengikat
konstruksi. Di atas, kita dikodekan memperbaiki titik-ekspresi memperbaiki x
.e(x), yang mengikat variabel x di e(x) sebagai
(
MEMPERBAIKI
(
λx :
EXP
. e x)). Kami menggunakan λ-abstraksi dari LF untuk mengekspresikan mengikat, dan akibatnya dikodekan
operator memperbaiki dengan cara LF konstan
memperbaiki
yang menerima fungsional operator (
fix : (exp
-> exp) -> exp
).
Kesetiaan representasi dari sebuah objek formalisme ditangkap dengan cara kecukupan
teorema yang berhubungan dengan entitas yang diwakili mereka encoding. Keuntungan penting dari
penilaian-sebagai-jenis teknik sehubungan dengan kurang canggih pendekatan ini adalah bahwa hal itu menghasilkan pengkodean
sangat dekat dengan notasi-notasi yang diformalkan. Hal ini membuat kecukupan theorems mudah untuk membuktikan.
Di sini, dan di sisa kertas ini, kita melihat dan menggambarkan operasi pada konteks yang muncul
ketika kita membangun derivasi "bottom-up", yaitu, dari penilaian yang bersangkutan terhadap axioms.
Pandangan ini adalah yang paling alami untuk menjelaskan contoh dan mengantisipasi logika pemrograman
interpretasi LLF. Misalnya, alih-alih mengatakan bahwa kita debit hipotesis dalam aturan opc ilam
dalam Gbr. 2 kami mengatakan bahwa kami memperkenalkan sebuah hipotesis. Dari sudut pandang ini,
λ menawarkan dua operasi pada
konteks: penyisipan dan lookup. Secara khusus, konteks hanya dapat tumbuh pada pembangunan dari bawah ke atas
dari derivasi. Oleh karena itu, penghakiman-sebagai-jenis metodologi dalam
λ tidak dapat menangkap objek bahasa
yang melakukan penghapusan pada konteks mereka. Pertimbangkan contoh berikut inferensi aturan, yang diambil dari
studi kasus di bagian berikutnya:
(S
, c = v)
K
kembali
→a
(S
,c=v)
K
c:
=

2
v→a
ev menetapkan

2
Aturan ini menjelaskan semantik tugas dalam pemrograman imperatif bahasa (rincian lebih lanjut
akan diberikan pada bagian berikutnya). Hal itu menunjukkan bahwa, dalam rangka untuk menetapkan nilai
v untuk sel c, kita
harus update mengikat c
= v di toko dengan c = v; beberapa tidak menarik nilai yang dikembalikan. Yang
elegan pengkodean sistem ini di LF akan mewakili masing-masing sel–nilai pasangan di toko sebagai meta-level
asumsi. Namun,
λ tidak menyediakan sarana untuk mensimulasikan sistem lama yang mengikat, c = v .
Sebaliknya, kita dapat dengan mudah mencapai efek ini di LLF. Memang, mencari linear asumsi di
λ
&
menghilangkan itu dari konteks. Hal ini menunjukkan pengkodean setiap sel–nilai pasangan c
= v hadir pada setiap instan
di toko objek bahasa sebagai LLF linear asumsi
Cn
Selain:
mengandung c
v.
LINEAR KERANGKA KERJA LOGIS
49
Linier jenis konstruktor
λ
&
menyediakan sarana yang diperlukan untuk memanipulasi asumsi tersebut.
Kita bergantung pada
untuk memasukkan mereka dalam konteks LLF dan mengambil keuntungan dari konteks membelah semantik
dari operator ini untuk mengisolasi mereka dalam rangka untuk mengakses mereka. Aditif jenis produk konstruktor, &,
menawarkan
cara untuk menduplikasi atau berbagi asumsi-asumsi linear antara dua conjuncts. Operator ini juga dapat digunakan
untuk mengekspresikan pilihan antara eksklusif alternatif, meskipun kami tidak akan mengambil keuntungan dari fitur ini
di sini. Akhirnya, unit jenis,
, izin membuang yang tidak terpakai linear hipotesis.
Ini fitur yang berbeda akan digambarkan secara rinci dalam Bagian 3.7. Kami hanya menunjukkan pengkodean
aturan di atas:
ev menetapkan*2
:
(mengandung C V
-o ev K (kembali unit) A)
-o (mengandung C V' -o ev K (menetapkan*2 (rf C) V) A).
Linearitas dari kami kerangka kerja logis dapat diintegrasikan ke yang lebih tinggi-order abstrak sintaks sebagai
cara yang nyaman dari bahasa pengkodean mengandalkan linear binder [6]. Ketika mereka tidak dibutuhkan, kita
hanya dapat menggunakan LF fragmen LLF persis seperti sebelumnya.
3.2. Mini-ML dengan Referensi
Pilihan penting dalam implementasi dari bahasa pemrograman yang tergantung pada validitas dari meta-
teori sifat. Jenis pelestarian in Standard ML [23, 36], misalnya, menjamin bahwa tidak ada mengetik
kesalahan dapat timbul selama evaluasi; oleh karena itu pelaksanaan yang dapat dipercepat secara signifikan dengan mengabaikan
jenis
informasi pada saat run-time. Meta-teori sifat di hadapan nonfungsional fitur, termasuk di
paling konkret bahasa, sulit untuk membuktikan dan oleh karena itu formal analisis penting ekstensi
murni fungsional bahasa pemrograman yang telah menerima perhatian besar dalam literatur. Penambahan
referensi dan interaksi mereka dengan polimorfisme telah dianalisis dengan alat yang berbeda, mulai
dari kompleks domain-teori pendekatan Damas [15] untuk sintaksis perumusan Harper [26].
Kedua ide ini diadaptasi dari Wright dan Felleisen, yang selain mempertimbangkan kelanjutan dan
pengecualian [54].
Bukti dari sifat-sifat yang panjang dan rawan kesalahan. Oleh karena itu, kerja terbaru telah menyelidiki
kemungkinan sebagian mengotomatisasi generasi mereka atau setidaknya mereka verifikasi. Chirimar memberikan Forum
spesifikasi untuk bahasa dengan referensi, pengecualian, dan kelanjutan dan menggunakan meta-teori
dari Forum [34] untuk program studi kesetaraan [12]. VanInwegen [52] secara resmi membuktikan sifat-sifat tersebut
sebagai nilai kesehatan (fakta yang mengevaluasi suatu ekspresi yang menghasilkan nilai, jika itu berakhir) untuk sebagian besar
dari
Standard ML dengan bantuan HOL teorema prover [24].
Di bagian ini, kita mendefinisikan MLR sebagai perpanjangan Mini-ML dengan referensi dan petunjuk penting
dan studi aspek meta-teori. Meskipun tujuan utama kami adalah untuk menunjukkan ekspresif
kekuatan LLF, presentasi kami berbeda dalam beberapa aspek dari formulasi dan bukti-bukti dalam literatur
dan karena itu mungkin menjadi sesuatu yang menarik dalam dirinya sendiri. Kami akan menunjukkan perbedaan dan kesamaan
dengan
pendekatan yang muncul.
3.3. Ekspresi dan Toko
Sejak diperkenalkan pada [13], bahasa Mini-ML dan varian itu telah digunakan untuk studi kasus
dalam presentasi logis kerangka kerja [25, 33, 39]. Mini-ML adalah murni pembatasan fungsional dari
bahasa pemrograman ML [23, 36]. Lebih khusus lagi, itu adalah kecil statis diketik fungsional
bahasa pemrograman termasuk angka, ekspresi kondisional, pasang, polimorfik definisi,
rekursi, dan fungsional ekspresi.
Kami mempertimbangkan perpanjangan Mini-ML dengan toko dan petunjuk penting dalam gaya ML untuk
mengakses dan mengubah nilai-nilai yang dikandungnya. Kita menyebut bahasa ini Mini-ML dengan Referensi, atau MLR untuk
pendek. The toko yang MLR program ini didefinisikan sebagai kumpulan dari sel-sel yang masing-masing berisi suatu nilai. Kami
akan
kadang-kadang menggunakan lokasi atau alamat sebagai sinonim dari sel. MLR membuat tersedia semua konstruksi Mini-
ML tapi memperkaya sintaks ekspresi dengan operasi yang diperlukan untuk memanipulasi
sel-sel. Sehingga bahasa ini ditentukan oleh hal-hal berikut tata bahasa, di mana kita telah dipisahkan
konstruksi tidak hadir dalam standar presentasi Mini-ML dengan double bar ( ). Sel-sel c dan toko S
tidak langsung dapat diakses oleh programmer, tetapi itu adalah adat dan nyaman untuk memanjakan sintaks
50
CERVESATO DAN PFENNING
dalam rangka untuk mewakili tahap-tahap peralihan selama perhitungan.
Ekspresi:
e ::
=x
(Variabel)
|z|s e
(Bilangan)
|kasus e dari z ⇒ e
1
|sx⇒e
2
(Conditional)
|
(Unit elemen)
|e
1
,e
2
| fst e| snd e
(Pasangan)
| lam x.e|e
1
e
2
(Fungsi)
| letval x = e
1
di e
2
|
(Definisi)
letname x
=e
1
di e
2
| fix x.e
(Rekursi)
c
| ref e|!e
(Referensi)
|e
1
:
=e
2
|e
1
;e
2
(Perintah)
Toko-toko:
S ::
= ·|S, c = v
Dalam produksi ini, c berkisar dari kategori leksikal dari memori lokasi, sementara kita gunakan mari-
ter x untuk variabel. Meta-variabel
v menunjukkan nilai-nilai, yang kita akan menentukan lama. Kami akan memperlakukan
toko-toko sebagai multisets, tanpa awalan "
·" dari nonempty toko, dan overload "," untuk menunjukkan kesatuan
dari dua toko. Akhirnya, kita memerlukan sel-sel yang muncul pada sisi kiri dari sebuah toko item untuk menjadi
berbeda.
Yang polimorfisme dalam MLR dibatasi untuk nilai-nilai, yang umumnya diterima sebagai superior ke
imperative jenis variabel hadir dalam versi sebelumnya dari SML [31]. Kami mencapai ini dengan membedakan
dua bentuk biarkan. Ekspresi ref e secara dinamis mengalokasikan sel dan menginisialisasi dengan nilai
e. Isi sel dapat diperiksa oleh dereferencing dengan ! dan dimodifikasi dengan penugasan
(:
=). Yang berbeda, dari [54], tetapi konsisten dengan aliran utama dalam literatur (termasuk definisi
dari Standar ML [36]), kami memilih operasi ini tidak kembali ditugaskan objek, tetapi unit elemen
. Urutan operator (;) biasanya digunakan sebagai sarana chaining serangkaian tugas dengan
beberapa nilai akhir; itu adalah sintaksis gula untuk ekspresi (letval x
=e
1
di e
2
) bila x tidak
tidak terjadi di e
2
. Seperti biasanya terjadi dalam bahasa-bahasa fungsional, MLR tidak menawarkan eksplisit berarti untuk
deallocate sel-sel memori.
Semua konstruksi ini tersedia dalam Standar ML [36] dengan pengecualian alamat sendiri
(c), yang tidak dapat dimanipulasi secara langsung dalam bahasa itu. Kita memerlukan MLR program untuk tidak menyebutkan
lokasi langsung sehingga sel-sel yang selalu dijamin akan diinisialisasi. Dengan demikian sel-sel yang dibuat dinamis, bahan
policarbonat mem-
cara secara khusus dengan wasit dan dapat diberi nama dengan mengikat mereka untuk variabel dengan salah satu dari dua
biarkan konstruksi
dari MLR.
Seperti di ML, referensi sel-sel MLR mencakup dua fitur yang berbeda dari pemrograman imperatif
bahasa seperti C atau Pascal. Pertama-tama, mereka memainkan peran penting variabel tersebut
bahasa dan dapat digunakan seperti (kecuali untuk kebutuhan dereferencing mereka secara eksplisit dalam rangka untuk
mengakses nilai mereka). Kedua, kita bisa menggunakannya sebagai petunjuk dalam struktur data, meskipun kegunaannya adalah
agak terbatas dalam hal ini karena tidak adanya rekursif data jenis dalam MLR. Seperti struktur data yang
dapat dengan mudah ditambahkan ke bahasa.
3.4. Mengetik
Bahasa jenis MLR menambah mengetik konstruksi biasanya hadir dalam Mini-ML, yaitu
alam nomor, unit, pemasangan, dan tipe fungsional, dengan satu baru konstruktor: untuk masing-masing jenis
τ , jenis
τ ref untuk referensi ke objek jenis τ . Sintaks dari jenis dirangkum dalam mengikuti tata bahasa:
Jenis :
τ :: = α | nat | 1 | τ
1
×τ
2

1
→τ
2
τ ref
Kami menggunakan jenis variabel untuk mengungkapkan skema polimorfisme. Kami menghilangkan eksplisit pembilang dalam
mendukung
substitusi dalam mengetik aturan untuk letname membangun (lihat Gbr. 12). Atas dasar definisi ini,
statis semantik MLR alami meluas tradisional mengetik aturan Mini-ML. Kemungkinan
ekspresi lagi sel-sel yang membutuhkan memperkenalkan toko konteks sebagai sarana untuk menyatakan jenis
LINEAR KERANGKA KERJA LOGIS
51
Ekspresi
tpe x

;
,x:τ
e

x:
τ
tpe unit

;
e

:1
tpe z

;
e

z : nat
;
e

e : nat
tpe s

;
e

s e : nat
;
e

e : nat
;
e

e
1

:
τ
;
, x : nat
e

e
2

:
τ
tpe kasus

;
e
kasus e z
⇒e
1

|sx⇒e
2

:
τ
;
e

e
1

:
τ
1

;
e

e
2

:
τ
2
tpe pasangan

;
e

e
1

,e
2

:
τ
1

×τ
2

;
e

e:
τ
1

×τ
2
tpe fst

;
e

fst e :
τ
1

;
e

e:
τ
1

×τ
2
tpe snd

;
e

snd e :
τ
2

;
,x:τ
1
e

e:
τ
2
tpe lam

;
e

lam x
.e:τ
1

→τ
2

;
e

e
1

:
τ
2

→τ
1

;
e

e
2

:
τ
2
tpe aplikasi

;
e

e
1

e
2

:
τ
1

;
e

e
1
:
τ
1

;
,x:τ
1
e

e
2

:
τ
2
tpe letval

;
e

letval x
=e
1

di e
2

:
τ
2

;
e

[e
1

/x]e
2

:
τ
tpe letname

;
e

letname x
=e
1

di e
2

:
τ
;
,x:τ
e

e:
τ
tpe memperbaiki

;
e

perbaiki x
.e:τ
...............................................................................................
tpe sel

,c:τ;
e

c:
τ ref
;
e

e:
τ
tpe ref

;
e

ref e :
τ ref
;
e

e:
τ ref
tpe deref

;
e

!e :
τ
;
e

e
1

:
τ
1

;
e

e
2

:
τ
2
tpe seq

;
e

e
1

;e
2

:
τ
2

;
e

e
1

:
τ ref
;
e

e
2

:
τ
tpe menetapkan

;
e

e
1

:
=e
2

:1
Toko
tpS kosong
S

·:·
S

S:
;
·
e

v:τ
tpS sel
S

(S
, c = v) : (
,c:τ)
GBR. 12.
Mengetik aturan di MLR, ekspresi dan toko.
lokasi gratis. Lebih tepatnya, item c :
τ di toko konteks menyatakan τ sebagai tipe dari nilai-nilai yang
c dapat berisi; c sendiri memiliki akibatnya jenis
τ ref. Konteks, seperti biasa, menetapkan jenis untuk variabel-variabel bebas.
Mereka dibangun sesuai dengan tata bahasa:
Konteks:
::
=·|,x:τ
Toko konteks:
::
=·|
,c:τ
Kita bergantung pada konvensi biasa bahwa nama-nama variabel dan sel-sel dinyatakan di toko-toko dan
konteks toko-toko, masing-masing adalah berbeda. Selain itu, kita memperlakukan kedua bentuk konteks sebagai multisets.
52
CERVESATO DAN PFENNING
Kita mengungkapkan fakta bahwa MLR ekspresi e memiliki jenis
τ sehubungan dengan toko konteks
dan
konteks
dengan penghakiman
;
e
e:
τ.
Kehadiran toko konteks dalam mengetik aturan untuk MLR diperlukan bahkan jika kita melarang pengguna untuk
menulis alamat secara langsung dalam program-program mereka. Itu account untuk sel-sel dialokasikan secara dinamis selama
evaluasi,
yang mungkin muncul dalam hasil antara dan di akhir jawaban.
Inferensi aturan untuk mengetik penilaian ditampilkan pada Gambar. 12. Bagian atas dari angka ini
menunjukkan aturan untuk fungsi inti dari MLR. Perubahan sehubungan dengan aturan biasa untuk Mini-ML
terbatas sistematis inklusi dari toko konteks dalam penilaian.
Bagian tengah dari Gambar. 12 menunjukkan aturan untuk fitur baru dari MLR. Sedangkan untuk fungsional kasus,
mereka mengungkapkan kondisi di mana suatu ekspresi dapat statis diterima sebagai bermakna. Untuk
contoh, aturan tpe deref memberlakukan bahwa hanya referensi dereferenced.
Di bagian bawah Gambar. 12, kami menyajikan aturan untuk mengetik sebuah toko. Penilaian yang kita anggap memiliki
bentuk
S
S:
bahwa kita menafsirkan sebagai mensyaratkan bahwa jenis dari masing-masing nilai
v disimpan di S bertepatan dengan jenis
sesuai sel seperti yang ditentukan dalam
. Toko konteks
memberikan jenis sel
v dapat menyebutkan.
Kita akan selalu tertarik pada top-level penilaian bentuk
S
S:
karena toko akan secara umum
merujuk sirkuler sel-sel sendiri. Aturan tpS sel mencegah ekspresi yang mengandung variabel-variabel bebas dari yang
dimasukkan ke dalam toko.
3.5. Evaluasi
Sebuah MLR ekspresi e akan secara umum menyebutkan referensi sel dan nilai-nilai yang terkandung di toko.
Evaluasi e biasanya akan tidak hanya mengambil nilai-nilai ini, tetapi juga mengubah mereka atau membuat
sel-sel. Oleh karena itu, sebagai e dievaluasi, toko akan menjalani transformasi, dan pada saat nilai e
ini akhirnya diproduksi, hal itu mungkin tampak sangat berbeda dari toko kami memulai dengan. Pengamatan ini
menunjukkan evaluasi penilaian bentuk
S; e
→ S ; v,
dimana S adalah toko sebelum mengevaluasi e, dan S hasil dari evaluasi dari e ke
v: sel-sel dalam e merujuk ke
S sedangkan sel-sel di
v merujuk ke S . Formulasi ini meluas tradisional evaluasi penilaian untuk Mini-ML
[25, 33, 39].
Dinamis semantik fungsional bahasa diperkaya dengan fitur penting, seperti MLR's
referensi, biasanya dinyatakan dalam literatur dengan cara ini. Kita malah akan mengadopsi berbagai
strategi dan menyajikan pengurangan yang terjadi selama pelaksanaan MLR program sebagai kelanjutan-
berdasarkan evaluasi aturan. Pilihan ini telah ditentukan oleh niat kami untuk mengkodekan semantik dari MLR
di LLF. Representasi langsung dari penghakiman atas, meskipun mungkin akan mengakibatkan kurang
elegan encoding. Untuk alasan yang sama, Chirimar [12] juga memilih kelanjutan berbasis formulasi.
Berbeda dari lebih deklaratif formulasi, kelanjutan berbasis eksekusi strategi membebankan
ketat rangka evaluasi pada berbagai subexpressions dari setiap konstruk dalam bahasa. Ini
agar menghormati diharapkan aliran data dan oleh karena itu alami. Misalnya, ketika menghitung
nilai dari sebuah ekspresi dari bentuk (letval x
=e
1
di e
2
) pertama-tama kita akan mengevaluasi e
1
, mendapatkan nilai
v,
pengganti untuk x di e
2
, dan hanya kemudian mengevaluasi ekspresi yang dihasilkan.
Pelaksanaan yang efektif dari strategi ini membutuhkan sequentializing evaluasi subex-
pressions konstruk dengan lebih dari satu argumen. Salah satu dari mereka dievaluasi segera sedangkan
evaluasi dari orang lain ditunda sampai nilai yang telah dihasilkan selama ini. Jelas, jika subexpressionn
tergantung pada nilai yang lain, kita proses itu berlangsung. Kami mewujudkan ide ini dengan menjaga tumpukan
ekspresi yang akan dievaluasi, yang disebut kelanjutan.
LINEAR KERANGKA KERJA LOGIS
53
Menunda evaluasi dari sebuah ekspresi e
2
mendukung ekspresi lain e
1
ini dicapai dengan mendorong
mantan menjadi kelanjutan. Karena, seperti ketika mengevaluasi (letval x
=e
1
di e
2
) misalnya, nilai
dari e
1
mungkin perlu diganti untuk beberapa variabel bebas x di e
2
kami bungkus pengikat untuk x di sekitar
e
2
dan dengan demikian menyisipkan objek dari bentuk
λx.e
2
dalam kelanjutan (atau menulis dengan saat ini
kelanjutan, tergantung pada apakah kelanjutan dipandang sebagai tumpukan dari fungsi atau sebagai satu
fungsi yang sesuai dengan komposisi mereka). Untuk keseragaman, akan lebih mudah untuk mengambil langkah ini setiap
kali kita memasukkan item ke dalam stack. Sesegera e
1
telah sepenuhnya dievaluasi untuk nilai
v, λx.e
2
ini
diekstrak dari kelanjutan,
v diganti untuk variabel x di e
2
, dan [
v/x]e
2
dievaluasi pada gilirannya.
Perlunya membedakan ekspresi masih harus dievaluasi dari nilai-nilai yang dikembalikan membutuhkan
pengenalan baru sintaksis lapisan petunjuk. Secara khusus, kami menulis eval e untuk permintaan
untuk mengevaluasi ekspresi e dan menunjukkan niat untuk mengembalikan nilai
v seperti kembali v. Petunjuk
diperlukan juga untuk tujuan penanganan sebagian dievaluasi ekspresi.
Sementara mengevaluasi Mini-ML ekspresi hanya menghasilkan nilai MLR ekspresi akan secara umum
menghasilkan benda-benda yang disebut sel. Oleh karena itu hasil evaluasi dari instruksi saya harus mencakup
tidak hanya nilai akhir
v tetapi juga reifikasi [S ] tugas akhir toko S itu menarik referensi dari;
selain itu, sebagai ukuran kebersihan, kami menandai sel-sel c yang telah diperkenalkan selama evaluasi
proses dengan mengikat mereka di depan pasangan ([S ]
, v) dengan cara yang baru c. operator. Yang dihasilkan
objek disebut menjawab dan ditandai dengan huruf a. Untuk tujuan kita, [S ] akan menjadi urutan
yang diperoleh dengan mengurutkan elemen-elemen dari S menurut beberapa rangka sewenang-wenang. Hal ini, bagaimanapun,
dapat dibayangkan
bahwa hanya sel-sel yang berkontribusi terhadap nilai akhir akan disimpan, menyadari dengan cara ini bentuk sampah
pengumpulan.
Struktur instruksi, kelanjutan, dan jawaban yang diberikan oleh berikut tata bahasa, di mana
kami telah ditunjukkan dengan bar ganda petunjuk diperkenalkan dalam korespondensi imperatif
konstruksi MLR.
Petunjuk :
saya ::
= eval e | kembali v
| kasus

vz⇒e
1
|sx⇒e
2
| v, e

| fst

v | snd

v
| aplikasi

ve
ref

v | deref

v | v :=

1
e
|v
1
:
=

2
v
2
Lanjutannya :
K ::
= init | K , λx.saya
Jawaban :
a ::
= ([S], v) | baru c.a
Mengetik aturan untuk benda-benda dalam tiga kategori tersebut ditampilkan dalam Fig. 13. Perhatikan bahwa jenis
jawaban bertepatan dengan jenis tertanam nilai. Aturan tpa val mensyaratkan bahwa toko itu dipasangkan
dengan baik mengetik, sementara aturan tpa baru yang membatasi setiap terjadinya sel-sel yang terikat di sebuah jawaban untuk
secara konsisten diketik.
Nilai-nilai yang merupakan subclass dari ekspresi yang mengevaluasi untuk diri mereka sendiri. Mereka yang ditentukan oleh
berikut tata bahasa.
Nilai-nilai:
v ::= x | z | s v |
|v
1
v
2
| lam x.e
c
Atas dasar definisi ini, kita dapat membenarkan penggunaan istilah "nilai" di atas presentasi. Tidak
hanya tidak kembali beroperasi hanya pada nilai-nilai, tetapi perhitungan tempat-tempat yang nilai di tengah-tengah jawaban dan
isi dari setiap sel di dalam toko adalah suatu nilai. Lihat [6] pernyataan resmi dari sifat ini.
Kita model kelanjutan berbasis semantik penting konstruksi MLR dengan cara
penilaian bentuk
S
K
saya
→ a,
di mana saya adalah instruksi yang akan dieksekusi, K saat ini kelanjutan, S adalah toko sehubungan dengan
mana aku harus dievaluasi, dan a adalah jawaban akhir yang dihasilkan sebagai hasil dari evaluasi.
Inferensi aturan untuk evaluasi diberikan dalam buah Ara. 14 dan 15. Evaluasi paling petunjuk
dalam fungsi inti dari MLR tidak mengakses toko. Satu-satunya pengecualian adalah aturan ev init yang harus
54
CERVESATO DAN PFENNING
Petunjuk

;
e

e:
τ
tpi eval

;
saya

eval e :
τ
;
e

v:τ
tpi kembali

;
saya

kembali
v:τ
;
e

v : nat
;
e

e
1

:
τ
;
, x : nat
e

e
2

:
τ
kasus tpi


;
saya

kasus

vz⇒e
1

|sx⇒e
2

:
τ
;
e

v:τ
1

;
e

e:
τ
2
tpi pasangan


;
saya

v, e

:
τ
1

×τ
2

;
e

v:τ
1

×τ
2
tpi fst


;
saya

fst

v:τ
1

;
e

v:τ
1

×τ
2
tpi snd


;
saya

snd

v:τ
2

;
e

v:τ
2

→τ
1

;
e

e:
τ
2
tpi aplikasi


;
saya

aplikasi

ve:τ
1

...............................................................................................
;
e

v:τ
tpi ref


;
saya

ref

v : τ ref
;
e

v : τ ref
tpi deref


;
saya

deref

v:τ
;
e

v : τ ref
;
e

e:
τ
tpi assign1


;
saya

v :=

1

e:1
;
e

v
1

:
τ ref
;
e

v
2

:
τ
tpi assign2


;
saya

v
1

:
=

2

v
2

:1
Lanjutannya
tpK init
K

init :
τ⇒τ
;x:
τ
1
saya

saya :
τ
K

K:
τ⇒τ
2
tpK lam
K

K
, λx. saya : τ
1

⇒τ
2
Jawaban
S

S:
;
·
e

v:τ
tpa val
a

([S]
, v) : τ
,c:τ
a

a:
τ
tpa baru
a

baru c
.a:τ
GBR. 13.
Mengetik aturan di MLR, petunjuk, kelanjutan dan jawaban.
paket saat ini toko bersama-sama dengan menghasilkan nilai dalam rangka menyusun jawaban akhir. Lebih
umumnya, operasi ini bisa juga mencakup pengumpulan sampah, tapi kami tidak mengejar kemungkinan ini
di sini.
Inferensi aturan yang bersangkutan dengan nonfungsional ekspresi MLR dan sesuai dalam-
structions dipisahkan oleh garis putus-putus di Gambar. 14 dan 15, masing-masing.
Sel-sel (aturan ev sel) hanya untuk mengevaluasi diri mereka sendiri, seperti nilai apapun. Urutan instruksi e
1
;e
2
memiliki sederhana semantik juga: mengevaluasi e
1
mengabaikan nilai kembali, dan kemudian melanjutkan dengan
evaluasi e
2
(aturan ev seq).
Evaluasi ref e menghitung nilai
v e (aturan ev ref), mengalokasikan sel baru c di toko,
menginisialisasi dengan
v dan akhirnya kembali c itu sendiri (aturan ev ref

). Perhatikan bahwa aturan ev ref

juga memiliki efek
mengikat c pada jawaban akhir dengan cara baru c. . Argumen bagian dari !e dievaluasi untuk referensi cell
(aturan ev deref) dan nilai yang terkait untuk dikembalikan (aturan ev deref

). Kami mengandalkan bantu baca
penilaian S
c
= v dalam rangka untuk mengambil nilai dari sebuah sel (aturan baca val). Evaluasi e
1
:
=e
2
pertama mengevaluasi e
1
untuk lokasi toko c (aturan ev menetapkan), menghitung nilai
ve
2
(aturan ev menetapkan

1
), dan
menggantikan mantan isi c dengan
v (aturan ev menetapkan

2
). Nilai yang dikembalikan
.
Kami menyimpulkan diskusi kita tentang evaluasi dengan beberapa kata tentang interaksi referensi
dan polimorfisme. Pertanyaannya adalah halus dan telah mendapat perhatian besar dalam literatur [26, 31, 50].
LINEAR KERANGKA KERJA LOGIS
55
Ekspresi

(Tidak ada x ev)


S
K
kembali z
→a
ev z

S
K
eval z
→a
S
K
, λx. kembali s x
eval e
→a
ev s

S
K
eval s e
→a
S
K
, λy. kasus

yz
⇒e
1

|sx⇒e
2

eval e
→a
ev kasus

S
K
eval kasus e z
⇒e
1

|sx⇒e
2

→a
S
K
kembali
→a
ev unit

S
K
eval
→a
S
K
, λx. x, e
2


eval e
1

→a
ev pasangan

S
K
eval e
1

,e
2

→a
S
K
, λx. fst

x
eval e
→a
ev fst

S
K
eval fst e
→a
S
K
, λx. snd

x
eval e
→a
ev snd

S
K
eval snd e
→a
S
K
kembali lam x
.e→a
ev lam

S
K
eval lam x
.e→a
S
K
, λx. aplikasi

xe
2

eval e
1

→a
ev aplikasi

S
K
eval e
1

e
2

→a
S
K
, λx. eval e
2

eval e
1

→a
ev letval
S
K
eval letval x
=e
1

di e
2

→a
S
K
eval [e
1

/x]e
2

→a
ev letname

S
K
eval letname x
=e
1

di e
2

→a
S
K
eval [fix x
. e/x]e → a
ev memperbaiki

S
K
eval memperbaiki x
.e→a
...............................................................................................
S
K
kembali c
→a
ev sel

S
K
eval c
→a
S
K
, λx. ref

x
eval e
→a
ev ref

S
K
eval ref e
→a
S
K
, λx. deref

x
eval e
→a
ev deref

S
K
eval !e
→a
S
K
, λx. eval e
2

eval e
1

→a
ev seq

S
K
eval e
1

;e
2

→a
S
K
, λx. x :=

1

e
2

eval e
1

→a
ev menetapkan

S
K
eval e
1

:
=e
2

→a
GBR. 14.
Evaluasi dalam MLR, ekspresi.
Pertimbangkan contoh berikut MLR ekspresi:
letname f
= ref (lam x.x)
di f :
= lam x.s x;
!f
Pada pandangan pertama, ini ekspresi mengalokasikan sel dan menginisialisasi dengan fungsi identitas, yang telah
polymorphic
α → α. Dalam tubuh letname, kami update pertama untuk pengganti fungsi, jenis
nat
→ nat, dan kemudian menerapkannya ke
, tipe 1. Jelas, ada sesuatu yang salah, tapi mengetik aturan
MLR menerima program di atas sebagai ekspresi yang benar dari tipe 1. Apakah ada cacat dalam definisi
statis semantik bahasa kita? Untungnya, tidak ada. Analisis lebih dekat mengungkapkan bahwa, sejak evaluasi
letname pengganti ref (lam x
.x) untuk setiap kejadian dari f dalam tubuh, ekspresi di atas untuk mengurangi
untuk:
ref (lam x
.x) := lam x.s x;
(!ref (lam x
.x))
56
CERVESATO DAN PFENNING
Nilai-nilai
ev init

S
init
kembali
v → ([S], v)
S
K
[
v/x]aku → a
ev cont

S
K
, λx. saya
kembali
v→a
Tambahan petunjuk

S
K
eval e
1

→a
ev kasus


1

S
K
kasus

zz
⇒e
1

|sx⇒e
2

→a
S
K
eval [
v/x]e
2

→a
ev kasus


2

S
K
kasus

s
vz⇒e
1
|sx⇒e
2

→a
S
K
, λx. kembali v, x
eval e
→a
ev pasangan


S
K
v, e

→a
S
K
kembali
v
1

→a
ev fst


S
K
fst

v
1

v
2

→a
S
K
kembali
v
2

→a
ev snd


S
K
snd

v
1

v
2

→a
S
K
, λx. eval e
1

eval e
2

→a
ev aplikasi


S
K
aplikasi

(lam x
.e
1

)e
2

→a
...............................................................................................
(S
, c = v)
K
kembali c
→a
ev ref


S
K
ref

v → baru c. a
S
c
=v
S
K
kembali
v→a
ev deref


S
K
deref

c
→a
S
K
, λx. c :=

2

x
eval e
→a
ev menetapkan


1

S
K
c:
=

1

e
→a
(S
, c = v)
K
kembali
→a
ev menetapkan


2

(S
,c=v)
K
c:
=

2

v→a
Baca
baca val

(S
, c = v)
c
=v
GBR. 15.
Evaluasi dalam MLR, nilai-nilai dan tambahan petunjuk.
Setiap kejadian ref (lam x
.x) mengevaluasi ke sel yang berbeda yang diketik sesuai dengan penggunaannya. Yang
ungkapan di atas tidak akan typable jika kita telah menggunakan letval di tempat letname.
Bahasa dengan tipe eksplisit variabel memecahkan masalah yang sama dengan membedakan antara aplikatif
dan penting jenis variabel dalam rangka untuk menghindari masalah seperti di atas [23, 26, 36]. Membatasi
polimorfisme untuk nilai-nilai yang juga telah diusulkan sebagai solusi untuk masalah ini [50] dan telah diadopsi pada
saat ini definisi dari Standar ML [36]. Bahasa ini hanya menawarkan satu bentuk biarkan, tapi dibutuhkan berbagai
program tindakan tergantung pada apakah itu mendefinisikan nilai atau sewenang-wenang ekspresi. Pengobatan kami adalah
sedikit lebih umum karena itu membuat call-by-name semantik letname langsung tersedia: untuk
contoh, ungkapan di atas tidak jenis-check in SML.
3.6. Jenis Pelestarian
Kami menyimpulkan bagian ini dengan pernyataan dari jenis pelestarian teorema untuk MLR dan
lemmas itu tergantung pada. Untuk alasan ruang, kami tidak akan meresmikan bukti dari hasil ini di LLF.
Para pembaca yang tertarik dapat menemukan encoding ini bukti kami linier kerangka logis [6].
Jenis pelestarian teorema menyatakan bahwa jenis ekspresi tidak berubah sebagai hasil
dari evaluasi. Bukti jenis pelestarian teorema bergantung pada jumlah bantu lemmas.
Yang pertama adalah melemahnya: setiap kali sebuah ekspresi yang diketik dalam konteks tertentu dan toko, tetap
juga diketik di bawah asumsi lebih lanjut dan sel-sel tambahan. Hal ini mudah dibuktikan dengan induksi pada mengetik
panggal.
LINEAR KERANGKA KERJA LOGIS
57
L
EMMA
3.1 (Melemah).
aku.
Jika
T :: ;
e
e:
τ, maka
,
;
,
e
e:
τ.
ii.
Jika
T :: ;
saya
saya :
τ, maka
,
;
,
saya
saya :
τ.
iii.
Jika
T ::
K
K:
τ
1
⇒τ
2
, maka
,
K
K:
τ
1
⇒τ
2
.
iv.
Jika
T ::
S
S:
, maka
,
S
S:.
v.
Jika
T ::
a
a:
τ, maka
,
a
a:
τ.
Bukti.
Kita lanjutkan dengan induksi pada struktur
T . Bagian ini lemma harus membuktikan di
urutan yang mereka disajikan.
Kedua pembantu properti yang kita butuhkan adalah substitusi kata pengantar singkat: ia menyatakan bahwa variabel-variabel
bebas dalam
sumur-diketik ekspresi yang bisa diganti untuk ekspresi dari jenis yang sama dan hasilnya akan baik
diketik.
L
EMMA
3.2 (Substitusi).
aku.
Jika
T :: ; , x : τ
e
e:
τ dan
;
e
e:
τ , maka
;
e
[e
/x]e : τ .
ii.
Jika
T :: ; , x : τ
saya
saya :
τ dan
;
e
e:
τ , maka
;
saya
[e
/x]aku : τ .
Bukti.
Kita lanjutkan dengan induksi pada struktur
T.
Seperti dalam fungsional kasus, jenis pelestarian memastikan bahwa jenis ekspresi ini identik dengan
tipe dari nilai. Intermediate evaluasi langkah-langkah mengharuskan kita untuk memperhitungkan sewenang-wenang kelanjutan
dan toko-toko. Kami memiliki berikut generalisasi.
T
HEOREM
3.1 (Tipe pelestarian).
jika S
K
saya
→ a dengan
;
·
saya
saya :
τ,
K
K:
τ ⇒ τ , dan
S
S:
, maka
a
a:
τ.
Bukti.
Kita lanjutkan dengan induksi pada struktur derivasi dari evaluasi penilaian dan
inversi pada derivasi dari mengetik penilaian.
Jenis pelestarian hasil diformalkan sebagai berikut di atas tingkat evaluasi.
C
OROLLARY
3.1 (Tipe pelestarian).
jika
·
init
eval e
→ a dengan ·; ·
e
e:
τ, maka ·
a
a:
τ.
3.7. Representasi di LLF
Di bagian ini, kami memberikan LLF representasi dari sintaks dari MLR, dari statis dan dinamis semantik,
dan menunjukkan bagaimana untuk mengeksploitasi hasil encoding dari perhitungan. Representasi kami mengusulkan adalah
perpanjangan alami dari LF kode untuk Mini-ML ditemukan dalam literatur [33]. Secara khusus, hal itu mempertahankan
struktur, keanggunan, dan kemudahan membuktikan kecukupan sehubungan dengan informal presentasi kita
hanya menyimpulkan. Kami menjelaskan masalah utama dalam representasi dengan menampilkan fragmen kode
dan jumlah terbatas kecukupan pernyataan. Perawatan lengkap dapat dilihat pada Lampiran A. Hal ini
menarik untuk membandingkan hasil dari encoding dengan usaha serupa dalam literatur.
VanInwegen digunakan HOL teorema prover [24] untuk memverifikasi sifat tentang sebagian besar dari
Standard ML [52]. Dia mengadopsi brute-force pendekatan meta-representasi masalah, pengkodean,
misalnya, konteks sebagai syarat. Pilihan ini mengakibatkan kompleks representasi dan hanya parsial
pencapaian tujuan utama dari usaha ini: bukti formal dari jenis pelestarian untuk bahasa tersebut.
Meskipun pada yang lebih sederhana fragmen, kami menggunakan tingkat tinggi abstrak sintaks, parametrik dan
hipotetis penilaian, dan linier fitur LLF menghindari kesulitan-kesulitan ini benar-benar.
Chirimar digunakan Forum [34] untuk mewakili bahasa yang mirip dengan MLR dengan penambahan pengecualian dan
kelanjutan [12], tapi tanpa ada penekanan pada mengetik. Ia mengambil keuntungan dari tingkat tinggi alam
dari Forum dan linear konstruksi. Hasil program adalah sebagai elegan kode kita dan terbukti
memadai sehubungan dengan informal spesifikasi dari objek itu. Tidak adanya bukti-istilah
dalam Forum mencegah manipulasi langsung objek-tingkat derivasi dan tidak ada upaya dilakukan untuk menggunakan
meta-bahasa untuk menyelidiki meta-teori sifat seperti jenis pelestarian.
58
CERVESATO DAN PFENNING
3.8. Sintaks
Representasi sintaksis tingkat MLR didasarkan pada tinggi-order abstrak sintaks dan
tidak memerlukan daya ekspresif linear konstruksi LLF. Hal itu terletak di LF fragmen dari
bahasa ini.
Seperti yang biasanya dilakukan di LF, setiap kategori sintaksis objek bahasa dipetakan ke dibedakan
tipe dasar. Jenis keluarga diperlukan untuk mengkodekan sintaksis kategori MLR yang diberikan oleh
berikut deklarasi:
exp
:
jenis.
sel
:
jenis.
tp
:
jenis.
toko
:
jenis.
instr
:
jenis.
cv
:
jenis.
cont
:
jenis.
jawaban
:
jenis.
Empat pernyataan di sebelah kiri encode ekspresi, petunjuk, jenis, dan kelanjutan. Empat
di sebelah kanan yang diperlukan untuk mewakili penting fitur dari MLR program.
sel
sesuai dengan
kategori leksikal dari sel-sel memori.
cv
dan
toko
akan digunakan untuk mewakili store. Akhirnya,
jawaban
mengkode jawaban akhir.
Kita menyandikan abstrak sintaks dari MLR ekspresi, seperti yang dijelaskan dalam tata bahasa dari Bagian 3.7,
dengan cara representasi fungsi - . Fungsi ini memetakan setiap produksi LLF objek
konstan yang, bila diterapkan untuk representasi subexpressions yang berkaitan, menghasilkan sebuah objek
yang memiliki tipe
exp.
Fungsi - adalah induktif didefinisikan pada sisi kiri dari tabel di bawah ini (kita
telah dipisahkan pengobatan penting konstruksi); hak-sisi memberikan jenis
konstanta yang digunakan dalam pengkodean.
x
=x
z
=z
z
:
exp.
se
=se
s
:
exp -> exp
.
kasus e
= kasus e
kasus
:
exp
z
⇒e
1
e
1
-> exp
|s x ⇒ e
2
([x :
exp
]e
2
)
->
(
exp -> exp
)
-> exp
.
=
unit
unit
:
exp
.
e
1
,e
2
=
pasangan
e
1
e
2
pasangan
:
exp -> exp -> exp
.
fst e
=
fst
e
fst
:
exp -> exp
.
snd e
=
snd
e
snd
:
exp -> exp
.
lam x
.e =
lam ([
x:
exp]
e
)
la m
:
(exp -> exp
)
-> exp
.
e
1
e
2
=
aplikasi
e
1
e
2
aplikasi
:
exp -> exp -> exp
.
letval x
=e
1
=
letval
e
1
letval
:
exp
di e
2
([
x:
exp]
e
2
)
-> (exp -> exp) -> exp
.
letname x
=e
1
=
letname
e
1
letname
:
exp
di e
2
([
x:
exp]
e
2
)
-> (exp -> exp) -> exp
.
perbaiki x
.e =
MEMPERBAIKI
([
x:
exp]
e
)
memperbaiki
:(
exp -> exp
)
-> exp
.
c
=
rf
c
rf
:
sel -> exp
.
ref e
=
ref
e
ref
:
exp -> exp
.
!e
=!e
!:
exp -> exp
.
e
1
:
=e
2
=
menetapkan
e
1
e
2
menetapkan
:
exp -> exp -> exp
.
e
1
;e
2
=
seq
e
1
e
2
seq
:
exp -> exp -> exp
.
Representasi paling mencerminkan ekspresi langsung abstrak sintaks dari MLR. Kami mengambil keuntungan
dari tingkat tinggi abstrak sintaks dalam representasi dari sel-sel, variabel, dan mengikat konstruksi MLR.
Variabel-variabel yang dikodekan sebagai LLF variabel (tipe
exp
). Fakta bahwa objek-tingkat membangun mengikat
variabel x dalam subexpressionn e kemudian dimodelkan dengan menggunakan
λ-abstraksi LLF dalam rangka untuk mengikat
x di e . Sel-sel muncul sebagai hipotesis c
:cell
dalam konteks LLF, demikian pula untuk variabel-variabel bebas. Mereka
representasi ekspresi yang dimediasi oleh konstan
rf
, yang memetakan entitas dari tipe sel untuk benda-benda
jenis
exp.
LINEAR KERANGKA KERJA LOGIS
59
Sebagai contoh, pertimbangkan lagi berikut MLR ekspresi dari bagian sebelumnya:
letname f
= ref(lamx.x)
di f :
= lam x.s x;
!f
Hal ini diwakili oleh berikut LLF jangka jenis
exp
:
letname
(ref (lam ([x]x)))
([f] (seq
(menetapkan f (lam ([x](s x))))
(app (!f) unit)))))
Kesetiaan ini, sehubungan dengan tingkat objek sintaks ekspresi terdiri
dari sejumlah properti yang kami meringkas kecukupan teorema, di mana
sesuai
untuk tanda tangan di Lampiran A:
T
HEOREM
3.2 (Kecukupan representasi dari MLR ekspresi).
Fungsi
di atas adalah
komposisi bijection antara MLR berekspresi dengan bebas variabel antara x
1
,...,x
n
dan sel-sel
c
1
,...,c
m
, dan kanonik LLF benda M tersebut bahwa penghakiman
x
1
:
exp
,...,x
n
:
exp
,c
1
:
sel
,...,c
m
:
sel
M

exp
adalah derivable.
Compositionality dalam pernyataan ini berarti bahwa fungsi representasi kemacetan dengan substitusi,
yaitu, bahwa untuk setiap MLR ekspresi e dan e , [e
/x]e = [ e /x] e . Hal itu menegaskan aplikasi yang benar
dari yang lebih tinggi-order abstrak sintaks dalam pengkodean. Perhatikan bahwa compositionality tidak diperlukan untuk sel-sel
karena
mereka tidak pernah tunduk pada substitusi.
Karena kompleksitas objek bahasa, kami tidak menampilkan sederhana tapi panjang dan agak
membosankan induktif bukti dari pernyataan ini. Pembaca yang tertarik disebut [6] untuk pengobatan;
bukti yang berbeda kecukupan pernyataan sketsa pada akhir bagian ini. Teknik yang digunakan dalam
rangka untuk membuktikan kecukupan theorems untuk LLF pengkodean secara alami memperpanjang metode yang berhasil
diterapkan
selama bertahun-tahun di lebih terbatas pengaturan LF. Secara khusus, mereka mempertahankan kesederhanaan dalam kita lebih
kaya
area aplikasi. Ini berbeda dengan proposal lainnya, misalnya, pengobatan linearitas di LF itu sendiri [42],
di mana kecukupan theorems memiliki kompleks bukti bahkan untuk objek sederhana bahasa.
Jenis, petunjuk, dan kelanjutan diwakili dengan cara yang sama. Yang LLF deklarasi untuk
konstanta yang diperlukan dalam pengkodean dapat dilihat pada Lampiran A. Kita menghilangkan menampilkan laporan dari
masing-masing kecukupan theorems karena mereka tidak memperkenalkan konsep-konsep baru. Mereka dapat ditemukan di [6].
MLR membuat penggunaan ganda dari kumpulan sel-pasangan nilai tentang kita informal disebut sebagai toko:
sebagai repositori dari yang untuk mengambil nilai yang berhubungan dengan sel selama evaluasi (yang tepat
di toko kami diindikasikan sebagai S), dan sebagai istilah untuk akhirnya kembali dengan akhir jawaban (reifikasi toko
kami dilambangkan [S]). Kami akan sejalan memiliki dua LLF representasi dari toko. Kita akan
membahas internal encoding S dari sebuah toko yang tepat S ketika mempertimbangkan evaluasi. Sebuah reifikasi toko [S]
diberikan berikut eksternal represention [S] :
[
·] =
estore
estore
:
toko
[S
, c = v] =
dengan
[S]
(memegang
c
v
)
dengan
:
toko -> cv -> store.
memegang
:
sel -> exp -> cv.
Di sini dan dalam berikut, kita secara sistematis overload notasi
digunakan untuk ekspresi untuk menunjukkan
berbagai representasi fungsi-fungsi yang diperlukan dalam contoh ini. Sifat argumen harus
selalu izin disambiguating yang spesifik fungsi kita mengacu pada masing-masing kasus.
60
CERVESATO DAN PFENNING
Representasi jawaban langsung mengungkapkan aturan-aturan tata bahasa:
([S],v)
=
dekat
[S]
v
dekat
:
toko -> exp -> jawaban.
baru c
.a =
baru ([
c:
sel]
a
)
baru
:
(cell -> jawabannya) -> jawaban.
Deklarasi untuk konstanta ini diulang dalam Lampiran A. kecukupan theorems yang link
mereka sintaks MLR yang dilaporkan dalam [6].
3.9. Semantik Statis
Atas dasar di atas encoding dari sintaks dari MLR, sekarang kita akan menjelaskan meta-representasi
dari semantik statis dari bahasa ini.
Adapun sintaks, representasi statis semantik MLR tidak bergantung pada fitur linear
dari LLF. Kode yang dihasilkan itu terletak di Elf fragmen dari kami, kerangka logis. Kami memiliki
berikut deklarasi untuk jenis keluarga yang model berbagai mengetik penilaian yang disajikan dalam
Bagian 3.2:
tpe
:
exp -> tp -> ketik.
tpi
:
instr -> tp -> ketik.
tpK
:
cont -> tp -> tp -> ketik.
tpc
:
sel -> tp -> ketik.
tpS
:
toko -> ketik.
tpa
:
jawab -> tp -> ketik.
Sekali lagi kita telah dipisahkan deklarasi yang cukup untuk fungsi inti dari MLR dari jenis
keluarga yang diperlukan untuk menangani aspek penting dari bahasa ini. Tiga pertama mewakili
mengetik penilaian untuk ekspresi, petunjuk, dan lanjutannya, sementara
tpS
dan
tpa
encode ulang
spectively toko dan jawaban mengetik penilaian, dan
tpc
catatan jenis dari sel-sel individu dalam
store.
Kami menggambarkan representasi semantik statis dari MLR dengan menampilkan bagaimana untuk mengkodekan mengetik
derivasi untuk ekspresi. Sisa mengetik penilaian diperlakukan sama dan menghasilkan LLF
deklarasi disajikan dalam Lampiran A.
Dalam Bagian 3.2, kita dilambangkan fakta bahwa ekspresi e memiliki jenis
τ asumsi jenis yang diberikan dalam
untuk
gratis variabel dan jenis yang diberikan dalam
untuk referensi sel sebagai penghakiman hipotetis
;
e
e:
τ.
Kami mewakili bentuk skema dari penghakiman ini dengan cara LLF jenis keluarga
TPE
. Keluarga ini
menerima dua parameter: representasi ekspresi dan representasi dari jenis. Oleh karena itu,
contoh di atas akan dikodekan sebagai LLF dasar jenis tpe e
τ . Konteks
diambil ke dalam
pertimbangan hanya ketika memeriksa bahwa istilah ini memang derivable di LLF. Kemudian, kita akan mengkodekan setiap
pasangan x
saya
:
τ
saya
di
dengan cara LLF hipotesis
t
saya
:
tpe
x
saya
τ
saya
,
di mana variabel bebas x
saya
dinyatakan sebagai ungkapan (x
saya
:
exp
). Demikian pula, kita mengkodekan setiap item c
j
:
τ
j
di
sebagai (intuitionistic) asumsi
t
j
:
tpc
c
j
τ
j
dalam konteks LLF, di mana c
j
dinyatakan sebagai sel (c
j
:
sel
). Perhatikan bahwa
tpc
hanya melayani tujuan
membuat mengetik asumsi untuk sel-sel. Kita menulis
dan
untuk encoding kami hanya diuraikan untuk
konteks
dan toko konteks
, masing-masing.
Inferensi aturan yang mendefinisikan derivability dari mengetik penilaian untuk MLR dikodekan sesuai
dengan teknik yang disajikan dalam Bagian 3.1. Kita mempertimbangkan dua aturan sebagai tambahan contoh; sisa
deklarasi dapat dilihat pada Lampiran A. Aturan tpe z associates jenis nat ke angka z. Kami
LINEAR KERANGKA KERJA LOGIS
61
mewakili itu dengan cara LF konstan
tpe z
yang berhubungan
z
untuk
nat
:
;
e
z : nat
tpe z
= tpe z : tpe z nat.
Aturan tpe kasus menentukan bagaimana jenis-memeriksa suatu ekspresi bersyarat. Kita ulangi dari Fig. 12:
;
e
e : nat
;
e
e
1
:
τ
;
, x : nat
e
e
2
:
τ
;
e
kasus e z
⇒e
1
|sx⇒e
2
:
τ
tpe kasus
Aturan ini memiliki beberapa tempat. Itu adalah khayalan, karena paling kanan premis asumsi sisipan
x : nat ke dalam konteks. Hal ini juga parametrik karena variabel x adalah terikat dalam hal membangun, tapi
ini muncul sebagai simbol baru baik dalam menambahkan hipotesis dan dalam ekspresi e
2
jenis-diperiksa oleh
yang paling kanan premis. Kami mewakili aturan ini dengan cara LLF konstan
tpe kasus
dan encode nya
struktur dalam jenis terkait. Kami memiliki deklarasi:
tpe kasus :
tpe E nat
-> tpe E1 T
-> ({x:exp} tpe x nat -> tpe (E2 x) T)
-> tpe (kasus E E1 ([x:exp] E2 x)) T.
Pemberitahuan kuantifikasi atas
x
and the embedded implication with antecedent
tpe x nat
in the
encoding of the third premise. In this declaration, the LLF variables
E
,
E1
,
E2
, and
T
correspond to
the schematic variables e, e
1
,e
2
, and
τ , respectively. They are implicitly quantified at the front of the
declaration.
It is worth noticing that there is no declaration in correspondence of rule tpe x:
;
,x:τ
e
x:
τ
tpe x
Since assumptions are represented directly in the context of LLF, a judgment of the form
tpe x
T,
where T is the representation of some concrete type
τ , will be validated by accessing the context of
LLF rather than the signature and succeed precisely when t
x
:
tpe x
T appears in it as an assumption.
Similar considerations hold for reference cells.
We have now the means for representing derivations of expression typing judgments. The adequacy
theorem below ensures that whenever
T is a (valid) derivation for the MLR judgment
;
e
e:
τ,
it is a canonical inhabitant of the LLF type
tpe
e
τ with respect to the proper encoding of
and
, and vice versa.
T
HEOREM
3.3 (Adequacy of the representation of MLR expression typing).
Given an MLR expression
e and a type
τ, there is a compositional bijection
between derivations of
;
e
e:
τ
and LLF objects M such that
,
M

tpe
e
τ
is derivable.
62
CERVESATO AND PFENNING
3.10. Dynamic Semantics
Unlike syntax and static semantics, the representation of evaluation relies heavily on the linear features
of LLF. It is based on the following four type families:
ev
:
cont -> instr -> answer -> type.
contains
:
cell -> exp -> type.
collect
:
store -> type.
read
:
cell -> exp -> type.
which we will describe in turn.
Assuming the appropriate representation functions
for continuations, instructions, and answers,
we model the continuation-based judgment S
K
i
→ a as the LLF base type
ev
K
i
a.
The store S mentioned by this judgment is represented in a distributed fashion in the context of LLF.
Each item c
= v in S is modeled by two assumptions: first of all, we need to declare c as a cell and
we do so by means of the assumption c
:cell
; second, we represent the fact that the current contents
of c is
v by a linear hypothesis of the form h ˆ:
contains
c
v . The first assumption should clearly be
intuitionistic since c may be mentioned many times in K , i , a, and S. In contrast, the second must be
linear since assignment updates the value associated with a cell destructively. If h were an intuitionistic
hypothesis, we would have no means of prohibiting the old value from being accessed. In summary, we
associate to every proper store S
= (c
1
=v
1
,...,c
n
=v
n
) the following internal representation:
S
=
c
1
:cell,
...,c
n
:cell,
h
1
ˆ:
contains
c
1
v
1
,...,h
n
ˆ:
contains
c
n
v
n
Four rules in the deductive system for continuation-based evaluation presented in Figs. 14 and 15
access the store directly: ev ref

, ev assign

2
, ev deref

, and ev init. We will illustrate the use of the
linear features of LLF on their encoding. However, in order to gain familiarity with our representation
technique, we will first analyze rule ev z. All other inference figures are treated similarly to this rule.
The complete code is displayed in Appendix A.
A bottom up reading of rule ev z, shown below on the left, specifies that evaluating z simply amounts
to returning it as a value. We represent this rule by means of the declaration for the constant
ev z
shown
on the right:
S
K
return z
→a
S
K
eval z
→a
ev z
=
ev z
:
ev K (return z) A
-o ev K (eval z) A.
The linear arrow in the representation of rule ev z enables its antecedent and its consequent to
access the same linear assumptions in the context. This accounts for the fact that the premise and the
conclusion of this rule mention the same store. Had we used an intuitionistic implication, the antecedent
(and therefore the whole expression) would have been applicable only with contexts deprived of any
linear assumptions, corresponding to empty stores.
Rule ev ref

, repeated below on the left, creates a new location c in the store and initializes it with the
argument
v of ref

. Its representation on the right models these actions on the context of LLF: the new
cell is intuitionistically assumed when processing the dependent type
{
c:cell
}, while the resolution
of the embedded linear implication has the effect of asserting
contains c V
in the linear part of the
context. Since this assumption is made linearly, it will be possible to remove it from the context, for
example in order to update the value contained in
c
in response to an assignment. Notice how the newly
created cell
c
is bound in the final answer.
(S
, c = v)
K
return c
→a
S
K
ref

v → new c.a
ev ref

=


ev ref*
:
({c:cell} contains c V
-o ev K (return (rf c)) (A c))
-o ev K (ref* v) (new ([c:cell] A c)).
A LINEAR LOGICAL FRAMEWORK
63
Of the three rules that realize assignment in MLR, only ev assign

2
accesses the store. The declaration
ev assign*2
below mimics the destructive update of the contents of the cell c (written
C
in the clause)
in the store in two steps. First the old value is retrieved by
contains C V’
. Since it appears as a linear
assumption, accessing it causes its removal from the linear context of LLF. Since the other antecedent
of this clause is reached through the multiplicative connective
, the remaining linear hypotheses will
be passed to it. This term inserts the new value
v (i.e.,
V
) of c in the representation of the store by means
of the antecedent
contains C V
of the embedded linear implication.
(S
, c = v)
K
return
→a
(S
,c=v)
K
c:
=

2
v→a
ev assign

2
=
ev assign*2
:
(contains C V -o ev K (return unit) A)
-o (contains C V’ -o ev K (assign*2 (rf C) V) A).
Dereferencing a cell c is naturally modeled in LLF through the use of the additive operators of our
language. In order to encode rule ev deref

, we need two copies of the store representation: one to
retrieve the contents of c, and one to proceed with the evaluation. This is immediately achieved by
means of the additive conjunction of LLF. We have the following declaration:
S
c
=v
S
K
return
v→a
S
K
deref

c
→a
ev deref

=


ev deref
*
:
(read C V
& ev K (return V) A)
-o ev K (deref* (rf C))A.
The conjunct
read C V
, which implements the read judgment S
c
= v, looks up its copy of the
linear context in search of the assumption
contains C V
and relies on the additive unit of LLF, written
<T>
, to discard the rest. This technique is generally applicable to every situation that involves looking
up the encoding of volatile information. The definition of
read
consists of a single clause encoding rule
read val:
(S
, c = v)
c
=v
read val
=


read val
:
contains C V
-o <T>
-o read C V.
We could have alternatively modeled dereferencing similarly to assignment by first accessing the linear
assumption
contains C V
directly. In order to balance its consequent removal from the linear context
of LLF, this same assumption should be reentered in the context before returning the value
V
. We would
have the following declaration:
ev deref*’
:
(contains C V -o ev K (return V) A)
-o (contains C V -o ev K (deref* (rf C)) A).
Although it achieves a similar effect, this declaration does not encode rule ev deref

, or read val, or
any combination of these rules. Instead, it is a transliteration of the following inference rule, which we
could have used to formalize dereferencing:
(S
, c = v)
K
return
v→a
(S
, c = v)
K
deref

c
→a
ev deref

Finally, rule ev init pairs up the store and the final value in order to produce the answer. We model
this behavior by means of the auxiliary procedure
collect
which translates the internal representation
64
CERVESATO AND PFENNING
of the store S, as linear LLF assumptions, to its external representation [S], as an object of type
store
.
S
init
return
v → ([S], v)
ev init
=
ev init
:
collect S
-o ev init (return V) (close S V).
The code for
collect
is displayed below.
col empty
:
collect estore.
col cv
:
contains C V
-o collect S
-o collect (with S (holds C V)).
Since the use of multiplicatives removes the assumptions
contains C V
as they are retrieved, each
recursive access
to collect
adds a different item to the external representation of the store. Clause
col empty
is provable only when the linear part of the context of LLF is empty and therefore only
when the complete store of MLR has been externalized.
The effectiveness of the representation we just illustrated relies on the ability to remove objects from
the context of LLF. Using LF on this problem would have produced awkward encodings with prohibitive
consequence for the development of the meta-theory of MLR [6]: a first alternative would have relied
entirely on the external representation of the store, implementing all the operations required to access
and modify it explicitly. A second alternative would be to proceed as we did, with the tedious addition
of declarations aimed at checking the linearity of the resulting derivations a posteriori.
We will now make the above motivating discussion more precise. The faithfulness of our represen-
tation of evaluation is expressed by the following adequacy theorem.
T
HEOREM
3.4 (Adequacy of the representation of MLR evaluation).
Given an MLR continuation K
,
an instruction i
, a store S, and an answer a, where K, i, S, and a are closed except for the possible
presence of free cells
, there is a bijection
between derivations of
S
K
i
→a
and LLF objects M such that
S
M

ev
K
i
a
is derivable.
In order to prove the above theorem, we will decompose it into four parts. Again,
is the signature
contained in Appendix A. We need to prove the following properties:
Functionality:
is a total function from MLR evaluation derivations to LLF objects over
.
Soundness: The representation of a derivation of a given MLR evaluation judgment is an LLF
object whose type is the representation of this judgment.
Completeness: Whenever a canonical LLF object over
inhabits the type corresponding to
the encoding of an MLR evaluation judgment, this object is the representation of a derivation of that
judgment.
Bijectivity:
is a bijection between evaluation derivations in MLR and canonical LLF objects
whose type encodes the corresponding evaluation judgment.
Different from expressions and typing derivations, the representation function
is trivially composi-
tional (it involves closed expressions only); otherwise, we should prove it as an additional property.
Detailed proofs of these properties are long and rather tedious, although conceptually simple. We
will sketch them by using the declaration for
ev assign*2
as a representative case. In order to do so,
A LINEAR LOGICAL FRAMEWORK
65
we repeat it complete with the
-quantifiers we omitted in the above presentation:
ev assign*2
:
{
C:cell
}{
V’:exp
}{
V:exp
}{
K:cont
}{
A:answer
}
(contains C V -o ev K (return unit) A)
-o (contains C V’ -o ev K (assign*2 (rf C) V) A)
.
In the specific case of this example, it is convenient to state and prove the functionality and soundness
properties together. We have the following result:
L
EMMA
3.3 (Functionality and soundness of MLR evaluation’s representation).
Given a store S
,a
continuation K
, an instruction i, and an answer a, where K, i, S, and a are closed except for the possible
presence of free cells
, for every derivation E of the judgment S
K
i
→ a,
E is defined and
unique
, and the LLF judgment
S
E

ev
K
i
a
is derivable.
Proof.
This proof proceeds by induction on the structure of the derivation
E. We illustrate only the
case in which it ends with an application of rule ev assign

2
. Therefore,
E
E=
(S

, c = v)
K
return
→a
(S

,c=v)
K
c:
=

2
v→a
ev assign

2
where S
= (S

, c = v ) and i = (c :=

2
v). Let us also denote as S the store (S

, c = v). Notice that
S
=S.
By the induction hypothesis on
E , we deduce that there is a unique LLF object M such that M = E
and there is a derivation of the judgment S
M

ev
K
(return unit)
a.
Iterated applications of the LLF rule oa iapp are used to instantiate the arguments of the declaration
for
ev assign*2
. Indeed, there is an atomic derivation
A of the following judgment:
S
ev assign*2
c
v
v
K
a





(contains
c
v
-o ev
K
(return unit)
a
)
-o(contains
c
v
-o ev
K
(assign*2(rf
c
)
v
)
a
)




Let t ˆ:
contains
c
v be the assumption in S
corresponding to the pair (c
= v) in S . We can
abstract it over M in the LLF derivation for this object, obtaining a derivation
C of the judgment
S

ˆλt :
contains
c
v .M ⇑ (
contains
c
v
ev
K
(return unit)
a ), where S

differs from S
only by the removal of assumption t. Since S
=S

, we can then apply rule
oa lapp to
A and C , obtaining a derivation A of:
S

ev assign*2
c
v
v
K

(
ˆλt :
contains
c
v .M
)

(contains
c
v
-o ev
K
(assign*2(rf
c
)
v
)
a
)
Let t ˆ:
contains
c
v
be the assumption in
S
corresponding to the pair (c
= v ) in the
store S. Then, there is a derivation
C of the LLF judgment ( S

, t ˆ:
contains
c
v)
t

contains
c
v . We can then apply rule oa lapp again to A and C to obtain a derivation A of:
S

, t ˆ:
contains
c
v
ev assign*2
c
v
v
K

(
ˆλt :
contains
c
v .M
)
ˆt

ev
K
( assign*2(rf
c
)
v
)
a
66
CERVESATO AND PFENNING
In order to understand this formula, observe that S
=(S

, t ˆ:
contains
c
v ). We now apply
rule oc a to
A to get the desired canonical derivation.
At this point, it is enough to notice that the LLF object M appearing on the left of the arrow in this
canonical judgment is the representation of the MLR derivation
E above and that the type on the right
of the arrow is the representation of its type. It is also easy to ascertain that M is unique, given the
uniquenees of M .
We now consider the completeness of the encoding of MLR evaluation derivations. We have the
following lemma.
L
EMMA
3.4 (Completeness of the representation of MLR evaluation).
Given a store S
, a continuation
K
, an instruction i, and an answer a, where K , i, S, and a are closed except for the possible presence
of free cells
, for every LLF object M such that the judgment
S
M

ev
K
i
a
has a derivation
C, there is a derivation E of the MLR judgment S K
i
→ a such that M = E .
Proof.
We proceed by induction on the structure of M. Since the type in
C is a base type, M can
either be a constant, a variable, or start with a destructor. Then M has the following structure
M
=c
M

M
1

···

M
n
,
where c
M
is a constant in
of some appropriate type,

represents either linear or intuitionistic appli-
cation, and M
1
,...,M
n
are objects of some type. The proof now distinguishes cases on the basis of
possible constants c
M
. We consider only the case in which this constant is
ev assign*2
.
If c
M
is
ev assign*2
, then it must be the case that i
= (c :=

2
v) for some cell c and expression v,
and moreover
M
=
ev assign*2
cM
v
v
K
aˆM

ˆM
t
.
By analyzing the types of the objects M
v
,M

, and M
t
, we deduce that there is an expression
v such that M
v
=
v , that M

= ˆλt :
contains
c
v .M for some term M of type
ev
K
(return unit)
a , and that M
t
= t for some linear assumption t ˆ:
contains
c
v.
Moreover, we have that S
= (S

, c = v ).
We can apply the induction hypothesis on M relative to a store representation that differs from S
by the replacement of assumption t with t. The corresponding MLR store S is (S

, c = v). We deduce
in this way that there exists a derivation
E of the judgment (S

, c = v) K
return
→ a. An
application of rule ev assign

2
suffices to obtain the desired derivation.
We conclude the treatment of the adequacy of the representation of MLR evaluation derivations by
showing that the function - is indeed bijective.
L
EMMA
3.5 (Bijectivity of the representation of MLR evaluation).
Given a store S
, a continuation
K
, an instruction i, and an answer a, where K , i, S, and a are closed except for the possible presence
of free cells, the representation function - is a bijection between derivations
E of MLR the judgment
S
K
i
→ a, and LLF objects of type
ev
K
i
a in the context S .
Proof.
Lemma 3.3 establishes that - is a total function from the set of MLR derivations mentioned
in the statement to the specified set of LLF objects. By the completeness lemma, we deduce that
this function is surjective. It therefore remains solely to prove that it is also injective. Given two
derivations
E
1
and
E
2
such that
E
1
=E
2
, the proof that
E
1
=E
2
proceeds by induction on these
derivations.
A derivation
E for an evaluation judgment S
K
i
→ a is a trace of the computation that a
continuation-based MLR interpreter performs when evaluating the instruction i and the continuation K
to the final answer a with respect to the store contents S. According to the above adequacy theorem, such
derivations are faithfully represented by the terms M inhabiting the LLF type encoding this judgment.
We conclude this section by illustrating how to take advantage of this internal representation of MLR
A LINEAR LOGICAL FRAMEWORK
67
computations. We only give a small example here—more interesting examples such as the proof of type
preservation or a cut elimination procedure for classical linear logic can be found in [6]. Specifically,
we will give LLF declarations that permit counting the number of reference cells dynamically allocated
during the evaluation.
In order to achieve this purpose, we first give the following declarations for natural numbers:
num
:
type
.
zero
:
num
.
succ
:
num -> num
.
The counting judgment relates an MLR computation to the number of cells it allocates. It is represented
by the following type family
count
:
ev K I A -> num -> type
.
We implement the counting procedure in LLF by unfolding the representation of an MLR computation.
We ignore the steps that do not allocate memory cells, but increment by one the counter every time rule
ev ref

is applied. We show three declarations, corresponding to the initialization step performed by
rule ev init, the allocation of a new cell by rule ev ref

, and one of the numerous cases where nothing
happens (rule ev z):
cnt init
:
count
(
ev init ^ C) zero.
cnt ref

:
(
{
c:cell
}{
d:contains c V
}
count (C c ^ d) N)
-> count (ev ref

^ ([c:cell] [d^contains c V]
C c ^
d)) (succ N).
cnt z
:
count C N
-> count (ev z ^ C) N.
We conclude this section by displaying the LLF base type that ascertains that the MLR expression
letname f
= ref (lam x.x)
in f :
= lam x. s x;
!f
allocates two cells. The concrete syntax of this term is as follows, where the first argument is the
representation of the evaluation of the above expression:
count
(ev letname ^
(ev seq ^
(ev assign ^
(ev ref ^
(ev lam ^
(ev cont ^
(ev ref

^
[c1:cell]
[Cn1 ^ contains
c1
(lam [x:exp] x)] ev cont ^
(ev assign

1 ^
(ev lam ^
(ev cont ^
(ev assign*2 ^
([Cn1’ ^ contains c1 (lam [x:exp] s x)
]
ev cont ^
(ev app ^
(ev deref ^
(ev ref ^
(ev lam ^
(ev cont ^
(ev ref

^
68
CERVESATO AND PFENNING
([c2:cell] [Cn2 ^ contains c2 (lam [x:exp] x)] ev cont ^
(ev deref

^
(read val ^ ( ) ^ Cn2,
ev cont ^
(ev app

^
(ev unit ^
(ev cont ^
(ev unit ^
(ev init ^ (col cv ^ Cn2 ^ (col cv ^ Cn1’ ^ col empty)))
)))))))))))))) ^ Cn1)))))))))))) (
succ
(succ zero))
4. CONCLUSION AND FUTURE WORK
In this paper, we have presented the linear logical framework LLF as an extension of LF with internal
support for the representation of state-based problems. We have demonstrated its expressive power
by providing a usable representation of the syntax and the semantics of an imperative variant of the
functional programming language Mini-ML; space reasons prevented us from extending this encoding
to aspects of the meta-theory of this language, such as a proof of its type preservation property [6].
Additional substantial case studies we have completed include the formalization of a proof of cut
elimination for classical linear logic and translations between minimal linear natural deduction and
sequent calculus, as well as a number of puzzles and solitaires. The interested reader may access them
on the World Wide Web at [9] or in [6].
The representation language of LLF,
λ
&
, conservatively extends LF’s
λ with constructs from
linear logic. We can think of it as the type theory obtained from the type constructors
, &,
, and
. This choice of constructors is complete in the sense that they suffice to represent full intuitionistic
or classical linear logic. Further, adding any other linear connective as a free type constructor destroys
the property that usable canonical forms exist by introducing commuting conversions. This property is
necessary in the proofs of adequacy theorems for encodings and also for the interpretation of LLF as
an abstract logic programming language.
The meta-representation methodology of LLF extends the judgments-as-types technique adopted in
LF with a direct way to map state-related constructs and behaviors onto the linear operators of
λ
&
.
The resulting representations retain the elegance and immediacy that characterize LF encodings and
the ease of proving their adequacy.
LLF maintains the computational nature of LF as an abstract logic programming language. The
implementation of LLF combines the experience with higher-order logic programming languages gained
with Elf [38, 41], an older realization of LF, on previous research work on linearity as in the language
Lolli [8, 28], and on new experimental term representation [11] and compilation [7] techniques. Among
the new problems is the necessity of performing higher-order unification between linear terms [10].
LLF generalizes other formalisms based on linear logic such as Forum [34] by making linear objects
available for representations, by permitting proof terms, and by providing linear types. It is closely
related to the system RLF of Ishtiaq and Pym [30], which allows dependencies on linear variables,
but does not have
as an operator. Linear dependent types are potentially useful but not essential in
our experience, while
is a necessary tool in many representation problems. The meta-theory of LLF
appears significantly simpler than that of RLF, a fact that might imply that proving the adequacy of an
encoding may be substantially more complex in this formalism. Finally, our approach is orthogonal to
general logics in the style of LU [22].
In the near future, we intend to gain experience with the use of LLF as a representation language
by encoding state-based deductive systems such as imperative programming languages constructs,
hardware systems, security protocols, and real-time systems. The availability of an implementation will
be of great help in doing so since it will enable us to concentrate on high-level representation issues. We
would also like to extend the tools available in Twelf [46, 48], notably the theorem proving component
of this system [47], to handle the possibilities offered by the linear operators of LLF. Finally, we are
interested in investigating a generalization of the type constructors & and
of
λ
&
to linear
and
types, respectively, although it currently appears that this would greatly complicate the type theory
while it is not clear how much would be gained.
A LINEAR LOGICAL FRAMEWORK
69
APPENDIX A
Formalization of MLR
A.1. Syntax
exp
: type
.
tp
: type
.
instr
: type
.
cont
: type
.
cell
: type
.
cv
: type
.
store
: type
.
answer
: type
.
% Expressions
z
: exp
.
s
: exp -> exp
.
case
: exp -> exp -> (exp -> exp) -> exp
.
unit
: exp
.
pair
: exp -> exp -> exp
.
fst
: exp -> exp
.
snd
: exp -> exp
.
lam
: (exp -> exp) -> exp
.
app
: exp -> exp -> exp
.
letval
: exp -> (exp -> exp) -> exp
.
letname : exp -> (exp -> exp) -> exp
.
fix
: (exp -> exp) -> exp
.
rf
: cell -> exp
.
ref
: exp -> exp
.
!
: exp -> exp
.
seq
: exp -> exp -> exp
.
assign
: exp -> exp -> exp
.
% Types
nat
: tp
.
one
: tp.
cross
: tp -> tp -> tp
.
arrow
: tp -> tp -> tp.
tref
: tp -> tp.
% Instructions
eval
: exp -> instr
.
return
: exp -> instr
.
case*
: exp -> exp -> (exp -> exp) -> instr
.
pair*
: exp -> exp ->instr
.
fst*
: exp -> instr
.
snd*
: exp -> instr
.
app*
: exp -> exp -> instr
.
ref*
: exp -> instr
.
deref*
: exp -> instr.
assign*1 : exp -> exp -> instr
.
assign*2 : exp -> exp -> instr
.
70
CERVESATO AND PFENNING
% Continuations
init
: cont
.
klam
: cont -> (exp -> instr) -> cont
.
% Store
estore : store
.
with
: store -> cv -> store
.
holds : cell -> exp -> cv
.
% Answers
close : store -> exp -> answer
.
new
: (cell -> answer) -> answer
.
A.2. Typing
tpc
: cell -> tp -> type
.
tpe
: exp -> tp -> type
.
tpi
: instr -> tp -> type
.
tpK
: cont -> tp -> tp -> type
.
tpS
: store -> type
.
tpa: a
nswer -> tp -> type
.
% Expressions
tpe z
:
tpe z nat
.
tpe s
:
tpe E nat
.
-> tpe (s E) nat
.
tpe case
:
tpe E nat
-> tpe E1 T
-> ({x : exp} tpe x nat -> tpe (E2 x) T)
-> tpe (case E E1 E2) T
.
tpe unit
:
tpe unit one
.
tpe pair
:
tpe E1 T1
-> tpe E2 T2
-> tpe (pair E1 E2) (cross T1 T2)
.
tpe fst
:
tpe E (cross T1 T2)
-> tpe (fst E) T1
.
tpe snd
:
tpe E (cross T1 T2)
-> tpe (snd E) T2.
tpe lam
:
({x : exp} tpe x T1 ->tpe (E x) T2)
-> tpe (lam E) (arrow T1 T2)
.
tpe app
:
tpe E1 (arrow T2 T1)
-> tpe E2 T2
-> tpe (app E1 E2) T1
.
tpe letval :
tpe E1 T1
-> ({x : exp}tpe x T1 -> tpe (E2 x) T2)
-> tpe (latval E1 E2) T2
.
tpe letname :
tpe (E2 E1) T
-> tpe (letname E1 E2) T
.
tpe fix
:
({x :
exp} tpe x T -> tpe (E x) T)
-> tpe (fix E) T
.
tpe cell
:
tpc C T
-> tpe (rf C) (tref T)
.
A LINEAR LOGICAL FRAMEWORK
71
tpe ref
:
tpe E T
-> tpe (ref E) (tref T)
.
tpe deref :
tpe E (tref T)
-> tpe (! E) T
.
tpe seq
:
tpe E1 T1
.
-> tpe E2 T2
-> tpe (seq E1 E2) T2
.
tpe assign :
tpe E1 (tref T)
-> tpe E2 T
-> tpe (assign E1 E2) one
.
% Instructions
tpi eval
:
tpe E T
-> tpi (eval E) T
.
tpi return
:
tpe V T
-> tpi (return V) T
.
tpi case*
:
tpe V nat
-> tpe E1 T
-> (
{
x : exp
}
tpe x nat -> tpe (E2 x) T)
-> tpi (case* V E1 E2) T
.
tpi pair*
:
tpe V T1
-> tpe E T2
-> tpi (pair* V E) (cross T1 T2)
.
tpi fst*
:
tpe V (cross T1 T2)
-> tpi (fst* V) T1
.
tpi snd*
:
tpe V (cross T1 T2)
-> tpi (snd* V) T2
.
tpi app*
:
tpe V (arrow T2 T1)
-> tpe E T2
-> tpi (app* V E) T1
.
tpi ref*
:
tpe V T
-> tpi (ref* V) (tref T)
.
tpi deref*
:
tpe V (tref T)
-> tpi (deref* V) T
.
tpi assign*1 :
tpe V (tref T)
-> tpe E T
-> tpi (assign*1 V E) one
.
tpi assign*2 :
tpe V1 (tref T)
-> tpe V2 T
-> tpi (assign*2 V1 V2) one
.
% Continuations
tpK init
:
tpK init T T
.
tpK lam
:
({x : exp} tpe x T1 -> tpi (I x) T)
-> tpK K T T2
-> tpK (klam K I) T1 T2
.
% Store
tpS empty
:
tpS estore
.
tpS with
:
tpS S
-> tpc C T
-> tpe V T
-> tpS (with S (holds C V))
.
72
CERVESATO AND PFENNING
% Answers
tpa close
:
tpS S
-> tpe V T
-> tpa(close S V) T
.
tpa new
:
({c : cell}tpc c T’ -> tpa(A c) T)
-> tpa(new A) T
.
A.3. Evaluation
%%% Contents of acell
contains: cell -> exp -> type
.
% Only run-time assumptions
%%% Collection of all the cells in the store
collect
:
store -> type.
col empty
:
collect estore
.
col cv
:
contains C V
-o collect S
-o collect (with S (holds C V))
.
%%% Reading the value of a cell from the store
read : cell -> exp -> type.
read val
:
contains C V
-o <T>
-o read C V.
%%% Evaluation
ev
:
cont -> instr -> answer -> type
.
% Expressions
ev z
:
ev K (return z) A
-o ev K (eval z) A
.
ev s
:
ev (klam K ([x : exp] return (s x))) (eval E) A
-o ev K (eval (s E)) A
.
ev case
:
ev (klam K ([x : exp] case* x E1 E2)) (eval E) A
-o ev K (eval (case E E1 E2)) A.
ev unit
:
ev K (return unit) A
-o ev K (eval unit) A.
ev pair
:
ev (klam K ([x : exp] pair* x E2)) (eval E1) A
-o ev K (eval (pair E1 E2)) A
.
ev fst
:
ev (klam K ([x : exp] fst* x)) (eval E) A
-o ev K (eval (fst E)) A
.
ev snd
:
ev (klam K ([x : exp] and* x)) (eval E) A
-o ev K (eval (snd E)) A
.
ev lam
:
ev K (return (lam E)) A
-o ev K (eval (1am E)) A
.
ev app
:
ev (klam K ([x : exp] app* x E2)) (eval E1) A
-o ev K (eval (app E1 E2)) A
.
ev letval :
ev (klam K ([x : exp] eval (E2 x))) (eval E1) A
-o ev K (eval (letval E1 E2)) A
.
ev letname :
ev K (eval (E2 E1)) A
-o ev K (eval (letname E1 E2)) A.
A LINEAR LOGICAL FRAMEWORK
73
ev fix
:
ev K (eval (E (fix E))) A
-o ev K (eval (fix E)) A
.
ev cell
:
ev K (return (rf C)) A
-o ev K (eval (rf C)) A.
ev ref
:
ev (klam K ([x : exp] ref* x)) (eval E) A
-o ev K (eval (ref E)) A.
ev deref :
ev (klam K ([x : exp] deref* x)) (eval E) A
-o ev K (eval (! E)) A
.
ev seq
:
ev (klam K ([x : exp] eval E2)) (eval E1) A
-o ev K (eval (seq E1 E2)) A
.
ev assign :
ev (klam K ([x : exp] assign*1 x E2)) (eval E1) A
-o ev K (eval (assign E1 E2)) A
.
% Values
ev init
:
collect S
-o ev init (return V) (close S V)
.
ev cont
:
ev K (I V) A
-o ev (klam K I) (return V) A.
% Auxiliary instructions
ev case*1
:
ev K (eval E1) A
-o ev K (case* z E1 E2) A.
ev case*2
:
ev K (eval (E2 V)) A
-o ev K (case* (s V) E1 E2) A.
ev pair*
:
ev (klam K ([x : exp] return (pair V x))) (eval E) A
-o ev K (pair* V E) A.
ev fst*
:
ev K (return V1) A
-o ev K (fst* (pair V1 V2)) A.
ev snd*
:
ev K (return V2) A
-o ev K (snd* (pair V1 V2)) A
.
ev app*
:
ev (klam K ([x : exp] eval (E1 x))) (eval E2) A
-o ev K (app* (lam E1) E2) A
.
ev ref*
:
({c : cell}contains c V -o ev K (return(rf c))(A c))
-o ev K (ref* V) (new A)
.
ev deref*
:
(read C V ev K (return V) A)
-o ev K (deref* (rf C)) A
.
ev assign*1 :
ev (klam K ([x : exp] assign*2 (rf C) x)) (eval E) A
-o ev K (assign*1 (rf C) E) A
.
ev assign*2 :
(contains C V -o ev K (return unit) A)
-o (contains C V’ -o ev K (assign*2 (rf C) V) a)
.
ACKNOWLEDGMENT
We thank the anonymous referees for their valuable comments, which helped improve this paper as a whole.
REFERENCES
1. S. Abramsky, Computational interpretations of linear logic, Theoret. Comput. Sci. 111 (1993), 3–57.
2. A. Barber, “Dual Intuitionistic Linear Logic,” Technical report ECS-LFCS-96-347, Laboratory for Foundations of Computer
Sciences, University if Edinburgh, 1996.
3. H. P. Barendregt, “The Lambda-Calculus: Its Syntax and Semantics,” North-Holland, Amsterdam, 1980.
4. H. Barendregt, Lambda calculi with types, in “Handbook of Logic in Computer Science” (S. Abramsky, D. M. Gabbay, and
T. S. E. Maibaum, Eds.), Vol. II, pp. 118–309, Oxford Univ. Press, Oxford, 1992.
74
CERVESATO AND PFENNING
5. N. Benton, G. M. Bierman, J. Martin, E. Hyland, and V. de Paiva, A term calculus for intuitionistic linear logic, in “Proceedings
of the International Conference on Typed Lambda Calculi and Applications” (M. Bezem and J. F. Groote, Eds.), Lecture
Notes in Computer Science, Vol. 664, pp. 75–90, Springer-Verlag, Berlin/New York, 1993.
6. I. Cervesato, “A Linear Logical Framework,” Ph.D. thesis, Dipartimento di Informatica, Universit`a di Torino, February 1996.
7. I. Cervesato, Proof-theoretic foundation of compilation in logic programming languages, in “Proceedings of the 1998 Joint
International Conference and Symposium on Logic Programming—JICSLP’98, Manchester, UK, 16–19 June 1998” (J. Jaffar,
Ed.), pp. 115–129, MIT Press, Cambridge, MA.
8. I. Cervesato, J. S. Hodas, and F. Pfenning, Efficient resource management for linear logic proof search, Theoret. Comput.
Sci. 232 (2000), 133–163.
9. I. Cervesato and F. Pfenning, The linear logical framework LLF, available at
http://www.cs.cmu.edu/

fp/11f/
.
10. I. Cervesato and F. Pfenning, Linear higher-order pre-unification, in “Proceedings of the Twelfth Annual Symposium on
Logic in Computer Science (LICS’97), Warsaw, Poland, June 1997” (G. Winskel, Ed.), pp. 422–433, IEEE Comput. Soc.
Press, Los Alamitos, CA.
11. I. Cervesato and F. Pfenning, “A Linear Spine Calculus,” Technical Report CMU-CS-97–125, Department of Computer
Science, Carnegie Mellon University, Pittsburgh, PA, April 1997.
12. J. Lal Chirimar, “Proof Theoretic Approach to Specification Languages,” Ph.D. thesis, University of Pennsylvania,
May 1995.
13. D. Cl´ement, J. Despeyroux, T. Despeyroux, and G. Kahn, A simple applicative language: Mini-ML, in “Proceedings of the
1986 Conference on LISP and Functional Programming,” pp. 13–27, Assoc. Comput. Mach., New York, 1986.
14. T. Coquand, An algorithm for testing conversion in type theory, in “Logical Frameworks” (G. Huet and G. Plotkin, Eds.),
pp. 255–279, Cambridge Univ. Press, Cambridge, UK, 1991.
15. L. M. M. Damas, “Type Assignment in Programming Languages,” Ph.D. thesis, University of Edinburgh, 1985.
16. N. Dershowitz and J. P. Jouannaud, “Handbook of Theoretical Computer Science,” Vol. B. Chap. Rewrite Systems, pp. 243–
320, MIT Press, Cambridge, MA, 1990.
17. R. Dyckhoff, Contraction-free sequent calculi for intuitionistic logic, J. Symbolic Logic 57 (1992), 795–807.
18. A. Felty, Encoding dependent types in an intuitionistic logic, in “Logical Frameworks” (G. Huet and G. D. Plotkin, Eds.),
pp. 214–251, Cambridge Univ. Press, Cambridge, UK, 1991.
19. R. O. Gandy, Proofs of strong normalization, in “To H. B. Curry: Essays in Combinatory Logic, Lambda Calculus and
Formalism” (J. P. Seldin and J. R. Hindley, Eds.), pp. 457–477, Academic Press, San Diego, 1980.
20. H. Geuvers, “Logics and Type Systems,” Ph.D. thesis, Katholieke Universiteit Nijmegen, 1993.
21. J.-Y. Girard, Linear logic, Theoret. Comput. Sci. 50 (1987), 1–102.
22. J.-Y. Girard, On the unity of logic, Ann. Pure Appl. Logic 59 (1993), 201–217.
23. M. J. Gordon, R. Milner, and C. P. Wadsworth, “Edinburgh LCF,” Lecture Notes in Computer Science, Vol. 78, Springer-
Verlag, Berlin/New York, 1979.
24. M. J. C. Gordon and T. F. Melham, “Introduction to HOL: A Theorem Proving Environment for Higher-order Logic,”
Cambridge Univ. Press, Cambridge, UK, 1993.
25. J. Hannan and D. Miller, From operational semantics to abstract machines: Preliminary results, in “Proceedings of the 1990
ACM Conference on Lisp and Functional Programming, Nice, France, 1990” (M. Wand, Ed.), pp. 323–332.
26. R. Harper, A simplified account of polymorphic references, Inform. Process. Lett. 51 (1994), 201–206.
27. R. Harper, F. Honsell, and G. Plotkin, A framework for defining logics, J. Assoc. Comput. Mach. 40 (1993), 143–184.
28. J. Hodas and D. Miller, Logic programming in a fragment of intuitionistic linear logic, Inform. and Comput. 110 (1994),
327–365. A preliminary version appeared in “Proceedings of the Sixth Annual IEEE Symposium on Logic in Computer
Science, Amsterdam, The Netherlands, July 1991,” pp. 32–42.
29. J. S. Hodas, “Logic Programming in Intuitionistic Linear Logic: Theory, Design, and Implementation,” Ph.D. thesis, Depart-
ment of Computer and Information Science, University of Pennsylvania, 1994.
30. S. Ishtiaq and D. Pym, A relevant analysis of natural deduction, J. Logic Comput. 8, 6 (1998).
31. X. Leroy and P. Weis, Polymorphic type inference and assignment, in “Conference Record of the Eighteenth Annual ACM
Symposium on Principles of Programming Languages, Orlando, FL, January 21–23, 1991,” pp. 291–302, Assoc. Comput.
Mach., New York.
32. P. Lincoln and J. Mitchell, Operational aspects of linear lambda calculus, in “Seventh Annual Symposium on Logic in
Computer Science, Santa Cruz, California, June 1992,” pp. 235–246, IEEE Comput. Soc. Press, Los Alamits, CA.
33. S. Michaylov and F. Pfenning, Natural semantics and some of its meta-theory in Elf, in “Proceedings of the Second Inter-
national Workshop on Extensions of Logic Programming, Stockholm, Sweden, January 1991” (L.-H. Eriksson, L. Halln¨as,
and P. Schroeder-Heister, Eds.), Lecture Notes in Artificial Intelligence, Vol. 596, pp. 299–344, Springer-Verlag, Berlin/
New York.
34. D. Miller, A multiple-conclusion meta-logic, in “Ninth Annual IEEE Symposium on Logic in Computer Science, Paris,
France, July 1994” (S. Abramsky, Ed.), pp. 272–281.
35. D. Miller, G. Plotkin, and D. Pym, A relevant analysis of natural deduction, Talk given at the Workshop on Logical Frameworks,
B˚astad, Sweden, May 1992.
36. R. Milner, M. Tofte, R. Harper, and D. McQueen, “The Definition of Standard ML,” Revised, MIT Press, Cambridge, MA,
1997.
37. F. Pfenning, Logical frameworks, available at
http://www.cs.cmu.edu/

fp/lfs.html
.
38. F. Pfenning, Logic programming in the LF logical framework, in “Logical Frameworks” (G. Huet and G. Plotkin, Eds.),
pp. 149–181, Cambridge Univ. Press, Cambridge, MA, 1991.
39. F. Pfenning, Computation and deduction, Unpublished lecture notes, revised May 1994, April 1996, May 1992.
A LINEAR LOGICAL FRAMEWORK
75
40. F. Pfenning (1992), A proof of the Church-Rosser theorem and its representation in a logical framework, Technical Report
CMU-CS-92-186, Department of Computer Science, Carnegie Mellon University, available at
http://www.cs.cmu.
edu/

fp/papers/cr92.ps.gz
.
41. F. Pfenning, Elf: A meta-language for deductive systems, in “Proceedings of the 12th International Conference on Automated
Deduction, Nancy, France, June 1994” (A. Bundy, Ed.), System abstract. Lecture Notes in Artificial Intelligence, Vol. 814,
pp. 811–815, Springer-Verlag, Berlin/New York.
42. F. Pfenning, “Structural Cut Elimination in Linear Logic,” Technical Report CMU-CS-94-222, Department of Computer
Science, Carnegie Mellon University, December 1994.
43. F. Pfenning, Structural cut elimination, in “Proceedings of the Tenth Annual Symposium on Logic in Computer Science,
San Diego, California, June 1995” (D. Kozen, Ed.), pp. 156–166, IEEE Comput. Soc. Press, Los Alamitos, CA, 1995.
44. F. Pfenning, The practice of logical frameworks, in “Proceedings of the Colloquium on Trees in Algebra and Programming,
Link¨oping, Sweden, April 1996” (H. Kirchner, Ed.), Invited Talk. Lecture Notes in Computer Science, Vol. 1059, pp. 119–134,
Springer-Verlag, Berlin/New York.
45. F. Pfenning, Structural cut elimination I. intuitionistic and classical logic, Inform. and Comput. 157 (2000), 84–141.
46. F. Pfenning and C. Sch¨urmann, The Twelf project, available at
http://www.cs.cmu.edu/

twelf/
.
47. F. Pfenning and C. Sch¨urmann, Automated theorem proving in a simple meta-logic for LF, in “Proceedings of the 15th
Conference on Automated Deduction—CADE-15, Lindau, Germany, July 1998” (C. Kirchner and H. Kirchner, Eds.),
Lecture Notes in Artificial Intelligence, Vol. 1421, pp. 286–300, Springer-Verlag, Berlin/New York.
48. F. Pfenning and C. Sch¨urmann, System description: Twelf—a meta-logical framework for deductive systems, in “Proceedings
of the 16th International Conference on Automated Deduction (CADE-16), Trento, Italy, July 1999” (H. Ganzinger, Ed.),
Lecture Notes in Artificial Intelligence, Vol. 1632, pp. 202–206, Springer-Verlag, Berlin/New York.
49. A. Salvesen, The Church-Rosser theorem for LF with
βη-reduction, Unpublished notes to a talk given at the First Workshop
on Logical Frameworks in Antibes, France, May 1990.
50. M. Tofte, Type inference for polymorphic references, Inform. and Comput. 89 (1990), 1–34.
51. A. S. Troelstra, Strong normalization for typed terms with surjective pairing, Notre Dame J. Formal Logic 27 (1986), 547–550.
52. M. VanInwegen, “The Machine-Assisted Proof of Programming Language Properties,” Ph.D. thesis, Department of Computer
and Information Science, University of Pennsylvania, 1996.
53. P. Wadler, Linear types can change the world, in “IFIP TC 2 Working Conference on Programming Concepts and Methods,
Sea of Gallilee, Israel, April 1990” (M. Broy and C. B. Jones, Eds.), pp. 561–581, North-Holland, Amsterdam.
54. A. K. Wright and M. Felleisen, A syntactic approach to type soundness, Inform. and Comput. 115 (1994), 38–94.

Anda mungkin juga menyukai