File: HoTT_coq_063.v

package info (click to toggle)
coq 8.20.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 44,116 kB
  • sloc: ml: 234,160; sh: 4,301; python: 3,270; ansic: 2,644; makefile: 882; lisp: 172; javascript: 63; xml: 24; sed: 2
file content (34 lines) | stat: -rw-r--r-- 859 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Set Universe Polymorphism.
Module A.
  Inductive paths A (x : A) : A -> Type := idpath : paths A x x.

  Notation "x = y" := (paths _ x y).

  Inductive IsTrunc : nat -> Type -> Type :=
  | BuildContr : forall A (center : A) (contr : forall y, center = y), IsTrunc 0 A
  | trunc_S : forall A n, (forall x y : A, IsTrunc n (x = y)) -> IsTrunc (S n) A.

  Existing Class IsTrunc.


  #[export] Instance is_trunc_unit : IsTrunc 0 unit.
  Proof. apply BuildContr with (center:=tt). now intros []. Defined.

  Check (_ : IsTrunc 0 unit).
End A.

Module B.
  Fixpoint IsTrunc (n : nat) (A : Type) : Type :=
    match n with
      | O => True
      | S _ => False
    end.

  Existing Class IsTrunc.

  #[export] Instance is_trunc_unit : IsTrunc 0 unit.
  Proof. exact I. Defined.

  Check (_ : IsTrunc 0 unit).
  Fail Definition foo := (_ : IsTrunc 1 unit).
End B.