Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Almost the structure sheaf property #920

Merged
merged 38 commits into from
Sep 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
7d4cdfa
use improved ringsolver
mzeuner Aug 23, 2021
e4d5d8d
delete one more line
mzeuner Aug 23, 2021
302c25a
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Aug 26, 2021
5fe247f
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Nov 2, 2021
3f2e7f8
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Nov 22, 2021
c29f845
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Dec 9, 2021
d83b855
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Dec 15, 2021
63c770b
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Dec 16, 2021
2ed6538
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Dec 17, 2021
c35bc4d
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Jan 4, 2022
808e042
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Jan 7, 2022
18d797c
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Jan 10, 2022
591c1b7
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Jan 25, 2022
0e1bd40
Merge branch 'master' of https://github.com/agda/cubical
mzeuner Jan 27, 2022
0b8f3c0
Merge branch 'master' of github.com:agda/cubical
mzeuner Mar 14, 2022
4a91d86
Merge branch 'master' of github.com:agda/cubical
mzeuner Apr 6, 2022
30cfe2f
Merge branch 'master' of github.com:mzeuner/cubical
mzeuner Apr 6, 2022
4e7f178
Merge branch 'master' of github.com:agda/cubical
mzeuner May 12, 2022
3e07b19
Merge branch 'master' of github.com:agda/cubical
mzeuner Aug 9, 2022
d5135d5
Merge branch 'master' of github.com:agda/cubical
mzeuner Aug 11, 2022
1014c10
Merge branch 'master' of github.com:mzeuner/cubical
mzeuner Aug 11, 2022
23dcdfc
start with generalized lemma
mzeuner Aug 11, 2022
5db5ad3
finish first lemma
mzeuner Aug 12, 2022
c37ee8d
big max operation
mzeuner Aug 15, 2022
d8483e9
get started with first real Lemma
mzeuner Aug 16, 2022
521c455
injectivity lemma
mzeuner Aug 17, 2022
12ee76f
set up file
mzeuner Aug 21, 2022
c4e0aaf
a bit stuck here
mzeuner Aug 25, 2022
7a26a7b
help
mzeuner Aug 25, 2022
e7d1492
little lemma
mzeuner Aug 26, 2022
3277bd2
split up lemma
mzeuner Aug 29, 2022
1566376
get the mean part done
mzeuner Aug 30, 2022
2af9552
strange
mzeuner Sep 1, 2022
4e267a0
hmmm
mzeuner Sep 1, 2022
c80f784
now things are working
mzeuner Sep 1, 2022
a1e766b
done
mzeuner Sep 1, 2022
0948541
make checks pass
mzeuner Sep 1, 2022
132fad6
cleaning
mzeuner Sep 5, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 87 additions & 1 deletion Cubical/Algebra/CommRing/Localisation/InvertingElements.agda
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ open import Cubical.Algebra.CommRing.Ideal
open import Cubical.Algebra.CommRing.FGIdeal
open import Cubical.Algebra.CommRing.RadicalIdeal


open import Cubical.Tactics.CommRingSolver.Reflection

open import Cubical.HITs.SetQuotients as SQ
Expand All @@ -52,7 +53,7 @@ open Iso

private
variable
ℓ ℓ' : Level
ℓ ℓ' ℓ'' : Level
A : Type ℓ

