2013-04-04 12 views

Odpowiedz

39

To zdanie jest pełne żargonu. Możesz znaleźć opisy kwantyfikatorów logicznych universal i here.

  1. A Universal Quantifier jest stwierdzeniem logicznym, które dotyczy wszystkich elementów zestawu.
  2. An Existential Quantifier jest logiczną instrukcją, która dotyczy co najmniej jednego elementu zestawu.

Możesz również przeczytać here, aby uzyskać szybki opis logiki first-order. Termin ten służy do oddzielenia first-order z higher-order logicznych:

  1. First-order oświadczenia logiczne są zwykle te; działają na członków zestawu.
  2. Higher-order wyciągi logiczne działają na inne instrukcje logiczne; uważam je za meta-logikę.
+1

wspaniała odpowiedź dzięki milionowi –

+1

Pewnie. Myślę, że koncepcje są dość łatwe, to tylko dużo formalnego żargonu z klasy logicznej. – theJollySin

+2

możesz się pomylić z artykułem Wiki, nie jest to najlepsze źródło kwantyfikatorów. +1 za odpowiedź na kwantyfikatory –

17

W podręczniku Language Proof and Logic podano angielskie wyrażenia dla kwantyfikatorów uniwersalnych i egzystencjalnych, o których mówił profesor Odersky.

Kwantyfikator uniwersalny i całkowity;

służy do wyrażania roszczeń uniwersalne, te wyrażamy w języku angielskim używając quantifed fraz jak wszystko, każdej rzeczy, wszystkim i niczego.

kwantyfikator egzystencjalny ∃

służy do wyrażania roszczeń egzystencjalne, te wyrażamy w języku angielskim za pomocą takich wyrażeń jak coś, przynajmniej jedna rzecz, i .

Wzmianka o tych terminach była prawdopodobnie związana lub prowadziła do operacji na kolekcjach przy użyciu funkcji wyższego rzędu. W Scali przejście od logiki do kodu jest całkiem naturalne przy operacjach forall i exists w kolekcji.Są one analogiczne do uniwersalnych i egzystencjalnych definicji podanych powyżej. Kilka prostych przykładów są pomocne, aby pokazać to:

scala> val l = 1 to 10 
l: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 

scala> l.forall(x => x > 0) 
res0: Boolean = true 

scala> l.forall(x => x > 1) 
res1: Boolean = false 

Te dwa forall wypowiedzi są po prostu pytając zrobić wszystkie elementy tej kolekcji spełniają kryteria.

scala> l.exists(x => x < 1) 
res2: Boolean = false 

scala> l.exists(x => x < 2) 
res3: Boolean = true 

Te dwie exists wypowiedzi są po prostu pytając zrobić wszelkie elementy tej kolekcji spełniają kryteria.

2

Aby w pełni docenić to stwierdzenie, prawdopodobnie trzeba będzie przestudiować pewną logikę. Oto podstawowe zagadnienie:

"Kwantyfikatory" to sposób nadawania znaczenia zmiennym w wyrażeniach logiki. Jeśli powiem "{coś o x}", to samo nie ma większego znaczenia. Musisz wiedzieć, co to jest x, czy jest to stwierdzenie prawdziwe czy fałszywe. Ale jeśli I ilościowego zmienna x mówiąc „dla wszystkich x {coś o x}” lub „nie istnieje x takie, że coś o x {}” potem robię jedno stwierdzenie, które jest albo prawdziwe, albo fałszywe.

W „dla wszystkich x” sprawy mówię, że „coś x {}” jest prawdziwe dla dowolnyx można odebrać; to jest uniwersalna kwantyfikacja. Na przykład "dla wszystkich x, x jest liczbą parzystą" jest fałszywą instrukcją.

W „istnieje takie x takie, że” przypadek mówię, że nie jest możliwy wybór do x tak, że „coś x {}” jest prawdziwe (nie mówię, że wybór tego, co jest po prostu że jest jeden). To jest egzystencjalna kwantyfikacja. Jako przykład "istnieje x taki, że x jest liczbą parzystą" jest prawdziwym stwierdzeniem.

Są duals tym, że „dla wszystkich x {coś x}” oznacza to samo, co „nie jest prawdą, że istnieje x takie, że nie jest prawdą, że {coś x}”, a także "istnieje x taki, że {coś około x}" oznacza to samo co "NIE jest prawdą, że dla wszystkich x NIE jest prawdą, że {coś o x}". Mam nadzieję, że wydaje się to intuicyjnie uzasadnione, jeśli się nad tym zastanowić.

Jeśli powiedzieliście nam, jakie funkcje pełnią funkcje, moglibyśmy wyjaśnić, w jaki sposób odpowiadają kwantyfikatorom uniwersalnym i egzystencjalnym, co może być bardziej pomocne w zrozumieniu punktu instruktora.

Powiązane problemy