Skip to content

Instantly share code, notes, and snippets.

@einblicker
Created March 9, 2012 00:22
Show Gist options
  • Save einblicker/2004310 to your computer and use it in GitHub Desktop.
Save einblicker/2004310 to your computer and use it in GitHub Desktop.
propositional equality
import scalaz._
import Scalaz._
trait REQUAL[A, B] {
def apply[C[_, _]](
x: Forall[({type X[D]=C[D, D]})#X]
): C[A, B]
}
@einblicker
Copy link
Author

CoqはIntensional Type Theory。Setoidが必要なのはこのため?
OTTについて: http://www.cs.nott.ac.uk/~txa/publ/obseqnow.pdf
http://strictlypositive.org/ott.pdf

It separates definitional equality, decidable as in ITT, and a substitutive propositional equality, capturing extensional equality of functions, as in ETT. Moreover, canonicity holds: any closed term is definitionally reducible to a canonical value.
それはITTにおけるようにdecidableなdefinitional equalityとETTにおけるように関数のextensional equalityを捕まえるsubstitutive propositional equalityへ分離する。その上canonicityを持っている。任意の閉じた項はcanonical valueへとdefinitonallyにreducibleである。

Setはdatatypeのsort
Propはpropositional typeのsort
propsitioinal equationが使われるときにITTとOTTが分かれる?
ITTは明示的なLeibniz ruleの適用操作が必要。
ETTだとdefinitional equality (as used in typechecking)とpropositional equality (expressed as a type and used for reasoning)を同一視する。typecheckingがundecidable。
ITTはdefinitional equalityでtype checkingがdecidable。しかしpropositional equalityを扱うのが面倒?
OTTはこれらのいいとこ取りっぽい?
breaucratic:お役所的な

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment