Spectral/colimit/local_ext.hlean

84 lines
2.6 KiB
Text
Raw Permalink Normal View History

2017-11-22 21:12:30 +00:00
/-
Copyright (c) 2016 Floris van Doorn. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Floris van Doorn, Egbert Rijke
-/
import hit.two_quotient .seq_colim
open eq prod sum two_quotient sigma function relation e_closure nat seq_colim
namespace localization
section quasi_local_extension
universe variables u v w
parameters {A : Type.{u}} {P : A → Type.{v}} {Q : A → Type.{w}} (F : Πa, P a → Q a)
definition is_local [class] (Y : Type) : Type :=
Π(a : A), is_equiv (λg, g ∘ F a : (Q a → Y) → (P a → Y))
section
parameter (X : Type.{max u v w})
local abbreviation Y := X + Σa, (P a → X) × Q a
-- do we want to remove the contractible pairs?
inductive qleR : Y → Y → Type :=
| J : Π{a : A} (f : P a → X) (p : P a), qleR (inr ⟨a, (f, F a p)⟩) (inl (f p))
| k : Π{a : A} (g : Q a → X) (q : Q a), qleR (inl (g q)) (inr ⟨a, (g ∘ F a, q)⟩)
inductive qleQ : Π⦃y₁ y₂ : Y⦄, e_closure qleR y₁ y₂ → e_closure qleR y₁ y₂ → Type :=
| K : Π{a : A} (g : Q a → X) (p : P a), qleQ [qleR.k g (F a p)] [qleR.J (g ∘ F a) p]⁻¹ʳ
definition one_step_localization : Type := two_quotient qleR qleQ
definition incl : X → one_step_localization := incl0 _ _ ∘ inl
end
variables (X : Type.{max u v w}) {Z : Type}
definition n_step_localization : → Type :=
nat.rec X (λn Y, localization.one_step_localization F Y)
definition incln (n : ) :
n_step_localization X n → n_step_localization X (succ n) :=
localization.incl F (n_step_localization X n)
-- localization if P and Q consist of ω-compact types
definition localization : Type := seq_colim (incln X)
definition incll : X → localization X := ι' _ 0
protected definition rec {P : localization X → Type} [Πz, is_local (P z)]
(H : Πx, P (incll X x)) (z : localization X) : P z :=
begin
exact sorry
end
definition extend {Y Z : Type} (f : Y → Z) [is_local Z] (x : one_step_localization Y) : Z :=
begin
induction x,
{ induction a,
{ exact f a},
{ induction a with a v, induction v with f q, exact sorry}},
{ exact sorry},
{ exact sorry}
end
protected definition elim {Y : Type} [is_local Y]
(H : X → Y) (z : localization X) : Y :=
begin
induction z with n x n x,
{ induction n with n IH,
{ exact H x},
induction x,
{ induction a,
{ exact IH a},
{ induction a with a v, induction v with f q, exact sorry}},
{ exact sorry},
exact sorry},
exact sorry
end
end quasi_local_extension
end localization