Biorąc pod uwagę termin t : ∀x.∃y.(¬(x = 0) ⇒ x = S(y))
z teorii typów Martina-Lofa, jaka jest wartość w(t(0))
, gdzie w
jest operator wydobywający świadka terminu typu egzystencjalnego?
12
Biorąc pod uwagę termin t : ∀x.∃y.(¬(x = 0) ⇒ x = S(y))
z teorii typów Martina-Lofa, jaka jest wartość w(t(0))
, gdzie w
jest operator wydobywający świadka terminu typu egzystencjalnego?
Odpowiedzi:
Dowolna wartość. To zależy od tego, który dostaniesz. Termin typu ∃ y . ( Ź ( 0 = 0 ) ⇒ 0 = S ( T ) ) jest parą int Y i funkcja wykonuje dowód Ź ( 0 = 0 ) i daje dowód 0 = S (t . Y. ( ¬ ( 0 = 0 ) ⇒ 0 = S( y) ) y ¬ ( 0 = 0 ) . Możesz użyć terminu typu ¬ ( 0 = 0 ) i typu 0 = 00 = S( y) ¬ ( 0 = 0 ) 0 = 0 (z zwrotności), aby uzyskać termin dowolnego typu. Obejmuje to termin typu , 0 = S ( 1 ) , … . Możesz więc ustawić dowolną liczbę całkowitą, jaką chcesz.0 = S( 0 ) 0= S( 1 ) … y
źródło
Aby zademonstrować odpowiedź Marka, rozważ następujący dowód
t
twojego oświadczenia, napisany w Coq. W dowodzie zakładamy, że podano parametrk
typunat
. Używamyk
jako wartościy
w przypadkux = 0
:Możemy udowodnić, że
t 0
jest to równek
:protT1
Jest tam, bot 0
nie jest tylko liczbą naturalną, ale w rzeczywistości liczbą naturalną z dowodem, że0 <> 0 -> 0 = S y
iprojT1
wyrzuca dowód.Wyodrębniony kod Ocaml dla
t
, uzyskany za pomocą poleceniaExtraction k
toPonownie możemy zobaczyć, że
t 0
jest równyk
, który był arbtralnie przyjętym parametrem.źródło