Spectral/colimit/local_ext.hlean
2017-11-22 16:15:35 -05:00

83 lines
2.6 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/-
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