sigma
sigmaEtaNonDep
Section titled “sigmaEtaNonDep”def sigmaEtaNonDep {A B : Type} (p : A × B) : (fst p, snd p) ≡ pEta for non-dependent pairs: rebuilding a pair from its projections gives the same pair.
fstBeta
Section titled “fstBeta”def fstBeta {A : Type} {B : A -> Type} (a : A) (b : B a) : fst (a, b) ≡ aBeta for the first projection: fst (a, b) is a.
sndBeta
Section titled “sndBeta”def sndBeta {A : Type} {B : A -> Type} (a : A) (b : B a) : snd (a, b) ≡ bBeta for the second projection: snd (a, b) is b.
mkPair
Section titled “mkPair”def mkPair {A : Type} {B : A -> Type} (a : A) (b : B a) : (a : A) × B aBuilds a dependent pair from a base point and an element of its fiber.
mkPairNonDep
Section titled “mkPairNonDep”def mkPairNonDep {A B : Type} (a : A) (b : B) : A × BBuilds a non-dependent pair from two values.
sigmaPathNonDep
Section titled “sigmaPathNonDep”def sigmaPathNonDep {A B : Type} {x : A × B} {y : A × B} (p : fst x ≡ fst y) (q : snd x ≡ snd y) : x ≡ yA path in A × B built from a path between the first components and a path between the second components.
fstPathSigma
Section titled “fstPathSigma”def fstPathSigma {A : Type} {B : A -> Type} {x : (a : A) × B a} {y : (a : A) × B a} (p : x ≡ y) : fst x ≡ fst yThe base path of a path in a dependent sum, obtained by projecting the first component.
fstPathNonDep
Section titled “fstPathNonDep”def fstPathNonDep {A B : Type} {x : A × B} {y : A × B} (p : x ≡ y) : fst x ≡ fst yThe path between first components obtained from a path in A × B.
sndPathNonDep
Section titled “sndPathNonDep”def sndPathNonDep {A B : Type} {x : A × B} {y : A × B} (p : x ≡ y) : snd x ≡ snd yThe path between second components obtained from a path in A × B.
sigmaMap
Section titled “sigmaMap”def sigmaMap {A : Type} {A2 : Type} {B : A -> Type} {B2 : A2 -> Type} (f : A -> A2) (g : (a : A) -> B a -> B2 (f a)) (p : (a : A) × B a) : (a : A2) × B2 aMaps a dependent pair along a base function and a fiberwise function over it.
sigmaMapFstNonDep
Section titled “sigmaMapFstNonDep”def sigmaMapFstNonDep {A A2 B : Type} (f : A -> A2) (p : A × B) : A2 × BApplies a function to the first component of a non-dependent pair.
sigmaMapNonDepComp
Section titled “sigmaMapNonDepComp”def sigmaMapNonDepComp {A B C D E F : Type} (f1 : A -> C) (f2 : C -> E) (g1 : B -> D) (g2 : D -> F) (p : A × B) : (f2 (f1 (fst p)), g2 (g1 (snd p))) ≡ (f2 (f1 (fst p)), g2 (g1 (snd p)))Reflexivity at the pair obtained by applying two composed functions componentwise (a trivial statement).
congPairNonDep
Section titled “congPairNonDep”def congPairNonDep {A B : Type} {a1 a2 : A} (p : a1 ≡ a2) {b1 b2 : B} (q : b1 ≡ b2) : (a1, b1) ≡ (a2, b2)Paths between the components give a path between the pairs.
fiberMk
Section titled “fiberMk”def fiberMk {A B : Type} (f : A -> B) (b : B) (a : A) (p : f a ≡ b) : fiber A B f bBuilds an element of the fiber of f over b from a point and a path f a = b.
fiberPoint
Section titled “fiberPoint”def fiberPoint {A B : Type} {f : A -> B} {b : B} (fib : fiber A B f b) : AThe point of an element of a fiber.
fiberPath
Section titled “fiberPath”def fiberPath {A B : Type} {f : A -> B} {b : B} (fib : fiber A B f b) : f (fst fib) ≡ bThe path f a = b carried by an element of a fiber.
fiberAtPoint
Section titled “fiberAtPoint”def fiberAtPoint {A B : Type} (f : A -> B) (a : A) : fiber A B f (f a)Every point a lies in the fiber of f over f a, via the constant path.
fiberMapId
Section titled “fiberMapId”def fiberMapId {A B : Type} (f : A -> B) (b : B) (fib : fiber A B f b) : fiber A B f bThe identity map on a fiber.
transportSigmaProdConst
Section titled “transportSigmaProdConst”def transportSigmaProdConst {A B : Type} (p : A × B) : transport (fun i => A × B) p ≡ pTransport along the constant family at A × B is the identity.
transportSndConst
Section titled “transportSndConst”def transportSndConst {A B : Type} (p : A × B) : snd (transport (fun i => A × B) p) ≡ snd pTransport along the constant family at A × B leaves the second component unchanged.
isPropProd2
Section titled “isPropProd2”def isPropProd2 {A B : Type} (hA : isProp A) (hB : isProp B) : isProp (A × B)The product of two propositions is a proposition.
isPropSigmaUnit
Section titled “isPropSigmaUnit”def isPropSigmaUnit {A : Type} (hA : isProp A) : isProp (A × Unit)A × Unit is a proposition when A is.
sigmaAssocFwd
Section titled “sigmaAssocFwd”def sigmaAssocFwd {A B C : Type} (p : (A × B) × C) : A × (B × C)Reassociates a left-nested triple (A × B) × C into the right-nested A × (B × C).
sigmaAssocBwd
Section titled “sigmaAssocBwd”def sigmaAssocBwd {A B C : Type} (p : A × (B × C)) : (A × B) × CReassociates a right-nested triple A × (B × C) into the left-nested (A × B) × C.
sigmaAssocFwdBwd
Section titled “sigmaAssocFwdBwd”def sigmaAssocFwdBwd {A B C : Type} (p : A × (B × C)) : sigmaAssocBwd (sigmaAssocFwd (sigmaAssocBwd p)) ≡ sigmaAssocBwd pReassociating forward and back after sigmaAssocBwd returns the same left-nested triple.
sigmaAssocBwdFwd
Section titled “sigmaAssocBwdFwd”def sigmaAssocBwdFwd {A B C : Type} (p : (A × B) × C) : sigmaAssocFwd (sigmaAssocBwd (sigmaAssocFwd p)) ≡ sigmaAssocFwd pReassociating back and forward after sigmaAssocFwd returns the same right-nested triple.
sigmaAssocRoundtrip1
Section titled “sigmaAssocRoundtrip1”theorem sigmaAssocRoundtrip1 {A B C : Type} (p : A × (B × C)) : sigmaAssocFwd (sigmaAssocBwd p) ≡ psigmaAssocFwd after sigmaAssocBwd is the identity on right-nested triples.
sigmaAssocRoundtrip2
Section titled “sigmaAssocRoundtrip2”theorem sigmaAssocRoundtrip2 {A B C : Type} (p : (A × B) × C) : sigmaAssocBwd (sigmaAssocFwd p) ≡ psigmaAssocBwd after sigmaAssocFwd is the identity on left-nested triples.
sigmaAssocFwdCompute
Section titled “sigmaAssocFwdCompute”theorem sigmaAssocFwdCompute {A B C : Type} (a : A) (b : B) (c : C) : sigmaAssocFwd ((a, b), c) ≡ (a, (b, c))sigmaAssocFwd ((a, b), c) computes to (a, (b, c)).
sigmaAssocBwdCompute
Section titled “sigmaAssocBwdCompute”theorem sigmaAssocBwdCompute {A B C : Type} (a : A) (b : B) (c : C) : sigmaAssocBwd (a, (b, c)) ≡ ((a, b), c)sigmaAssocBwd (a, (b, c)) computes to ((a, b), c).
sigmaAssocDep3Fwd
Section titled “sigmaAssocDep3Fwd”def sigmaAssocDep3Fwd {A B C D : Type} (t : (A × B) × (C × D)) : A × (B × (C × D))Reassociates a pair of pairs (A × B) × (C × D) into the right-nested A × (B × (C × D)).
sigmaAssocDep3Bwd
Section titled “sigmaAssocDep3Bwd”def sigmaAssocDep3Bwd {A B C D : Type} (t : A × (B × (C × D))) : (A × B) × (C × D)Reassociates a right-nested quadruple A × (B × (C × D)) into the pair of pairs (A × B) × (C × D).
sigmaAssocDep3Roundtrip1
Section titled “sigmaAssocDep3Roundtrip1”theorem sigmaAssocDep3Roundtrip1 {A B C D : Type} (t : A × (B × (C × D))) : sigmaAssocDep3Fwd (sigmaAssocDep3Bwd t) ≡ tsigmaAssocDep3Fwd after sigmaAssocDep3Bwd is the identity on right-nested quadruples.
sigmaAssocDep3Roundtrip2
Section titled “sigmaAssocDep3Roundtrip2”theorem sigmaAssocDep3Roundtrip2 {A B C D : Type} (t : (A × B) × (C × D)) : sigmaAssocDep3Bwd (sigmaAssocDep3Fwd t) ≡ tsigmaAssocDep3Bwd after sigmaAssocDep3Fwd is the identity on pairs of pairs.
sigmaSwap
Section titled “sigmaSwap”def sigmaSwap {A B : Type} (p : A × B) : B × ASwaps the two components of a pair.
sigmaSwapSwap
Section titled “sigmaSwapSwap”theorem sigmaSwapSwap {A B : Type} (p : A × B) : sigmaSwap (sigmaSwap p) ≡ pSwapping a pair twice gives back the original pair.
sigmaSwapCompute
Section titled “sigmaSwapCompute”theorem sigmaSwapCompute {A B : Type} (a : A) (b : B) : sigmaSwap (a, b) ≡ (b, a)sigmaSwap (a, b) computes to (b, a).
sigmaSwapFst
Section titled “sigmaSwapFst”theorem sigmaSwapFst {A B : Type} (p : A × B) : fst (sigmaSwap p) ≡ snd pThe first component of a swapped pair is the original second component.
sigmaSwapSnd
Section titled “sigmaSwapSnd”theorem sigmaSwapSnd {A B : Type} (p : A × B) : snd (sigmaSwap p) ≡ fst pThe second component of a swapped pair is the original first component.
sigmaSwapPath
Section titled “sigmaSwapPath”def sigmaSwapPath {A B : Type} {x y : A × B} (p : x ≡ y) : sigmaSwap x ≡ sigmaSwap ySwapping is functorial on paths: a path between pairs gives a path between the swapped pairs.
sigmaUnitFwd
Section titled “sigmaUnitFwd”def sigmaUnitFwd {A : Type} (p : A × Unit) : AForward map of A × Unit ≅ A: drops the unit component.
sigmaUnitBwd
Section titled “sigmaUnitBwd”def sigmaUnitBwd {A : Type} (a : A) : A × UnitBackward map of A × Unit ≅ A: pairs a value with unit.
sigmaUnitRoundtrip1
Section titled “sigmaUnitRoundtrip1”theorem sigmaUnitRoundtrip1 {A : Type} (a : A) : sigmaUnitFwd (sigmaUnitBwd a) ≡ aPairing with unit and dropping it again gives back the value.
sigmaUnitRoundtrip2
Section titled “sigmaUnitRoundtrip2”def sigmaUnitRoundtrip2 {A : Type} (p : A × Unit) : sigmaUnitBwd (sigmaUnitFwd p) ≡ pDropping the unit component and pairing it back gives the original pair.
unitSigmaFwd
Section titled “unitSigmaFwd”def unitSigmaFwd {A : Type} (p : Unit × A) : AForward map of Unit × A ≅ A: drops the unit component.
unitSigmaBwd
Section titled “unitSigmaBwd”def unitSigmaBwd {A : Type} (a : A) : Unit × ABackward map of Unit × A ≅ A: pairs unit with a value.
unitSigmaRoundtrip1
Section titled “unitSigmaRoundtrip1”theorem unitSigmaRoundtrip1 {A : Type} (a : A) : unitSigmaFwd (unitSigmaBwd a) ≡ aPairing with unit on the left and dropping it again gives back the value.
unitSigmaRoundtrip2
Section titled “unitSigmaRoundtrip2”def unitSigmaRoundtrip2 {A : Type} (p : Unit × A) : unitSigmaBwd (unitSigmaFwd p) ≡ pDropping the unit component and pairing it back gives the original pair.
sigmaContrBaseFwd
Section titled “sigmaContrBaseFwd”def sigmaContrBaseFwd {A : Type} {B : A -> Type} (hA : isContr A) (p : (a : A) × B a) : B (fst hA)Over a contractible base, transports the fiber element of a dependent pair to the fiber at the center.
sigmaContrBaseBwd
Section titled “sigmaContrBaseBwd”def sigmaContrBaseBwd {A : Type} {B : A -> Type} (hA : isContr A) (b : B (fst hA)) : (a : A) × B aOver a contractible base, puts an element of the fiber at the center into the dependent sum.
sigmaContrBaseBwdFst
Section titled “sigmaContrBaseBwdFst”def sigmaContrBaseBwdFst {A : Type} {B : A -> Type} (hA : isContr A) (b : B (fst hA)) : fst (sigmaContrBaseBwd hA b) ≡ fst hAThe base point of an element built by sigmaContrBaseBwd is the center.
sigmaContrFiberFwd
Section titled “sigmaContrFiberFwd”def sigmaContrFiberFwd {A : Type} {B : A -> Type} (hB : (a : A) -> isContr (B a)) (p : (a : A) × B a) : AWith contractible fibers, projects a dependent pair to its base point.
sigmaContrFiberBwd
Section titled “sigmaContrFiberBwd”def sigmaContrFiberBwd {A : Type} {B : A -> Type} (hB : (a : A) -> isContr (B a)) (a : A) : (a : A) × B aWith contractible fibers, lifts a base point into the dependent sum using the center of its fiber.
sigmaContrFiberRoundtrip1
Section titled “sigmaContrFiberRoundtrip1”def sigmaContrFiberRoundtrip1 {A : Type} {B : A -> Type} (hB : (a : A) -> isContr (B a)) (a : A) : sigmaContrFiberFwd hB (sigmaContrFiberBwd hB a) ≡ aLifting a base point with sigmaContrFiberBwd and projecting it back gives the same point.
singlContrR
Section titled “singlContrR”def singlContrR {A : Type} (x : A) : isContr ((y : A) × (x ≡ y))The singleton type of points y with a path x = y is contractible.
singlContrL
Section titled “singlContrL”def singlContrL {A : Type} (x : A) : isContr ((y : A) × (y ≡ x))The singleton type of points y with a path y = x is contractible.
singlCenter
Section titled “singlCenter”def singlCenter {A : Type} (x : A) : (y : A) × (x ≡ y)The center of the singleton type at x: x with the constant path.
singlCenterFst
Section titled “singlCenterFst”def singlCenterFst {A : Type} (x : A) : fst (singlCenter x) ≡ xThe point of the singleton center at x is x.
sigmaBimap
Section titled “sigmaBimap”def sigmaBimap {A B C D : Type} (f : A -> C) (g : B -> D) (p : A × B) : C × DApplies one function to each component of a pair.
sigmaBimapComp
Section titled “sigmaBimapComp”theorem sigmaBimapComp {A B C D E F : Type} (f1 : A -> C) (f2 : C -> E) (g1 : B -> D) (g2 : D -> F) (p : A × B) : sigmaBimap f2 g2 (sigmaBimap f1 g1 p) ≡ sigmaBimap (fun (a : A) => f2 (f1 a)) (fun (b : B) => g2 (g1 b)) pApplying sigmaBimap twice equals applying it once with the composed functions.
sigmaBimapCompute
Section titled “sigmaBimapCompute”theorem sigmaBimapCompute {A B C D : Type} (f : A -> C) (g : B -> D) (a : A) (b : B) : sigmaBimap f g (a, b) ≡ (f a, g b)sigmaBimap f g (a, b) computes to (f a, g b).
sigmaFirst
Section titled “sigmaFirst”def sigmaFirst {A B C : Type} (f : A -> C) (p : A × B) : C × BApplies a function to the first component of a pair, keeping the second.
sigmaSecond
Section titled “sigmaSecond”def sigmaSecond {A B D : Type} (g : B -> D) (p : A × B) : A × DApplies a function to the second component of a pair, keeping the first.
sigmaFirstCompute
Section titled “sigmaFirstCompute”theorem sigmaFirstCompute {A B C : Type} (f : A -> C) (a : A) (b : B) : sigmaFirst f (a, b) ≡ (f a, b)sigmaFirst f (a, b) computes to (f a, b).
sigmaSecondCompute
Section titled “sigmaSecondCompute”theorem sigmaSecondCompute {A B D : Type} (g : B -> D) (a : A) (b : B) : sigmaSecond g (a, b) ≡ (a, g b)sigmaSecond g (a, b) computes to (a, g b).
sigmaDiag
Section titled “sigmaDiag”def sigmaDiag {A : Type} (a : A) : A × ADiagonal map: duplicates a value into a pair.
sigmaDiagFst
Section titled “sigmaDiagFst”theorem sigmaDiagFst {A : Type} (a : A) : fst (sigmaDiag a) ≡ aThe first component of the diagonal pair is the original value.
sigmaDiagSnd
Section titled “sigmaDiagSnd”theorem sigmaDiagSnd {A : Type} (a : A) : snd (sigmaDiag a) ≡ aThe second component of the diagonal pair is the original value.
sigmaDiagCompute
Section titled “sigmaDiagCompute”theorem sigmaDiagCompute {A : Type} (a : A) : sigmaDiag a ≡ (a, a)sigmaDiag a computes to (a, a).
sigmaFanout
Section titled “sigmaFanout”def sigmaFanout {A B C : Type} (f : A -> B) (g : A -> C) (a : A) : B × CApplies two functions to the same input and pairs the results.
sigmaFanoutFst
Section titled “sigmaFanoutFst”theorem sigmaFanoutFst {A B C : Type} (f : A -> B) (g : A -> C) (a : A) : fst (sigmaFanout f g a) ≡ f aThe first component of sigmaFanout f g a is f a.
sigmaFanoutSnd
Section titled “sigmaFanoutSnd”theorem sigmaFanoutSnd {A B C : Type} (f : A -> B) (g : A -> C) (a : A) : snd (sigmaFanout f g a) ≡ g aThe second component of sigmaFanout f g a is g a.
sigmaFanoutCompute
Section titled “sigmaFanoutCompute”theorem sigmaFanoutCompute {A B C : Type} (f : A -> B) (g : A -> C) (a : A) : sigmaFanout f g a ≡ (f a, g a)sigmaFanout f g a computes to (f a, g a).
sigmaCurry
Section titled “sigmaCurry”def sigmaCurry {A : Type} {B : A -> Type} {C : Type} (f : ((a : A) × B a) -> C) (a : A) (b : B a) : CCurries a function on dependent pairs into a two-argument dependent function.
sigmaUncurry
Section titled “sigmaUncurry”def sigmaUncurry {A : Type} {B : A -> Type} {C : Type} (f : (a : A) -> B a -> C) (p : (a : A) × B a) : CUncurries a two-argument dependent function into a function on dependent pairs.
sigmaCurryUncurry
Section titled “sigmaCurryUncurry”theorem sigmaCurryUncurry {A : Type} {B : A -> Type} {C : Type} (f : (a : A) -> B a -> C) (a : A) (b : B a) : sigmaCurry (sigmaUncurry f) a b ≡ f a bCurrying an uncurried function gives back the original function pointwise.
sigmaUncurryCurry
Section titled “sigmaUncurryCurry”theorem sigmaUncurryCurry {A : Type} {B : A -> Type} {C : Type} (f : ((a : A) × B a) -> C) (a : A) (b : B a) : sigmaUncurry (sigmaCurry f) (a, b) ≡ f (a, b)Uncurrying a curried function gives back the original function on every pair.
sigmaApply
Section titled “sigmaApply”def sigmaApply {A B C D : Type} (fg : (A -> C) × (B -> D)) (p : A × B) : C × DApplies a pair of functions componentwise to a pair of arguments.
sigmaApplyCompute
Section titled “sigmaApplyCompute”theorem sigmaApplyCompute {A B C D : Type} (f : A -> C) (g : B -> D) (a : A) (b : B) : sigmaApply (f, g) (a, b) ≡ (f a, g b)sigmaApply (f, g) (a, b) computes to (f a, g b).
sigmaDup
Section titled “sigmaDup”def sigmaDup {A B : Type} (f : A -> B) (p : A × A) : B × BApplies one function to both components of a homogeneous pair.
sigmaDupCompute
Section titled “sigmaDupCompute”theorem sigmaDupCompute {A B : Type} (f : A -> B) (a1 : A) (a2 : A) : sigmaDup f (a1, a2) ≡ (f a1, f a2)sigmaDup f (a1, a2) computes to (f a1, f a2).
exists_intro
Section titled “exists_intro”def exists_intro {A : Type} {P : A -> Type} (a : A) (pa : P a) : (a : A) × P aIntroduces an existential from a witness and a proof that it satisfies the predicate.
exists_witness
Section titled “exists_witness”def exists_witness {A : Type} {P : A -> Type} (h : (a : A) × P a) : AThe witness of an existential.
exists_proof
Section titled “exists_proof”def exists_proof {A : Type} {P : A -> Type} (h : (a : A) × P a) : P (fst h)The proof that the witness of an existential satisfies the predicate.
exists_elim
Section titled “exists_elim”def exists_elim {A : Type} {P : A -> Type} {C : Type} (h : (a : A) × P a) (f : (a : A) -> P a -> C) : CEliminates an existential by a function that works for every witness and proof.
exists_map
Section titled “exists_map”def exists_map {A : Type} {P : A -> Type} {Q : A -> Type} (f : (a : A) -> P a -> Q a) (h : (a : A) × P a) : (a : A) × Q aMaps an existential along a fiberwise implication between predicates, keeping the witness.
existsMapCompute
Section titled “existsMapCompute”theorem existsMapCompute {A : Type} {P : A -> Type} {Q : A -> Type} (f : (a : A) -> P a -> Q a) (a : A) (pa : P a) : exists_map f (a, pa) ≡ (a, f a pa)exists_map f (a, pa) computes to (a, f a pa).
sigmaBoolInjectTrue
Section titled “sigmaBoolInjectTrue”def sigmaBoolInjectTrue {P : Bool -> Type} (pt : P true) : (b : Bool) × P bPuts an element of the fiber at true into the dependent sum over Bool.
sigmaBoolInjectFalse
Section titled “sigmaBoolInjectFalse”def sigmaBoolInjectFalse {P : Bool -> Type} (pf : P false) : (b : Bool) × P bPuts an element of the fiber at false into the dependent sum over Bool.
sigmaBoolInjectTrueFst
Section titled “sigmaBoolInjectTrueFst”theorem sigmaBoolInjectTrueFst {P : Bool -> Type} (pt : P true) : fst (sigmaBoolInjectTrue pt) ≡ trueThe base point of sigmaBoolInjectTrue is true.
sigmaBoolInjectFalseFst
Section titled “sigmaBoolInjectFalseFst”theorem sigmaBoolInjectFalseFst {P : Bool -> Type} (pf : P false) : fst (sigmaBoolInjectFalse pf) ≡ falseThe base point of sigmaBoolInjectFalse is false.
sigmaNatZero
Section titled “sigmaNatZero”def sigmaNatZero {P : Nat -> Type} (p0 : P zero) : (n : Nat) × P nPuts an element of the fiber at zero into the dependent sum over Nat.
sigmaNatSucc
Section titled “sigmaNatSucc”def sigmaNatSucc {P : Nat -> Type} (n : Nat) (ps : P (succ n)) : (k : Nat) × P kPuts an element of the fiber at succ n into the dependent sum over Nat.
sigmaNatZeroFst
Section titled “sigmaNatZeroFst”theorem sigmaNatZeroFst {P : Nat -> Type} (p0 : P zero) : fst (sigmaNatZero p0) ≡ zeroThe base point of sigmaNatZero is zero.
sigmaNatSuccFst
Section titled “sigmaNatSuccFst”theorem sigmaNatSuccFst {P : Nat -> Type} (n : Nat) (ps : P (succ n)) : fst (sigmaNatSucc n ps) ≡ succ nThe base point of sigmaNatSucc n is succ n.
sigmaFlip
Section titled “sigmaFlip”def sigmaFlip {A B C : Type} (f : A × B -> C) (p : B × A) : CTurns a function on A × B into a function on B × A by swapping the input.
sigmaFlipFlip
Section titled “sigmaFlipFlip”theorem sigmaFlipFlip {A B C : Type} (f : A × B -> C) (a : A) (b : B) : sigmaFlip (sigmaFlip f) (a, b) ≡ f (a, b)Flipping a function on pairs twice gives back the original function on every pair.
sigmaDistrib
Section titled “sigmaDistrib”def sigmaDistrib {A B C : Type} (p : A × Either B C) : Either (A × B) (A × C)Distributes a product over a sum: A × (B + C) to (A × B) + (A × C).
sigmaUndistrib
Section titled “sigmaUndistrib”def sigmaUndistrib {A B C : Type} (e : Either (A × B) (A × C)) : A × Either B CFactors a sum of products: (A × B) + (A × C) to A × (B + C).
sigmaDistribRet
Section titled “sigmaDistribRet”def sigmaDistribRet {A B C : Type} (e : Either (A × B) (A × C)) : sigmaDistrib (sigmaUndistrib e) ≡ eDistributing after factoring gives back the original sum, so sigmaUndistrib is a section of sigmaDistrib.
sigmaTriple
Section titled “sigmaTriple”def sigmaTriple {A B C : Type} (a : A) (b : B) (c : C) : A × (B × C)Builds a right-nested triple from three values.
sigmaQuad
Section titled “sigmaQuad”def sigmaQuad {A B C D : Type} (a : A) (b : B) (c : C) (d : D) : A × (B × (C × D))Builds a right-nested quadruple from four values.
sigmaTripleFst
Section titled “sigmaTripleFst”theorem sigmaTripleFst {A B C : Type} (a : A) (b : B) (c : C) : fst (sigmaTriple a b c) ≡ aThe first component of sigmaTriple a b c is a.
isPropSigmaConst
Section titled “isPropSigmaConst”def isPropSigmaConst {A B : Type} (hA : isProp A) (hB : isProp B) : isProp (A × B)The product of two propositions is a proposition.
isSetSigmaNonDep2
Section titled “isSetSigmaNonDep2”def isSetSigmaNonDep2 (A B : Type) (hA : isSet A) (hB : isSet B) : isSet (A × B)The product of two sets is a set.
sigmaConstProj1
Section titled “sigmaConstProj1”def sigmaConstProj1 {A B : Type} (a : A) (b : B) : fst (a, b) ≡ aThe first projection of a non-dependent pair (a, b) is a.
sigmaConstProj2
Section titled “sigmaConstProj2”def sigmaConstProj2 {A B : Type} (a : A) (b : B) : snd (a, b) ≡ bThe second projection of a non-dependent pair (a, b) is b.
sigmaIdFwd
Section titled “sigmaIdFwd”def sigmaIdFwd {A : Type} {b : A} (p : (a : A) × (a ≡ b)) : AProjects an element of the based path space at b to its point.
sigmaIdBwd
Section titled “sigmaIdBwd”def sigmaIdBwd {A : Type} (a : A) : (x : A) × (x ≡ a)Puts a into the based path space at a, using the constant path.
sigmaOfPi_to_piOfSigma
Section titled “sigmaOfPi_to_piOfSigma”def sigmaOfPi_to_piOfSigma {A : Type} {B : Type} {C : A -> B -> Type} (p : (a : A) × ((x : B) -> C a x)) : (x : B) -> (a : A) × C a xTurns a pair of a point and a function into a function returning pairs with that fixed point.
congSigmaPath
Section titled “congSigmaPath”def congSigmaPath {A B : Type} {x y z : A × B} (p : x ≡ y) (q : y ≡ z) : sigmaPathNonDep (fun i => fst (trans p q i)) (fun i => snd (trans p q i)) ≡ trans p qRebuilding a composite path in A × B from its component paths gives back the composite.
theorem etaMk {A : Type} {B : A -> Type} (a : A) (b : B a) : (fst (a, b), snd (a, b)) ≡ (a, b)Eta after beta: rebuilding (a, b) from its projections gives (a, b).
fstSigmaMapSnd
Section titled “fstSigmaMapSnd”theorem fstSigmaMapSnd {A : Type} {B : A -> Type} {C : A -> Type} (f : (a : A) -> B a -> C a) (a : A) (b : B a) : fst (sigmaMapSnd f (a, b)) ≡ asigmaMapSnd keeps the base point.
sndSigmaMapSnd
Section titled “sndSigmaMapSnd”theorem sndSigmaMapSnd {A : Type} {B : A -> Type} {C : A -> Type} (f : (a : A) -> B a -> C a) (a : A) (b : B a) : snd (sigmaMapSnd f (a, b)) ≡ f a bThe second component of sigmaMapSnd f (a, b) is f a b.
sigmaEmpty
Section titled “sigmaEmpty”def sigmaEmpty {B : Empty -> Type} (p : (a : Empty) × B a) : EmptyA dependent sum over Empty is empty.
sigmaEmptyFiber
Section titled “sigmaEmptyFiber”def sigmaEmptyFiber {A : Type} (p : A × Empty) : EmptyA × Empty is empty.
boolNatPair
Section titled “boolNatPair”def boolNatPair : Bool × NatExample pair of a boolean and a natural number, (true, 2).
sigmaPathNested
Section titled “sigmaPathNested”def sigmaPathNested {A B C : Type} {x : A × (B × C)} {y : A × (B × C)} (p1 : fst x ≡ fst y) (p2 : fst (snd x) ≡ fst (snd y)) (p3 : snd (snd x) ≡ snd (snd y)) : x ≡ yA path in a right-nested triple built from paths between the three components.
fstPathNested
Section titled “fstPathNested”def fstPathNested {A B C : Type} {x : A × (B × C)} {y : A × (B × C)} (p : x ≡ y) : fst x ≡ fst yThe path between first components obtained from a path in a right-nested triple.
sndFstPathNested
Section titled “sndFstPathNested”def sndFstPathNested {A B C : Type} {x : A × (B × C)} {y : A × (B × C)} (p : x ≡ y) : fst (snd x) ≡ fst (snd y)The path between second components obtained from a path in a right-nested triple.
sndSndPathNested
Section titled “sndSndPathNested”def sndSndPathNested {A B C : Type} {x : A × (B × C)} {y : A × (B × C)} (p : x ≡ y) : snd (snd x) ≡ snd (snd y)The path between third components obtained from a path in a right-nested triple.
isPropSinglR
Section titled “isPropSinglR”def isPropSinglR {A : Type} (x : A) : isProp ((y : A) × (x ≡ y))The singleton type of points y with a path x = y is a proposition.
isPropSinglL
Section titled “isPropSinglL”def isPropSinglL {A : Type} (x : A) : isProp ((y : A) × (y ≡ x))The singleton type of points y with a path y = x is a proposition.
sigmaStrengthL
Section titled “sigmaStrengthL”def sigmaStrengthL {A B : Type} (a : A) (b : B) : A × BPairs a value with another, the first argument becoming the first component.
sigmaStrengthR
Section titled “sigmaStrengthR”def sigmaStrengthR {A B : Type} (b : B) (a : A) : A × BPairs two values with the arguments reversed: the second argument becomes the first component.
sigmaStrengthLFst
Section titled “sigmaStrengthLFst”theorem sigmaStrengthLFst {A B : Type} (a : A) (b : B) : fst (sigmaStrengthL a b) ≡ aThe first component of sigmaStrengthL a b is a.
sigmaStrengthLSnd
Section titled “sigmaStrengthLSnd”theorem sigmaStrengthLSnd {A B : Type} (a : A) (b : B) : snd (sigmaStrengthL a b) ≡ bThe second component of sigmaStrengthL a b is b.
natTriple1
Section titled “natTriple1”def natTriple1 : Nat × (Nat × Nat)Example right-nested triple of natural numbers, (0, (1, 2)).