Universes a b c ω ω'.
Definition Type ω := Type @{ω}.
Definition Type2 : Type ω := Type @{c}.
Definition Type1 : Type2 := Type @{b}.
Definition Type0 : Type1 := Type @{a}.
Set Universe Polymorphism.
Set Printing Universes.
Definition Typei' (n : nat)
:= match n return Type @{ω'} with
| 0 => Type0
| 1 => Type1
| 2 => Type2
| _ => Type ω
end .
Definition TypeOfTypei' {n} (x : Typei' n) : Type @{ω'}
:= match n return Typei' n -> Type @{ω'} with
| 0 | 1 | 2 | _ => fun x => x
end x.
Definition Typei (n : nat) : Typei' (S n)
:= match n return Typei' (S n) with
| 0 => Type0
| 1 => Type1
| _ => Type2
end .
Definition TypeOfTypei {n} (x : TypeOfTypei' (Typei n)) : Type @{ω'}
:= match n return TypeOfTypei' (Typei n) -> Type @{ω'} with
| 0 | 1 | _ => fun x => x
end x.
Check Typei 0 : Typei 1 .
Check Typei 1 : Typei 2 .
Definition lift' {n} : TypeOfTypei' (Typei n) -> TypeOfTypei' (Typei (S n))
:= match n return TypeOfTypei' (Typei n) -> TypeOfTypei' (Typei (S n)) with
| 0 | 1 | 2 | _ => fun x => (x : Type )
end .
Definition lift'' {n} : TypeOfTypei' (Typei n) -> TypeOfTypei' (Typei (S n))
:= match n return TypeOfTypei' (Typei n) -> TypeOfTypei' (Typei (S n)) with
| 0 | 1 | 2 | _ => fun x => x
end . (* The command has indeed failed with message:
In environment
n : nat
x : TypeOfTypei ' ( Typei 0 )
The term " x " has type " TypeOfTypei ' ( Typei 0 ) " while it is expected to have type
" TypeOfTypei ' ( Typei 1 ) " ( universe inconsistency : Cannot enforce b = a because a < b ) .
*)
Check (fun x : TypeOfTypei' (Typei 0 ) => TypeOfTypei' (Typei 1 )).
Definition lift''' {n} : TypeOfTypei' (Typei n) -> TypeOfTypei' (Typei (S n)).
refine match n return TypeOfTypei' (Typei n) -> TypeOfTypei' (Typei (S n)) with
| 0 | 1 | 2 | _ => fun x => _
end .
exact x.
Undo.
(* The command has indeed failed with message:
In environment
n : nat
x : TypeOfTypei ' ( Typei 0 )
The term " x " has type " TypeOfTypei ' ( Typei 0 ) " while it is expected to have type
" TypeOfTypei ' ( Typei 1 ) " ( universe inconsistency : Cannot enforce b = a because a < b ) .
*)
all :compute in *.
all :exact x.
Abort .
Messung V0.5 in Prozent C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland