In intuitionistic type theory (ITT), a discipline within mathematical logic, induction-induction is for simultaneously declaring some inductive type and some inductive predicate over this type.
An inductive definition is given by rules for generating elements of some type. One can then define some predicate on that type by providing constructors for forming the elements of the predicate, such inductively on the way the elements of the type are generated. Induction-induction generalizes this situation since one can simultaneously define the type and the predicate, because the rules for generating elements of the type
A:Type
B:A\toType
Induction-induction can be used to define larger types including various universe constructions in type theory.[1] and limit constructions in category/topos theory.
Present the type
A
B
aa:A
\ell\ell:\sumxB(x)\toA;
and-simultaneously present the predicate
B
Tru:B(aa)
Fal:B(aa)
x:A
y:B(x)
Zer:B(\ell\ell(x,y))
x:A
y:B(x)
z:B(\ell\ell(x,y))
Suc(z):B(\ell\ell(x,y))
A simple common example is the Universe à la Tarski type former. It creates some inductive type
U:Type
T:U\toType
U
U
T
U
U
T