2015-04-29 00:48:39 +00:00
|
|
|
/-
|
|
|
|
Copyright (c) 2015 Jakob von Raumer. All rights reserved.
|
|
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
Authors: Jakob von Raumer, Floris van Doorn
|
|
|
|
|
|
|
|
Proof of the theorem that (is_trunc n A) is a mere proposition
|
|
|
|
We prove this here to avoid circular dependency of files
|
|
|
|
We want to use this in .equiv; .equiv is imported by .function and .function is imported by .trunc
|
|
|
|
-/
|
|
|
|
|
2015-08-06 21:19:07 +00:00
|
|
|
import types.pi
|
2015-04-29 00:48:39 +00:00
|
|
|
|
|
|
|
open equiv sigma sigma.ops eq function pi
|
|
|
|
|
|
|
|
namespace is_trunc
|
|
|
|
definition is_contr.sigma_char (A : Type) :
|
|
|
|
(Σ (center : A), Π (a : A), center = a) ≃ (is_contr A) :=
|
|
|
|
begin
|
|
|
|
fapply equiv.MK,
|
|
|
|
{ intro S, exact (is_contr.mk S.1 S.2)},
|
2015-04-30 18:00:39 +00:00
|
|
|
{ intro H, cases H with H', cases H' with ce co, exact ⟨ce, co⟩},
|
|
|
|
{ intro H, cases H with H', cases H' with ce co, exact idp},
|
2015-04-29 00:48:39 +00:00
|
|
|
{ intro S, cases S, apply idp}
|
|
|
|
end
|
|
|
|
|
|
|
|
definition is_trunc.pi_char (n : trunc_index) (A : Type) :
|
|
|
|
(Π (x y : A), is_trunc n (x = y)) ≃ (is_trunc (n .+1) A) :=
|
|
|
|
begin
|
|
|
|
fapply equiv.MK,
|
|
|
|
{ intro H, apply is_trunc_succ_intro},
|
2015-04-30 18:00:39 +00:00
|
|
|
{ intro H x y, apply is_trunc_eq},
|
2015-04-29 00:48:39 +00:00
|
|
|
{ intro H, cases H, apply idp},
|
|
|
|
{ intro P, apply eq_of_homotopy, intro a, apply eq_of_homotopy, intro b,
|
2015-07-29 12:17:16 +00:00
|
|
|
change is_trunc.mk (to_internal n (a = b)) = P a b,
|
|
|
|
induction (P a b), apply idp},
|
2015-04-29 00:48:39 +00:00
|
|
|
end
|
|
|
|
|
2017-06-02 16:13:20 +00:00
|
|
|
definition is_prop_is_trunc (n : trunc_index) :
|
2016-02-15 20:18:07 +00:00
|
|
|
Π (A : Type), is_prop (is_trunc n A) :=
|
2015-04-29 00:48:39 +00:00
|
|
|
begin
|
2015-05-19 20:09:10 +00:00
|
|
|
induction n,
|
2015-04-29 00:48:39 +00:00
|
|
|
{ intro A,
|
2018-09-11 14:45:30 +00:00
|
|
|
apply is_trunc_equiv_closed _ !is_contr.sigma_char,
|
2016-02-15 20:18:07 +00:00
|
|
|
apply is_prop.mk, intros,
|
2015-06-04 17:55:02 +00:00
|
|
|
fapply sigma_eq, apply x.2,
|
2018-09-11 14:45:30 +00:00
|
|
|
apply is_prop.elimo },
|
|
|
|
{ intro A, exact is_trunc_equiv_closed _ !is_trunc.pi_char _ },
|
2015-04-29 00:48:39 +00:00
|
|
|
end
|
2017-06-02 16:13:20 +00:00
|
|
|
|
|
|
|
local attribute is_prop_is_trunc [instance]
|
|
|
|
definition is_trunc_succ_is_trunc [instance] (n m : ℕ₋₂) (A : Type) :
|
|
|
|
is_trunc (n.+1) (is_trunc m A) :=
|
2018-09-11 14:45:30 +00:00
|
|
|
is_trunc_succ_of_is_prop _ _ _
|
2017-06-02 16:13:20 +00:00
|
|
|
|
2015-04-29 00:48:39 +00:00
|
|
|
end is_trunc
|