C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
⊢ IsSheafFor P R → IsSheafFor P' R
intro h x hx
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
let x' := x.compPresheafMap i.inv
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
have : x'.Compatible := FamilyOfElements.Compatible.compPresheafMap i.inv hx
case intro.intro
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
obtain ⟨t, ht1, ht2⟩ := h x' this
case intro.intro
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ (fun t => FamilyOfElements.IsAmalgamation x t) (i.hom.app X.op t) ∧
    ∀ (y : P'.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x t) y → y = i.hom.app X.op t
case intro.intro
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ ∃! t, FamilyOfElements.IsAmalgamation x t
use i.hom.app _ t
case intro.intro.left
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ (fun t => FamilyOfElements.IsAmalgamation x t) (i.hom.app X.op t)

case intro.intro.right
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ ∀ (y : P'.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x t) y → y = i.hom.app X.op t
case intro.intro
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ (fun t => FamilyOfElements.IsAmalgamation x t) (i.hom.app X.op t) ∧
    ∀ (y : P'.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x t) y → y = i.hom.app X.op t
fconstructor
case h.e.h.e'_6.h.h.h
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ x = FamilyOfElements.compPresheafMap i.hom x'
case intro.intro.left
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ (fun t => FamilyOfElements.IsAmalgamation x t) (i.hom.app X.op t)
convert FamilyOfElements.IsAmalgamation.compPresheafMap i.hom ht1
no goals
case h.e.h.e'_6.h.h.h
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ x = FamilyOfElements.compPresheafMap i.hom x'
simp
case intro.intro.right
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
y : P'.obj X.op
hy : FamilyOfElements.IsAmalgamation x y
⊢ y = i.hom.app X.op t
case intro.intro.right
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
⊢ ∀ (y : P'.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x t) y → y = i.hom.app X.op t
intro y hy
case intro.intro.right
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
y : P'.obj X.op
hy : FamilyOfElements.IsAmalgamation x y
⊢ (i.inv.app X.op ≫ i.hom.app X.op) y = i.hom.app X.op t
case intro.intro.right
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
y : P'.obj X.op
hy : FamilyOfElements.IsAmalgamation x y
⊢ y = i.hom.app X.op t
rw [show y = (i.inv.app (op X) ≫ i.hom.app (op X)) y by simp]
no goals
case intro.intro.right
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
y : P'.obj X.op
hy : FamilyOfElements.IsAmalgamation x y
⊢ (i.inv.app X.op ≫ i.hom.app X.op) y = i.hom.app X.op t
simp [ht2 (i.inv.app _ y) (FamilyOfElements.IsAmalgamation.compPresheafMap i.inv hy)]
no goals
C : Type u₁
inst✝ : Category C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
J J₂ : GrothendieckTopology C
P' : Cᵒᵖ ⥤ Type w
i : P ≅ P'
h : IsSheafFor P R
x : FamilyOfElements P' R
hx : FamilyOfElements.Compatible x
x' : FamilyOfElements P R := FamilyOfElements.compPresheafMap i.inv x
this : FamilyOfElements.Compatible x'
t : P.obj X.op
ht1 : FamilyOfElements.IsAmalgamation x' t
ht2 : ∀ (y : P.obj X.op), (fun t => FamilyOfElements.IsAmalgamation x' t) y → y = t
y : P'.obj X.op
hy : FamilyOfElements.IsAmalgamation x y
⊢ y = (i.inv.app X.op ≫ i.hom.app X.op) y
simp