foundations
本頁內容尚未翻譯。
isContr
Section titled “isContr”def isContr (A : Type) : TypeA type is contractible when it has a center element to which every element is connected by a path.
def fiber (A : Type) (B : Type) (f : A -> B) (b : B) : TypeThe fiber of f over b: the elements of A that f maps to b, each paired with the path f a ≡ b.
isEquiv
Section titled “isEquiv”def isEquiv (A : Type) (B : Type) (f : A -> B) : TypeA function is an equivalence when every fiber is contractible.
def Equiv (A : Type) (B : Type) : TypeThe type of equivalences from A to B: a function together with a proof that it is an equivalence.
funExt
Section titled “funExt”def funExt (A : Type) (B : Type) (f : A -> B) (g : A -> B) (h : (x : A) -> f x ≡ g x) : f ≡ gFunction extensionality: two functions are equal when they agree pointwise.
idEquiv
Section titled “idEquiv”def idEquiv (A : Type) : Equiv A AThe identity function as an equivalence from A to itself.
def subst (A : Type) (P : A -> Type) (a : A) (b : A) (p : a ≡ b) (pa : P a) : P bSubstitution: transport an element of P a along a path a ≡ b to get an element of P b.
equivFun
Section titled “equivFun”def equivFun {A : Type} {B : Type} (e : Equiv A B) : A -> BThe underlying function of an equivalence.
equivProof
Section titled “equivProof”def equivProof {A : Type} {B : Type} (e : Equiv A B) : isEquiv A B (fst e)The proof that the underlying function of an equivalence is an equivalence.
pathToEquiv
Section titled “pathToEquiv”def pathToEquiv {A : Type} {B : Type} (p : A ≡ B) : A -> BTurn a path between types A ≡ B into a function A -> B by transport.
curryDep
Section titled “curryDep”def curryDep {A : Type} {B : A -> Type} {C : Type} (f : ((x : A) × B x) -> C) (a : A) (b : B a) : CCurry a function on a dependent pair into a function of two arguments.
uncurryDep
Section titled “uncurryDep”def uncurryDep {A : Type} {B : A -> Type} {C : Type} (f : (a : A) -> B a -> C) (p : (x : A) × B x) : CUncurry a two-argument dependent function into a function on dependent pairs.
def symP {A : Type} {a : A} {b : A} (p : a ≡ b) : b ≡ aPath symmetry: reverse a path a ≡ b into b ≡ a (prelude-local copy).
def congP {A : Type} {B : Type} {a : A} {b : A} (f : A -> B) (p : a ≡ b) : f a ≡ f bCongruence: apply f to a path a ≡ b to get f a ≡ f b (prelude-local copy).
congSymP
Section titled “congSymP”def congSymP {A : Type} {B : Type} {a : A} {b : A} (f : A -> B) (p : a ≡ b) : congP f (symP p) ≡ symP (congP f p)Applying f to a reversed path is the reverse of applying f to the path: congP f (symP p) ≡ symP (congP f p).
Path.refl
Section titled “Path.refl”def refl {l : Level} {A : Type l} {a : A} : a ≡ aThe constant path at a point; write refl where a path is expected.
def sym {l : Level} {A : Type l} {a b : A} (p : a ≡ b) : b ≡ aPath inversion: a path from a to b reversed is a path from b to a.
def cong {l : Level} {m : Level} {A : Type l} {B : Type m} {a b : A} (f : A -> B) (p : a ≡ b) : f a ≡ f bApplies a function to a path, giving a path between the images of its endpoints.
def congS {A : Type} {a b : A} (f : A -> A) (p : a ≡ b) : f a ≡ f bApplies an endofunction to a path; cong specialised to A -> A.
def cong2 {A B : Type} {C : Type} {a1 : A} {a2 : A} {b1 : B} {b2 : B} (f : A -> B -> C) (p : a1 ≡ a2) (q : b1 ≡ b2) : f a1 b1 ≡ f a2 b2Applies a two-argument function to a pair of paths, giving a path between the images.
symInv
Section titled “symInv”def symInv {A : Type} {a b : A} (p : a ≡ b) : sym (sym p) ≡ pInverting a path twice gives back the same path.
transportRefl
Section titled “transportRefl”def transportRefl {l : Level} {A : Type l} (a : A) : transport (fun i => A) a ≡ aTransport along a constant line is the identity, up to a path.
substRefl
Section titled “substRefl”def substRefl {A : Type} (P : A -> Type) (a : A) (x : P a) : transport (fun i => P a) x ≡ xTransport in a family along a constant line at a point is the identity, up to a path.
transportConst
Section titled “transportConst”def transportConst {A B : Type} (p : A ≡ B) (a : A) : transport (fun i => A) a ≡ aTransport along the constant line at A returns its argument, up to a path; the given type path is unused.
isProp
Section titled “isProp”def isProp (A : Type) : TypeA type is a proposition when any two of its elements are connected by a path.
def isSet (A : Type) : TypeA type is a set when any two parallel paths in it are connected by a path.
isPropToIsSet
Section titled “isPropToIsSet”def isPropToIsSet (A : Type) (h : isProp A) (x : A) (y : A) (p : x ≡ y) (q : x ≡ y) : p ≡ qEvery proposition is a set.
isContrToIsProp
Section titled “isContrToIsProp”def isContrToIsProp {A : Type} (h : isContr A) : isProp AEvery contractible type is a proposition.
isPropPi
Section titled “isPropPi”def isPropPi {A : Type} {B : A -> Type} (h : (x : A) -> isProp (B x)) : isProp ((x : A) -> B x)A dependent function type into a family of propositions is a proposition.
def trans {l : Level} {A : Type l} {a b : A} {c : A} (p : a ≡ b) (q : b ≡ c) : a ≡ cPath composition: a path from a to b followed by a path from b to c gives a path from a to c.
transIdR
Section titled “transIdR”def transIdR {A : Type} {a b : A} (p : a ≡ b) : trans p (fun k => b) ≡ pComposing a path with the constant path on the right gives back the path.
transIdL
Section titled “transIdL”def transIdL {A : Type} {a b : A} (p : a ≡ b) : trans (fun k => a) p ≡ pComposing a path with the constant path on the left gives back the path.
reflAt
Section titled “reflAt”def reflAt {A : Type} (a : A) : a ≡ aThe constant path at an explicitly given point.
rCancel
Section titled “rCancel”def rCancel {A : Type} {a b : A} (p : a ≡ b) : trans p (sym p) ≡ reflAt aA path composed with its inverse is the constant path at its start.
lCancel
Section titled “lCancel”def lCancel {A : Type} {a b : A} (p : a ≡ b) : trans (sym p) p ≡ reflAt bThe inverse of a path composed with the path is the constant path at its end.
def J {l : Level} {m : Level} {A : Type l} {a : A} (P : (x : A) -> a ≡ x -> Type m) (d : P a (fun i => a)) {b : A} (p : a ≡ b) : P b pBased path induction: a property of paths out of a, proved for refl, holds for every path out of a.
transportUa
Section titled “transportUa”def transportUa (A : Type) (B : Type) (e : Equiv A B) (x : A) : transport (ua e) x ≡ fst e xTransport along the univalence path of an equivalence applies the equivalence’s function, up to a path.
sigmaMapSnd
Section titled “sigmaMapSnd”def sigmaMapSnd {A : Type} {B : A -> Type} {C : A -> Type} (f : (a : A) -> B a -> C a) (p : (a : A) × B a) : (a : A) × C aMaps a fiberwise function over the second component of a dependent pair, keeping the first.
happly
Section titled “happly”def happly {A : Type} {B : A -> Type} {f : (x : A) -> B x} {g : (x : A) -> B x} (p : f ≡ g) (x : A) : f x ≡ g xTurns a path between functions into a pointwise path between their values.
whiskerL
Section titled “whiskerL”def whiskerL {A : Type} {a b : A} {c : A} (p : a ≡ b) {q : b ≡ c} {r : b ≡ c} (h : q ≡ r) : trans p q ≡ trans p rComposing a fixed path on the left preserves a path between paths.
whiskerR
Section titled “whiskerR”def whiskerR {A : Type} {a b : A} {c : A} {p : a ≡ b} {q : a ≡ b} (h : p ≡ q) (r : b ≡ c) : trans p r ≡ trans q rComposing a fixed path on the right preserves a path between paths.
isDiscrete
Section titled “isDiscrete”def isDiscrete (A : Type) : TypeA type is discrete when paths between any two of its elements are decidable.
isGroupoid
Section titled “isGroupoid”def isGroupoid (A : Type) : TypeA type is a groupoid when any two parallel 2-paths in it are connected by a path.
data Acc (A : Type) (R : A -> A -> Type) : A -> TypeThe accessibility predicate: x is accessible under R when every R-predecessor of x is accessible.
WellFounded
Section titled “WellFounded”def WellFounded (A : Type) (R : A -> A -> Type) : TypeA relation is well-founded when every element is accessible under it.
congId
Section titled “congId”def congId {A : Type} {a b : A} (p : a ≡ b) : cong (fun (x : A) => x) p ≡ pApplying the identity function to a path gives back the path.
congConst
Section titled “congConst”def congConst {A B : Type} {a b : A} (c : B) (p : a ≡ b) : cong (fun (_ : A) => c) p ≡ reflApplying a constant function to a path gives the constant path.
pathSigmaNonDep
Section titled “pathSigmaNonDep”def pathSigmaNonDep {A B : Type} {x : A × B} {y : A × B} (p : fst x ≡ fst y) (q : snd x ≡ snd y) : x ≡ yBuilds a path between pairs from paths between their components.
fstPath
Section titled “fstPath”def fstPath {A : Type} {B : A -> Type} {x : (a : A) × B a} {y : (a : A) × B a} (p : x ≡ y) : fst x ≡ fst yProjects a path between dependent pairs to a path between their first components.
singlContr
Section titled “singlContr”def singlContr {A : Type} (x : A) : isContr ((a : A) × (a ≡ x))The singleton type of elements with a path to x is contractible.
isPropContr
Section titled “isPropContr”def isPropContr {A : Type} (h : isContr A) : isProp AEvery contractible type is a proposition.
isPropProd
Section titled “isPropProd”def isPropProd {A B : Type} (ha : isProp A) (hb : isProp B) : isProp (A × B)The product of two propositions is a proposition.
funExtSym
Section titled “funExtSym”def funExtSym (A : Type) (B : Type) (f : A -> B) (g : A -> B) (h : (x : A) -> g x ≡ f x) : g ≡ fFunction extensionality with reversed pointwise paths: from g x ≡ f x for all x, get g ≡ f.
substConst
Section titled “substConst”def substConst (A : Type) (B : Type) (a : A) (b : A) (p : a ≡ b) (x : B) : subst A (fun (z : A) => B) a b p x ≡ xSubstitution in a constant family returns the original value, up to a path.
isPropPi_explicit
Section titled “isPropPi_explicit”def isPropPi_explicit (A : Type) (B : A -> Type) (h : (x : A) -> isProp (B x)) : isProp ((x : A) -> B x)A dependent function type into a family of propositions is a proposition, with explicit type arguments.
isPropFun
Section titled “isPropFun”def isPropFun (A : Type) (B : Type) (h : isProp B) : isProp (A -> B)Functions into a proposition form a proposition.
isPropArrow
Section titled “isPropArrow”def isPropArrow (A : Type) (B : Type) (h : isProp B) : isProp (A -> B)Functions into a proposition form a proposition, proved pointwise.
congSym
Section titled “congSym”def congSym {A B : Type} {a b : A} (f : A -> B) (p : a ≡ b) : cong f (sym p) ≡ sym (cong f p)Applying a function to an inverted path equals inverting the applied path.
congConst2
Section titled “congConst2”def congConst2 {A : Type} {B : Type} {a b : A} (c : B) (p : a ≡ b) : cong (fun (_ : A) => c) p ≡ reflApplying a constant function to a path gives the constant path.
transportConstPath
Section titled “transportConstPath”def transportConstPath {A : Type} (a : A) : transport (fun (i : I) => A) a ≡ aTransport along a constant line is the identity, up to a path.
sndPath
Section titled “sndPath”def sndPath {A B : Type} {x : A × B} {y : A × B} (p : x ≡ y) : snd x ≡ snd yProjects a path between pairs to a path between their second components.
def fstMk {A : Type} {B : A -> Type} (a : A) (b : B a) : fst (a, b) ≡ aThe first projection of a pair is its first component.
def sndMk {A : Type} {B : A -> Type} (a : A) (b : B a) : snd (a, b) ≡ bThe second projection of a pair is its second component.
def idFn (A : Type) (a : A) : AThe identity function at an explicit type.
constFn
Section titled “constFn”def constFn (A : Type) (B : Type) (a : A) (b : B) : AThe constant function returning its first argument.
compose
Section titled “compose”def compose {A : Type} {B : Type} {C : Type} (g : B -> C) (f : A -> B) (x : A) : CFunction composition: compose g f applies f and then g.
composeIdL
Section titled “composeIdL”def composeIdL (A : Type) (B : Type) (f : A -> B) (x : A) : compose (idFn B) f x ≡ f xComposing with the identity on the left does not change a function’s value.
composeIdR
Section titled “composeIdR”def composeIdR (A : Type) (B : Type) (f : A -> B) (x : A) : compose f (idFn A) x ≡ f xComposing with the identity on the right does not change a function’s value.
composeAssoc
Section titled “composeAssoc”def composeAssoc (A : Type) (B : Type) (C : Type) (D : Type) (f : C -> D) (g : B -> C) (h : A -> B) (x : A) : compose f (compose g h) x ≡ compose (compose f g) h xFunction composition is associative.
def Not (A : Type) : TypeNegation: A implies Empty.
notIntro
Section titled “notIntro”def notIntro {A : Type} (f : A -> Empty) : Not ATurns a function into Empty into a negation.
dn_intro
Section titled “dn_intro”def dn_intro {A : Type} (a : A) : Not (Not A)Double negation introduction: an element of A refutes Not A.
isPropEmpty
Section titled “isPropEmpty”def isPropEmpty : isProp EmptyEmpty is a proposition.
isPropNot
Section titled “isPropNot”def isPropNot (A : Type) : isProp (Not A)Every negation is a proposition.
isSetToIsPropPath
Section titled “isSetToIsPropPath”def isSetToIsPropPath {A : Type} (h : isSet A) (x : A) (y : A) : isProp (x ≡ y)In a set, every path space is a proposition.
fiberRefl
Section titled “fiberRefl”def fiberRefl (A : Type) (B : Type) (f : A -> B) (a : A) : fiber A B f (f a)The point a with the constant path is in the fiber of f over f a.
equivRefl
Section titled “equivRefl”def equivRefl (A : Type) : Equiv A AThe identity equivalence of a type.
funExtDep
Section titled “funExtDep”def funExtDep {A : Type} {B : A -> Type} (f : (x : A) -> B x) (g : (x : A) -> B x) (h : (x : A) -> f x ≡ g x) : f ≡ gDependent function extensionality: pointwise paths give a path between dependent functions.
funExtSym2
Section titled “funExtSym2”def funExtSym2 {A : Type} {B : A -> Type} {f : (x : A) -> B x} {g : (x : A) -> B x} (h : (x : A) -> f x ≡ g x) : g ≡ fFunction extensionality reversed: pointwise paths from f to g give a path from g to f.
isContrProd
Section titled “isContrProd”def isContrProd {A B : Type} (ha : isContr A) (hb : isContr B) : isContr (A × B)The product of two contractible types is contractible.
isContrToIsSet
Section titled “isContrToIsSet”def isContrToIsSet {A : Type} (h : isContr A) : isSet AEvery contractible type is a set.
mapDec
Section titled “mapDec”def mapDec {A B : Type} (f : A -> B) (g : B -> A) (d : Dec A) : Dec BTransfers a decision along a pair of maps back and forth between two types.
transportSym
Section titled “transportSym”def transportSym {A B : Type} (p : A ≡ B) (b : B) : ATransports an element backwards along a path between types.
transportConst2
Section titled “transportConst2”def transportConst2 {A : Type} (a : A) : transport Path.refl a ≡ aTransport along refl is the identity, up to a path.
doubleComp
Section titled “doubleComp”def doubleComp {A : Type} {a b : A} {c : A} {d : A} (p : a ≡ b) (q : b ≡ c) (r : c ≡ d) : a ≡ dComposes three consecutive paths.
etaPair
Section titled “etaPair”def etaPair {A : Type} {B : A -> Type} (p : (a : A) × B a) : p ≡ pEvery dependent pair is connected to itself by refl.
cong2Refl
Section titled “cong2Refl”def cong2Refl {A B C : Type} (f : A -> B -> C) (a : A) (b : B) : cong2 f (refl : a ≡ a) (refl : b ≡ b) ≡ reflApplying a binary function to two constant paths gives the constant path.
congComp
Section titled “congComp”def congComp {A B : Type} {C : Type} {a b : A} (g : B -> C) (f : A -> B) (p : a ≡ b) : cong (fun (x : A) => g (f x)) p ≡ cong g (cong f p)Applying a composite function to a path equals applying the two functions in turn.
symRefl
Section titled “symRefl”def symRefl {A : Type} (a : A) : sym (refl : a ≡ a) ≡ reflThe inverse of the constant path is the constant path.
symCong
Section titled “symCong”def symCong {A B : Type} {a b : A} (f : A -> B) (p : a ≡ b) : sym (cong f p) ≡ cong f (sym p)Inverting an applied path equals applying the function to the inverted path.
isSetPi
Section titled “isSetPi”def isSetPi {A : Type} {B : A -> Type} (h : (x : A) -> isSet (B x)) : isSet ((x : A) -> B x)A dependent function type into a family of sets is a set.
isSetProd
Section titled “isSetProd”def isSetProd {A B : Type} (ha : isSet A) (hb : isSet B) : isSet (A × B)The product of two sets is a set.
congCompEq
Section titled “congCompEq”def congCompEq {A B C : Type} {a b : A} (f : B -> C) (g : A -> B) (p : a ≡ b) : cong (fun (x : A) => f (g x)) p ≡ cong f (cong g p)Applying a composite function to a path equals applying the two functions in turn.
transportPath
Section titled “transportPath”def transportPath {A : Type} (B : A -> Type) (a b : A) (p : a ≡ b) (x : B a) : B bTransports an element of a family along a path in the base.
transportPathRefl
Section titled “transportPathRefl”def transportPathRefl {A : Type} (B : A -> Type) (a : A) (x : B a) : transportPath B a a (fun k => a) x ≡ xTransporting along the constant path in the base is the identity, up to a path.
transportConst3
Section titled “transportConst3”def transportConst3 {A B : Type} (a1 a2 : A) (p : a1 ≡ a2) (b : B) : transportPath (fun (_ : A) => B) a1 a2 p b ≡ bTransporting in a constant family along any base path is the identity, up to a path.
substConst2
Section titled “substConst2”def substConst2 {A B : Type} {a b : A} (p : a ≡ b) (x : B) : transport (fun i => B) x ≡ xTransport in a constant family is the identity, up to a path; the given path is unused.
transportFunConst
Section titled “transportFunConst”def transportFunConst {A B : Type} (f : A -> B) : transport (fun (i : I) => A -> B) f ≡ fTransport of a function along the constant function-type line is the identity, up to a path.
funExtSimple
Section titled “funExtSimple”def funExtSimple {A B : Type} (f g : A -> B) (h : (x : A) -> f x ≡ g x) : f ≡ gFunction extensionality for non-dependent functions with explicit arguments.
isPropSigmaNonDep
Section titled “isPropSigmaNonDep”def isPropSigmaNonDep {A B : Type} (ha : isProp A) (hb : isProp B) : isProp (A × B)The product of two propositions is a proposition.
isSetSigmaNonDep
Section titled “isSetSigmaNonDep”def isSetSigmaNonDep {A B : Type} (ha : isSet A) (hb : isSet B) : isSet (A × B)The product of two sets is a set.
isPropToIsSet2
Section titled “isPropToIsSet2”def isPropToIsSet2 {A : Type} (h : isProp A) : isSet AEvery proposition is a set, with an implicit type argument.
isSetPath2
Section titled “isSetPath2”def isSetPath2 {A : Type} (h : isGroupoid A) (x y : A) : isSet (x ≡ y)In a groupoid, every path space is a set.
decNeg
Section titled “decNeg”def decNeg (A : Type) (d : Dec A) : Dec (Not A)Turns a decision on A into a decision on Not A.
isPropDecEmpty
Section titled “isPropDecEmpty”def isPropDecEmpty : isProp (Dec Empty)Dec Empty is a proposition.
def cong3 {A B C D : Type} {a1 a2 : A} {b1 b2 : B} {c1 c2 : C} (f : A -> B -> C -> D) (p : a1 ≡ a2) (q : b1 ≡ b2) (r : c1 ≡ c2) : f a1 b1 c1 ≡ f a2 b2 c2Applies a three-argument function to three paths, giving a path between the images.
equivFunApp
Section titled “equivFunApp”def equivFunApp {A B : Type} (e : Equiv A B) (a : A) : BApplies the forward function of an equivalence.
equivId
Section titled “equivId”def equivId (A : Type) : Equiv A AThe identity equivalence of a type.
equivFiberIsContr
Section titled “equivFiberIsContr”def equivFiberIsContr {A B : Type} (e : Equiv A B) (b : B) : isContr (fiber A B (fst e) b)Every fiber of an equivalence’s function is contractible.
def flip {A B C : Type} (f : A -> B -> C) (b : B) (a : A) : CSwaps the two arguments of a binary function.
def on {A B C : Type} (f : B -> B -> C) (g : A -> B) (x : A) (y : A) : CApplies a binary function after mapping both arguments through g.
mapFst
Section titled “mapFst”def mapFst {A B C : Type} (f : A -> C) (p : A × B) : C × BApplies a function to the first component of a pair.
mapSnd
Section titled “mapSnd”def mapSnd {A B C : Type} (f : B -> C) (p : A × B) : A × CApplies a function to the second component of a pair.
prodMap
Section titled “prodMap”def prodMap {A B C D : Type} (f : A -> C) (g : B -> D) (p : A × B) : C × DApplies one function to each component of a pair.
def swap {A B : Type} (p : A × B) : B × ASwaps the components of a pair.
def diag {A : Type} (a : A) : A × AThe diagonal: pairs an element with itself.
def curry {A B C : Type} (f : A × B -> C) (a : A) (b : B) : CTurns a function on pairs into a curried two-argument function.
uncurry
Section titled “uncurry”def uncurry {A B C : Type} (f : A -> B -> C) (p : A × B) : CTurns a curried two-argument function into a function on pairs.
isPropFun2
Section titled “isPropFun2”def isPropFun2 (A B C : Type) (h : isProp C) : isProp (A -> B -> C)Two-argument functions into a proposition form a proposition.
isSetFun
Section titled “isSetFun”def isSetFun {A B : Type} (h : isSet B) : isSet (A -> B)Functions into a set form a set.
transportConstConst
Section titled “transportConstConst”def transportConstConst {A : Type} (a : A) : transport (fun (i : I) => A) (transport (fun (i : I) => A) a) ≡ aTransporting twice along a constant line is the identity, up to a path.
transportConstPSym
Section titled “transportConstPSym”def transportConstPSym {A B : Type} (p : A ≡ B) (a : A) : transport (fun (i : I) => A) a ≡ aTransport along the constant line at A is the identity, up to a path; the given type path is unused.
transportPathComp
Section titled “transportPathComp”def transportPathComp {A : Type} (B : A -> Type) (a : A) (x : B a) : transportPath B a a (fun k => a) (transportPath B a a (fun k => a) x) ≡ xTransporting twice along the constant base path is the identity, up to a path.
transportSigmaConst
Section titled “transportSigmaConst”def transportSigmaConst {A B : Type} (p : A × B) : transport (fun (i : I) => A × B) p ≡ pTransport of a pair along a constant product line is the identity, up to a path.
transportPairConst
Section titled “transportPairConst”def transportPairConst {A B : Type} (a : A) (b : B) : transport (fun (i : I) => A × B) (a, b) ≡ (a, b)Transport of an explicit pair along a constant product line returns the pair, up to a path.
transportPairFst
Section titled “transportPairFst”def transportPairFst {A B : Type} (a : A) (b : B) : fst (transport (fun (i : I) => A × B) (a, b)) ≡ aAfter transport along a constant product line, the first component is unchanged, up to a path.
transportPairSnd
Section titled “transportPairSnd”def transportPairSnd {A B : Type} (a : A) (b : B) : snd (transport (fun (i : I) => A × B) (a, b)) ≡ bAfter transport along a constant product line, the second component is unchanged, up to a path.
transportPiConst
Section titled “transportPiConst”def transportPiConst {A : Type} {B : A -> Type} (f : (x : A) -> B x) : transport (fun (i : I) => (x : A) -> B x) f ≡ fTransport of a dependent function along a constant line is the identity, up to a path.
transportPiApp
Section titled “transportPiApp”def transportPiApp {A B : Type} (f : A -> B) (a : A) : (transport (fun (i : I) => A -> B) f) a ≡ f aA function transported along a constant line agrees with the original at every argument.
JConst
Section titled “JConst”def JConst {A : Type} (a : A) (B : Type) (d : B) (b : A) (p : a ≡ b) : J (fun (x : A) => fun (_ : a ≡ x) => B) d p ≡ dPath induction with a motive that ignores the path returns the base case, up to a path.
happlyFunExtDep
Section titled “happlyFunExtDep”def happlyFunExtDep {A : Type} {B : A -> Type} (f : (x : A) -> B x) (g : (x : A) -> B x) (h : (x : A) -> f x ≡ g x) : happly (funExtDep f g h) ≡ hhapply undoes funExtDep: the pointwise paths come back unchanged.
funExtDepHapply
Section titled “funExtDepHapply”def funExtDepHapply {A : Type} {B : A -> Type} (f : (x : A) -> B x) (g : (x : A) -> B x) (p : f ≡ g) : funExtDep f g (happly p) ≡ pfunExtDep undoes happly: the path between functions comes back unchanged.
pathIndBase
Section titled “pathIndBase”def pathIndBase {A : Type} {a : A} (P : (x : A) -> a ≡ x -> Type) (d : P a (fun i => a)) : P a (fun i => a)Returns the base case of path induction at refl.
pathIndTransport
Section titled “pathIndTransport”def pathIndTransport {A : Type} {a : A} (P : (x : A) -> a ≡ x -> Type) (d : P a (fun i => a)) {b : A} (p : a ≡ b) : P b pTransports a base case along a path using J.
substConstConst
Section titled “substConstConst”def substConstConst {A B : Type} (a b c : A) (p : a ≡ b) (q : b ≡ c) (x : B) : subst A (fun (_ : A) => B) b c q (subst A (fun (_ : A) => B) a b p x) ≡ xSubstituting twice in a constant family returns the original value, up to a path.
substRefl2
Section titled “substRefl2”def substRefl2 {A : Type} (P : A -> Type) (a : A) (x : P a) : subst A P a a (fun k => a) x ≡ xSubstitution along the constant path is the identity, up to a path.
substCong
Section titled “substCong”def substCong {A B : Type} (Q : B -> Type) (f : A -> B) {a b : A} (p : a ≡ b) (x : Q (f a)) : subst B Q (f a) (f b) (cong f p) x ≡ transport (fun i => Q (f (p i))) xSubstitution along an applied path is transport along the composite family.
congReflAt
Section titled “congReflAt”def congReflAt {A B : Type} (f : A -> B) (a : A) : cong f (reflAt a) ≡ reflAt (f a)Applying a function to a constant path gives the constant path at the image.
pathSigmaNonDepRefl
Section titled “pathSigmaNonDepRefl”def pathSigmaNonDepRefl {A B : Type} (x : A × B) : pathSigmaNonDep {A} {B} {x} {x} refl refl ≡ reflBuilding a pair path from two constant paths gives the constant path.
isContrPath
Section titled “isContrPath”def isContrPath {A : Type} (h : isContr A) (x : A) (y : A) : isContr (x ≡ y)Every path space of a contractible type is contractible.
isContrPi
Section titled “isContrPi”def isContrPi {A : Type} {B : A -> Type} (h : (x : A) -> isContr (B x)) : isContr ((x : A) -> B x)A dependent function type into a family of contractible types is contractible.
doubleCompTrans
Section titled “doubleCompTrans”def doubleCompTrans {A : Type} {a b c d : A} (p : a ≡ b) (q : b ≡ c) (r : c ≡ d) : doubleComp p q r ≡ trans (trans p q) rTriple composition unfolds to two nested binary compositions.
whiskerLUnfold
Section titled “whiskerLUnfold”def whiskerLUnfold {A : Type} {a b c : A} (p : a ≡ b) {q : b ≡ c} {r : b ≡ c} (h : q ≡ r) : whiskerL p h ≡ (fun j => trans p (h j))Unfolds left whiskering to its definition.
whiskerRUnfold
Section titled “whiskerRUnfold”def whiskerRUnfold {A : Type} {a b c : A} {p : a ≡ b} {q : a ≡ b} (h : p ≡ q) (r : b ≡ c) : whiskerR h r ≡ (fun j => trans (h j) r)Unfolds right whiskering to its definition.
isPropPathFromSet
Section titled “isPropPathFromSet”def isPropPathFromSet {A : Type} (hA : isSet A) (x y : A) : isProp (x ≡ y)In a set, every path space is a proposition.
accEmpty
Section titled “accEmpty”def accEmpty (A : Type) (x : A) : Acc A (fun (_ : A) => fun (_ : A) => Empty) xEvery element is accessible under the empty relation.
wfEmpty
Section titled “wfEmpty”def wfEmpty (A : Type) : WellFounded A (fun (_ : A) => fun (_ : A) => Empty)The empty relation is well-founded.
isPropFun3
Section titled “isPropFun3”def isPropFun3 {A B C D : Type} (h : isProp D) : isProp (A -> B -> C -> D)Three-argument functions into a proposition form a proposition.
isPropProdFun
Section titled “isPropProdFun”def isPropProdFun {A B C D : Type} (hC : isProp C) (hD : isProp D) : isProp ((A -> C) × (B -> D))A pair of functions into propositions forms a proposition.
congCompose
Section titled “congCompose”def congCompose {A B C : Type} {a b : A} (g : B -> C) (f : A -> B) (p : a ≡ b) : cong (fun (x : A) => compose g f x) p ≡ cong (fun (x : A) => g (f x)) pApplying compose g f to a path equals applying the lambda composite.
decProd
Section titled “decProd”def decProd {A B : Type} (dA : Dec A) (dB : Dec B) : Dec (A × B)Decides a product from decisions on both components.
transportReflFam1
Section titled “transportReflFam1”def transportReflFam1 {A : Type} (x : A) : transport (fun i => A) x ≡ xTransport along a constant line is the identity, up to a path.
transportReflFamTwice
Section titled “transportReflFamTwice”def transportReflFamTwice {A : Type} (a : A) : transport (fun i => A) (transport (fun i => A) a) ≡ aTransporting twice along a constant line is the identity, up to a path.
transportConstFam
Section titled “transportConstFam”def transportConstFam {A B : Type} (b : B) : transport (fun i => B) b ≡ bTransport along a constant line is the identity, up to a path.
transportConstFamFull
Section titled “transportConstFamFull”def transportConstFamFull {A B : Type} (p : A ≡ B) (b : B) : transport (fun i => B) b ≡ bTransport along the constant line at B is the identity, up to a path; the given type path is unused.
Jsimple
Section titled “Jsimple”def Jsimple {A : Type} {a : A} (P : A -> Type) (d : P a) {b : A} (p : a ≡ b) : P bNon-dependent path induction: transports an element of P a to P b along a path.
JsimpleRefl
Section titled “JsimpleRefl”def JsimpleRefl {A : Type} {a : A} (P : A -> Type) (d : P a) : Jsimple P d (reflAt a) ≡ transport (fun i => P a) dNon-dependent path induction along a constant path is transport along the constant line.
substReflTwice
Section titled “substReflTwice”def substReflTwice {A : Type} (P : A -> Type) (a : A) (x : P a) : transport (fun i => P a) (transport (fun i => P a) x) ≡ xTransporting twice along a constant line in a family is the identity, up to a path.
substApp
Section titled “substApp”def substApp {A B : Type} (f : A -> B) (a : A) : transport (fun i => B) (f a) ≡ f aTransport of a function value along a constant line is the identity, up to a path.
funextDep
Section titled “funextDep”def funextDep {A : Type} {B : A -> Type} {f g : (x : A) -> B x} (h : (x : A) -> f x ≡ g x) : f ≡ gDependent function extensionality: pointwise paths give a path between dependent functions.
funextNondep
Section titled “funextNondep”def funextNondep {A B : Type} {f g : A -> B} (h : (x : A) -> f x ≡ g x) : f ≡ gFunction extensionality: pointwise paths give a path between functions.
happlyV140N
Section titled “happlyV140N”def happlyV140N {A : Type} {B : A -> Type} {f g : (x : A) -> B x} (p : f ≡ g) (x : A) : f x ≡ g xTurns a path between dependent functions into a pointwise path.
funEtaN
Section titled “funEtaN”def funEtaN {A B : Type} (f : A -> B) : f ≡ (fun (x : A) => f x)Eta for functions: a function equals its eta-expansion.
funEtaDepN
Section titled “funEtaDepN”def funEtaDepN {A : Type} {B : A -> Type} (f : (x : A) -> B x) : f ≡ (fun (x : A) => f x)Eta for dependent functions: a function equals its eta-expansion.
funEta2N
Section titled “funEta2N”def funEta2N {A B C : Type} (f : A -> B -> C) : f ≡ (fun (x : A) => fun (y : B) => f x y)Eta for two-argument functions: a function equals its eta-expansion.
funEta3N
Section titled “funEta3N”def funEta3N {A B C D : Type} (f : A -> B -> C -> D) : f ≡ (fun (x : A) => fun (y : B) => fun (z : C) => f x y z)Eta for three-argument functions: a function equals its eta-expansion.
contrToPropN
Section titled “contrToPropN”def contrToPropN {A : Type} (h : isContr A) : isProp AEvery contractible type is a proposition.
contrPathTrivialN
Section titled “contrPathTrivialN”def contrPathTrivialN {A : Type} (h : isContr A) (x y : A) : x ≡ yAny two elements of a contractible type are connected by a path.
transportReflFun
Section titled “transportReflFun”def transportReflFun {A B : Type} (f : A -> B) : transport (fun i => A -> B) f ≡ fTransport of a function along a constant line is the identity, up to a path.
transportReflSigmaPair
Section titled “transportReflSigmaPair”def transportReflSigmaPair {A B : Type} (p : (a : A) × B) : transport (fun i => (a : A) × B) p ≡ pTransport of a pair along a constant line is the identity, up to a path.
transportReflEmpty
Section titled “transportReflEmpty”def transportReflEmpty (e : Empty) : transport (fun i => Empty) e ≡ eTransport along the constant line at Empty is the identity.
reflPolyEq
Section titled “reflPolyEq”def reflPolyEq {A : Type} (a : A) : reflAt a ≡ reflAt aThe refl and lambda forms of the constant path agree.
reflPolyEq2
Section titled “reflPolyEq2”def reflPolyEq2 {A : Type} (a : A) : reflAt a ≡ reflAt aThe lambda and reflAt forms of the constant path agree.
reflPolyEq3
Section titled “reflPolyEq3”def reflPolyEq3 {A : Type} (a : A) : reflAt a ≡ reflAt aThe refl and reflAt forms of the constant path agree.
sigmaPathNondep
Section titled “sigmaPathNondep”def sigmaPathNondep {A B : Type} {p q : (a : A) × B} (fp : fst p ≡ fst q) (sp : snd p ≡ snd q) : p ≡ qBuilds a path between pairs from paths between their components.
sigmaPathReflV140
Section titled “sigmaPathReflV140”def sigmaPathReflV140 {A B : Type} (p : (a : A) × B) : p ≡ pEvery pair is connected to itself by refl.
apNV140
Section titled “apNV140”def apNV140 {A B : Type} {a b : A} (f : A -> B) (p : a ≡ b) : f a ≡ f bApplies a function to a path; an alias of cong.
apNRefl
Section titled “apNRefl”def apNRefl {A B : Type} (f : A -> B) (a : A) : apNV140 f (reflAt a) ≡ reflAt (f a)Applying a function to a constant path gives the constant path at the image.
def apNId {A : Type} {a b : A} (p : a ≡ b) : apNV140 (fun (x : A) => x) p ≡ pApplying the identity function to a path gives back the path.
apNConst
Section titled “apNConst”def apNConst {A B : Type} {a b : A} (c : B) (p : a ≡ b) : apNV140 (fun (_ : A) => c) p ≡ reflAt cApplying a constant function to a path gives the constant path.
fstPairV140
Section titled “fstPairV140”def fstPairV140 {A B : Type} (a : A) (b : B) : fst ((a, b) : (x : A) × B) ≡ aThe first projection of a pair is its first component.
sndPairV140
Section titled “sndPairV140”def sndPairV140 {A B : Type} (a : A) (b : B) : snd ((a, b) : (x : A) × B) ≡ bThe second projection of a pair is its second component.
isPropUnit
Section titled “isPropUnit”def isPropUnit : isProp UnitThe unit type is a proposition: any two elements are equal.