Biçimsel kurallar için kullanılan kesir benzeri “ayrık matematik” tarzı gösterim nedir?


18

"Bir Uyuşmaz Çoğaltılmış JSON Veri Türü" makalesinde , resmi olarak "kurallar" tanımlamak için bu gösterimle karşılaştım:

Makalede gösterilen bazı "kurallar"] [1

Bu gösterime ne denir? Nasıl okurum?

Örneğin:

  • DOCKural onun "payında" bir şey yok - neden olmasın?
  • EXECve GETkurallar Bu ne anlama geliyor, ne çizgisinin üzerinde iki ayrı terim var görünüyor?
  • VARdiğer birçok kural okun çeşit kullanırken bu sadece o x şeyin bir elementtir söyleyerek gibi görünüyor kontör (yani alacağını "ima") beri kural yanı biraz öne çıkmaktadır.
  • hemen hemen her şey, Ap,metnin "çoğaltma p'nin durumu, sınırlı bir kısmi işlev olan Ap tarafından tanımlanır" olarak tanımlandığı bir baş harfle doludur - bu gösterimi anlayışlı bir okuyucu, her kuralın bu bölümünü nasıl "görme" eğilimindedir?

Bu site, küçük adımla ilgili bu sorunun ilk kuralı olarak ⟨B, s⟩ -> ⟨B 'nin önemi nedir? semantik? - bu, İşletimsel semantik olarak etiketlenir ve bu güçlü bir ipucu gibi görünmektedir. Gerçekten bu rakamları yorumlamam gereken çerçeve bu mu? Bunu "kilitlenme kursu" biçiminde kolayca özetleyebilir misiniz, böylece kanıtlarının doğruluğunu doğrulayamasam bile, en azından bu bölümde söylediklerini biraz daha iyi anlayabilir miyim?

Yanıtlar:


25

Bu bir çıkarım kuralı için standart bir gösterimdir . Mekanlar yatay bir çizginin üzerine yerleştirilir ve sonuç çizginin altına yerleştirilir. Böylece, bir "kesir" gibi görünür, ancak çizginin üzerinde bir veya daha fazla mantıksal önermeyle ve çizginin altında tek bir önermeyle sonuçlanır. Yanında bir etiket görürseniz (örneğin, örneğinizde "LET" veya "VAR"), bu, söz konusu kuralı tanımlamak için yalnızca okunabilir bir addır.

Bunun doğal kesinti veya Gentzen tarzı doğal kesinti olarak da anıldığını görebilirsiniz .

Bu programlama dilleri literatüründe yaygın bir gösterimdir. Her yerde göreceksin. Bu alanda ortaya çıkan sonuç türleri ve özyinelemeli yapılandırılmış kanıtlar için çok uygundur.

Bu gösterimin aksiyomları / kuralları ifade etmek için kullanıldığını göreceksiniz. Her aksiyomu "meta değişkenleri" olan bir şablon olarak düşünebilirsiniz (örn. İfade ); her meta değişkeni programlama dilinden bazı sözdizimiyle değiştirebilirsiniz (örneğin, programlama dilinde geçerli olan herhangi bir ifade) ve kuralın bir örneğini alırsınız. Çıkarım kuralı, tüm önerilerin satırın üstünde olması durumunda (şablonun bazı değişkenleri için, kuralın her bir değişkenini sürekli olarak aynı değerle değiştirdiğinizde), satırın altındaki teklifin de doğru olacağını vaat eder. .


2
Dikkate değer bir kullanım Hindley-Milner türü çıkarımını belirtmektir: “Milner-Hindley'in hangi kısmını anlamıyorsunuz?” Sorusunun cevabı , bu kurallar dizisini nasıl okuyacağınızı ve kullanacağınızı gösterir.
DylanSp

Küçük bir düzeltme: önermeler ve sonuçlar önermeler değil yargılardır . Öneriler belirli bir yargı biçimidir. Bu doğrultuda yargılar açıktır , doğru değildir (çünkü gerçeklik kavramını tanımlamak zordur ve programlama dili anlambilimi için gerçekten ilginç değildir).
gardenhead

7

İşte resmi notasyonlara aşina olmayan insanların kapıya ayak basmasına yardımcı olabilecek çok gayri resmi bir açıklama. Resmi bir tanımın yerini almaz!

Ap sisteminizde veya çalışan programın durumudur. "Devlet" birçok şey anlamına gelebilir, ancak bu durumda tüm tanımlanmış yerel değişkenlerin ve değerlerinin bir listesini içerir. Ap neden bir işlevdir? Bu değişken atamalarını ifade etmenin uygun bir yoludur: Ap (x) , x değişkeninin değerini verir .

Şimdi, örnek olarak EXEC kuralını ele alalım. Cmd1 komutunun ardından cmd2 komutunun yürütülmesinin anlamını , yani cmd1 yürütülürken cmd2 uygulandığında sistemin Ap durumuyla ne olacağını tanımlar .

  • Çizginin üstünde: Bunlar tesisler. Ne diyorlar: " cmd1'in bir komut olmasına izin verin . Sisteminiz Ap durumundayken cmd1 komutunu çalıştırırsanız, sisteminiz yeni bir Ap ' durumunda kalır ."
  • Çizginin altında: Burada kural cmd1 ve cmd2 olmak üzere iki komutu sırayla yürütmenin ne anlama geldiğini açıklar . Ne diyor: "sisteminizi devlet içinde olduğunu varsayarsak Ap yürütülmesi, cmd1 ardından CMD2 yürütmek vasıta CMD2 sistem durumu olduğunda 'Ap (unutmayın" Ap' sen yürüttükten sonra almak halidir cmd1 tanımlanan, işyeri).

Diğer kurallar, münferit komutların ve ifadelerin anlambilimini açıklar. Örneğin, VAR kuralı bir değişkeni "yürütmenin" ne anlama geldiğini açıklar: x yerel bir değişkendir (satırın üstünde) ise, x değişkenini değerlendirmek / yürütmek ne anlama gelir ? Satırın altına yazılır: Programınız Ap durumundayken , x değerini değerlendirmek size x değerini verir , yani Ap (x) .

Umarım bu yardımcı olur.


Teşekkürler, bu anlamak ve tam olarak ne aradığım için büyük bir yardım! Ancak ilk sorumu cevapsız bırakıyor: bu gösterimin genellikle ve / veya bu bağlamda bir adı var mı? Benim tahminim "Operasyonel semantik" idi, ama şimdiye kadarki diğer cevap, onların sadece "çıkarım kuralları" olduğunu söylüyor. Sanırım iki bölümlü bir soru sorarsam cevapları bölmeyi hak ediyorum, ama şimdi aralarında hangisini kabul
edeceğimi yırtıyorum

1
@natevw Çıkarım kurallarıdır. İşlemsel anlambilim, çıkarım kuralları ile yaygın olarak ifade edilen birçok şeyden sadece biridir.
Gilles 'SO- kötü olmayı bırak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.