2014-12-17 21:36:41 +00:00
|
|
|
-- Copyright (c) 2014 Jakob von Raumer. All rights reserved.
|
|
|
|
-- Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
-- Authors: Jakob von Raumer
|
|
|
|
|
2015-02-21 00:30:32 +00:00
|
|
|
open is_trunc
|
2014-12-17 21:36:41 +00:00
|
|
|
|
|
|
|
-- Axiomatize the truncation operator as long as we do not have
|
|
|
|
-- Higher inductive types
|
|
|
|
|
|
|
|
axiom truncate (A : Type) (n : trunc_index) : Type
|
|
|
|
|
|
|
|
axiom truncate.mk {A : Type} (n : trunc_index) (a : A) : truncate A n
|
|
|
|
|
|
|
|
axiom truncate.is_trunc (A : Type) (n : trunc_index) : is_trunc n (truncate A n)
|
|
|
|
|
|
|
|
axiom truncate.rec_on {A : Type} {n : trunc_index} {C : truncate A n → Type}
|
|
|
|
(ta : truncate A n)
|
|
|
|
[H : Π (ta : truncate A n), is_trunc n (C ta)]
|
|
|
|
(CC : Π (a : A), C (truncate.mk n a)) : C ta
|