module InvertingElementsBase (R' : CommRing ℓ) where
Expand Down Expand Up @@ -113,6 +114,7 @@ module InvertingElementsBase (R' : CommRing ℓ) where
Σhelper : Σ[ n ∈ ℕ ] s ≡ f ^ n → P [ r , s , s∈S[f] ]
Σhelper (n , p) = subst P (cong [_] (≡-× refl (Σ≡Prop (λ _ → isPropPropTrunc) (sym p)))) (base r n)


invElPropElim2 : {f g : R} {P : R[1/ f ] → R[1/ g ] → Type ℓ'}
→ (∀ x y → isProp (P x y))
→ (∀ (r s : R) (n : ℕ) → P [ r , (f ^ n) , PT.∣ n , refl ∣₁ ]
Expand Down Expand Up @@ -167,6 +169,89 @@ module InvertingElementsBase (R' : CommRing ℓ) where
1r · s · g ^ l ∎


invElPropElimN : (n : ℕ) (f : FinVec R (suc n)) (P : ((i : Fin (suc n)) → R[1/ (f i) ]) → Type ℓ')
→ (∀ x → isProp (P x))
→ (∀ (r : FinVec R (suc n)) (m : ℕ) → P (λ i → [ r i , (f i ^ m) , PT.∣ m , refl ∣₁ ]))
-------------------------------------------------------------------------------------
→ ∀ x → P x
invElPropElimN zero f P isPropP baseCase x =
subst P (funExt (λ { zero → refl })) (invElPropElim {P = P'} (λ _ → isPropP _)
(λ r n → subst P (funExt (λ { zero → refl })) (baseCase (λ {zero → r}) n)) (x zero))
where
P' : R[1/ (f zero) ] → Type _
P' x = P (λ {zero → x})

invElPropElimN (suc n) f P isPropP baseCase x =
subst P (funExt (λ { zero → refl ; (suc i) → refl }))
(invElPropElimN n (f ∘ suc) P' (λ _ → isPropP _) baseCase' (x ∘ suc))
where
P' : ((i : Fin (suc n)) → R[1/ (f (suc i)) ]) → Type _
P' y = P (λ { zero → x zero ; (suc i) → y i })

baseCase' : ∀ (rₛ : FinVec R (suc n)) (m : ℕ)
→ P' (λ i → [ rₛ i , f (suc i) ^ m , ∣ m , refl ∣₁ ])
baseCase' rₛ m =
subst P (funExt (λ { zero → refl ; (suc i) → refl }))
(invElPropElim {P = P''} (λ _ → isPropP _) baseCase'' (x zero))
where
P'' : R[1/ (f zero) ] → Type _
P'' y = P (λ { zero → y ; (suc i) → [ rₛ i , f (suc i) ^ m , ∣ m , refl ∣₁ ]})

baseCase'' : ∀ (r₀ : R) (k : ℕ) → P'' [ r₀ , f zero ^ k , ∣ k , refl ∣₁ ]
baseCase'' r₀ k = subst P (funExt (λ { zero → vecPaths zero ; (suc i) → vecPaths (suc i) }))
(baseCase newEnumVec l)
where
l = max m k

newEnumVec : FinVec R (suc (suc n))
newEnumVec zero = r₀ · (f zero) ^ (l ∸ k)
newEnumVec (suc i) = rₛ i · (f (suc i)) ^ (l ∸ m)

oldBaseVec : (i : Fin (suc (suc n))) → R[1/ (f i) ]
oldBaseVec = λ { zero → [ r₀ , f zero ^ k , ∣ k , refl ∣₁ ]
; (suc i) → [ rₛ i , f (suc i) ^ m , ∣ m , (λ _ → f (suc i) ^ m) ∣₁ ] }

newBaseVec : (i : Fin (suc (suc n))) → R[1/ (f i) ]
newBaseVec zero = [ r₀ · (f zero) ^ (l ∸ k) , (f zero) ^ l , ∣ l , refl ∣₁ ]
newBaseVec (suc i) = [ rₛ i · (f (suc i)) ^ (l ∸ m) , (f (suc i)) ^ l , ∣ l , refl ∣₁ ]

vecPaths : ∀ i → newBaseVec i ≡ oldBaseVec i
vecPaths zero = eq/ _ _ ((1r , ∣ 0 , refl ∣₁) , path)
where
useSolver1 : ∀ a b c → 1r · (a · b) · c ≡ a · (b · c)
useSolver1 = solve R'
useSolver2 : ∀ a b → a · b ≡ 1r · a · b
useSolver2 = solve R'
path : 1r · (r₀ · f zero ^ (l ∸ k)) · f zero ^ k ≡ 1r · r₀ · f zero ^ l
path = 1r · (r₀ · f zero ^ (l ∸ k)) · f zero ^ k
≡⟨ useSolver1 _ _ _ ⟩
r₀ · (f zero ^ (l ∸ k) · f zero ^ k)
≡⟨ cong (r₀ ·_) (·-of-^-is-^-of-+ _ _ _) ⟩
r₀ · f zero ^ (l ∸ k +ℕ k)
≡⟨ cong (λ k' → r₀ · f zero ^ k') (≤-∸-+-cancel right-≤-max) ⟩
r₀ · f zero ^ l
≡⟨ useSolver2 _ _ ⟩
1r · r₀ · f zero ^ l ∎

vecPaths (suc i) = eq/ _ _ ((1r , ∣ 0 , refl ∣₁) , path)
where
useSolver1 : ∀ a b c → 1r · (a · b) · c ≡ a · (b · c)
useSolver1 = solve R'
useSolver2 : ∀ a b → a · b ≡ 1r · a · b
useSolver2 = solve R'
path : 1r · (rₛ i · f (suc i) ^ (l ∸ m)) · f (suc i) ^ m ≡ 1r · rₛ i · f (suc i) ^ l
path = 1r · (rₛ i · f (suc i) ^ (l ∸ m)) · f (suc i) ^ m
≡⟨ useSolver1 _ _ _ ⟩
rₛ i · (f (suc i) ^ (l ∸ m) · f (suc i) ^ m)
≡⟨ cong (rₛ i ·_) (·-of-^-is-^-of-+ _ _ _) ⟩
rₛ i · f (suc i) ^ (l ∸ m +ℕ m)
≡⟨ cong (λ m' → rₛ i · f (suc i) ^ m') (≤-∸-+-cancel left-≤-max) ⟩
rₛ i · f (suc i) ^ l
≡⟨ useSolver2 _ _ ⟩
1r · rₛ i · f (suc i) ^ l ∎



-- For predicates over the set of powers
powersPropElim : {f : R} {P : R → Type ℓ'}
→ (∀ x → isProp (P x))
Expand Down Expand Up @@ -222,6 +307,7 @@ module RadicalLemma (R' : CommRing ℓ) (f g : (fst R')) where
(Exponentiation.^-presUnit _ _ n (unitHelper f∈√⟨g⟩))



module DoubleLoc (R' : CommRing ℓ) (f g : (fst R')) where
open isMultClosedSubset
open CommRingStr (snd R')
Expand Down
Loading