Skip to content

Serialization Refactor #4162

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

Merged
merged 153 commits into from
Mar 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
153 commits
Select commit Hold shift + click to select a range
45d3516
some progress on simplifying ref handling in IPC Serialization
antonydellavecchia Sep 16, 2024
3e62a1b
some progress
antonydellavecchia Sep 16, 2024
8d76aab
moving things around
antonydellavecchia Sep 17, 2024
94587e3
type params function
antonydellavecchia Sep 17, 2024
e4c5bae
some progress on refactoring
antonydellavecchia Sep 18, 2024
1dfd391
some progress
antonydellavecchia Sep 19, 2024
c1cbd72
more progress
antonydellavecchia Sep 20, 2024
12eb6ef
almost completed uni variate polynomials
antonydellavecchia Sep 28, 2024
84c46e6
uni vairate polynomials serialization passing
antonydellavecchia Sep 28, 2024
e35b665
MPolyRing tests passing
antonydellavecchia Sep 29, 2024
4537cf0
moving things around
antonydellavecchia Sep 29, 2024
eb3c734
grading needs containers
antonydellavecchia Sep 30, 2024
a94c566
not sure where i left this
antonydellavecchia Oct 22, 2024
72a96cf
new load_type_params
antonydellavecchia Nov 5, 2024
5e06a82
bug with julia 1.11.1
antonydellavecchia Nov 6, 2024
4cbaee4
vectors + polynomials working
antonydellavecchia Nov 7, 2024
7255064
some progress on tuples
antonydellavecchia Nov 7, 2024
b41dee5
reworking save_type_params
antonydellavecchia Nov 11, 2024
d758fad
tidying
antonydellavecchia Nov 13, 2024
f61ecd1
dicts working
antonydellavecchia Nov 14, 2024
66a5f2e
containers completed, need some upgrades though
antonydellavecchia Nov 19, 2024
32bb5ee
tidying
antonydellavecchia Nov 21, 2024
47e3f3f
broke everything
antonydellavecchia Nov 21, 2024
d971bb5
fixed containers and polynomials
antonydellavecchia Dec 3, 2024
beea514
some issues with field embeddings
antonydellavecchia Dec 3, 2024
b6f35d3
fields tests working now
antonydellavecchia Dec 13, 2024
4b37896
algebras working
antonydellavecchia Jan 14, 2025
0b0d1de
started on groups
antonydellavecchia Jan 14, 2025
62b1bbc
Merge branch 'master' into adv/ipc-serialize
antonydellavecchia Jan 15, 2025
0324e87
fix, inconsistencies from merge
antonydellavecchia Jan 15, 2025
98fc56d
crawling through groups
antonydellavecchia Jan 15, 2025
49b0768
matrices working
antonydellavecchia Jan 16, 2025
a26a575
MPolyMap Working
antonydellavecchia Jan 16, 2025
f539b16
some progress on polyhedral objects
antonydellavecchia Jan 16, 2025
5404f73
adjust GAP serialization to the refactoring
ThomasBreuer Jan 18, 2025
0bb0cc7
GAP object serialization working
antonydellavecchia Jan 20, 2025
336c350
groups working
antonydellavecchia Jan 20, 2025
d322733
removed false kwarg in docs
antonydellavecchia Jan 20, 2025
af036e9
Lie Theory serialization working
antonydellavecchia Jan 20, 2025
215e946
stuck on regression in polyhedral
antonydellavecchia Jan 20, 2025
4ded0c1
simplify type_params
antonydellavecchia Jan 27, 2025
0efc726
fields working
antonydellavecchia Jan 27, 2025
a69c0d4
back to polyhedral
antonydellavecchia Jan 27, 2025
faa656b
graded ring working
antonydellavecchia Jan 28, 2025
81cb2e8
sets not passing yet
antonydellavecchia Jan 28, 2025
4ee31af
started to change docs a bit
antonydellavecchia Jan 28, 2025
0fd56a2
fix some set tests
antonydellavecchia Jan 28, 2025
54ce61d
progress on polyhedral objects
antonydellavecchia Jan 30, 2025
032f766
progress on some polyhedral object types
antonydellavecchia Feb 3, 2025
d95c1c2
more progress
antonydellavecchia Feb 4, 2025
a6e1211
serialization: flatten some polymake object dicts
benlorenz Feb 4, 2025
5fc2c23
Fix for type_params of dictionaries to avoid infinite recursion.
HechtiDerLachs Feb 4, 2025
e6cc36b
fix dict type_params
antonydellavecchia Feb 5, 2025
e916d02
qqbar fix
antonydellavecchia Feb 5, 2025
41b847a
second line fix for QQbar Field
antonydellavecchia Feb 5, 2025
2ac86dc
proper fix
antonydellavecchia Feb 5, 2025
010ce9c
fixes for container tests
antonydellavecchia Feb 5, 2025
7c20606
TypeParams Struct
antonydellavecchia Jan 30, 2025
cc244e0
some progress with TypeParams Struct
antonydellavecchia Feb 6, 2025
7ba0ae3
Algebras and Fields done
antonydellavecchia Feb 6, 2025
66199b6
groups working again
antonydellavecchia Feb 6, 2025
bdc0883
lie theory + MPolyMap
antonydellavecchia Feb 6, 2025
f2dd59d
bunch more types working
antonydellavecchia Feb 7, 2025
8e994c2
tests passing for all types in src (except upgrade test)
antonydellavecchia Feb 7, 2025
6d1c0e9
cleaning up polymake dict functions
antonydellavecchia Feb 7, 2025
912ce15
Merge branch 'master' into adv/ipc-serialize
lgoettgens Feb 7, 2025
d8c1aca
removed redundant function
antonydellavecchia Feb 7, 2025
8517c86
Merge remote-tracking branch 'origin/adv/ipc-serialize' into adv/ipc-…
antonydellavecchia Feb 7, 2025
be1de89
Update src/Serialization/Groups.jl
antonydellavecchia Feb 7, 2025
e6d0f4a
Serialization refactor (Lie theory part) (#4563)
lgoettgens Feb 7, 2025
af1246f
remove dead code
antonydellavecchia Feb 7, 2025
e0d6bfe
remove obsolete code see pr #4501
antonydellavecchia Feb 7, 2025
70039fb
can almost load example qsm
antonydellavecchia Feb 11, 2025
1ce804e
qsm saving and loading refactor
antonydellavecchia Feb 11, 2025
b7ceaac
starting on upgrade
antonydellavecchia Feb 11, 2025
a7d6a97
Merge branch 'master' into adv/ipc-serialize
lgoettgens Feb 13, 2025
7626557
fix loading vectors
antonydellavecchia Feb 14, 2025
711089b
[FTheoryTools] Update serialization of Weierstrass models
HereAround Feb 14, 2025
89495ab
[FTheoryTools] Update serialization of GlobalTateModel
HereAround Feb 14, 2025
cc7102b
allow dict overrides
antonydellavecchia Feb 17, 2025
58f4f5e
upgrade fqPolyrepFields
antonydellavecchia Feb 18, 2025
d9fc9a2
some upgrades
antonydellavecchia Feb 19, 2025
ec30702
start on moving ftheory attributes to attribute framework
antonydellavecchia Feb 20, 2025
1a08b4b
commented out setting some attributes
antonydellavecchia Feb 20, 2025
6691493
use tuples for resolutions
antonydellavecchia Feb 20, 2025
2c364a3
upgrade surfaces
antonydellavecchia Feb 20, 2025
e1ee41f
upgrades for quad spaces
antonydellavecchia Feb 20, 2025
939f622
update enrique surfaces
antonydellavecchia Feb 20, 2025
d6b1a82
Vector needs upgrade
antonydellavecchia Feb 20, 2025
28aae14
issue with storing johnson solids after update
antonydellavecchia Feb 21, 2025
bd9a095
fix
antonydellavecchia Feb 21, 2025
af22525
comment out print statements
antonydellavecchia Feb 21, 2025
0869ee8
upgrade johnson solids
antonydellavecchia Feb 21, 2025
dc56b0f
revert to using dev version on save
antonydellavecchia Feb 21, 2025
54771a9
update catalan and archimedean solids
antonydellavecchia Feb 21, 2025
764db2f
upgrades for all types in src
antonydellavecchia Feb 21, 2025
ae604d5
forgot to add file with ne extension
antonydellavecchia Feb 25, 2025
5f7e0e2
updates for loading IdealGens
antonydellavecchia Feb 25, 2025
42a6b56
improved Dict serialization coverage
antonydellavecchia Feb 25, 2025
169f849
catch missed upgrades
antonydellavecchia Feb 25, 2025
d4fe954
Merge remote-tracking branch 'origin/master' into adv/ipc-serialize
antonydellavecchia Feb 26, 2025
2680385
Merge remote-tracking branch 'origin/master' into adv/ipc-serialize
antonydellavecchia Feb 26, 2025
aeefa9c
fixes
antonydellavecchia Feb 26, 2025
8596404
Serialization Refactor (Lie Theory again) (#4649)
lgoettgens Feb 26, 2025
2f6b535
update versions
antonydellavecchia Feb 26, 2025
9a04f13
upgrades ZZLatwithisom and some lie algebra upgrades
antonydellavecchia Feb 26, 2025
3739092
upgrades some lie algebra modules
antonydellavecchia Mar 3, 2025
5d256c9
fix vararg
antonydellavecchia Mar 4, 2025
256690f
only cast vectors when empty
antonydellavecchia Mar 4, 2025
3c8ea9b
small adjustment in uupgrades for ntvs without attrs
antonydellavecchia Mar 4, 2025
89450c0
finish all upgrades for lie algebra modules
antonydellavecchia Mar 4, 2025
a2c6cb6
fix upgrade for ntv
antonydellavecchia Mar 4, 2025
467b864
Merge branch 'adv/ipc-serialize' into adv/refactor-ftheory-attributes
antonydellavecchia Mar 4, 2025
d7b5608
add all attributes
antonydellavecchia Mar 4, 2025
0132453
fixes regressions and can load qsm models
antonydellavecchia Mar 4, 2025
a0fe262
remove debugging print statements
antonydellavecchia Mar 4, 2025
30f1ad4
fixes regression in polyhedron files
antonydellavecchia Mar 4, 2025
1a4ae06
cleanup version forcing
antonydellavecchia Mar 4, 2025
da5f58d
only force dict type when empty
antonydellavecchia Mar 4, 2025
510aa8b
fix container tests
antonydellavecchia Mar 4, 2025
021c823
Update QSMDB
HereAround Mar 4, 2025
92d5cf4
revert change in polynomial example
antonydellavecchia Mar 5, 2025
961fed0
fix the ipc init
antonydellavecchia Mar 5, 2025
ec1fc46
Merge remote-tracking branch 'origin/adv/ipc-serialize' into adv/ipc-…
antonydellavecchia Mar 5, 2025
ceadf04
Merge branch 'master' into adv/ipc-serialize
antonydellavecchia Mar 5, 2025
2b459c6
skip literature model tests for now
antonydellavecchia Mar 5, 2025
02cee21
remove print on polyhedralobject upgrade
antonydellavecchia Mar 5, 2025
80284d0
started on artifacts
antonydellavecchia Mar 5, 2025
8d25235
started on artifact
antonydellavecchia Mar 5, 2025
427bb2b
move things into literature tests to avoid any kind of loading
antonydellavecchia Mar 5, 2025
cc00c05
upgrade tests for all files in version 1.3.0
antonydellavecchia Mar 5, 2025
59ef999
revert files
antonydellavecchia Mar 5, 2025
f1c0b14
add lazy artifacts to deps
antonydellavecchia Mar 5, 2025
eb3f7bb
skip tate model serialization tests
antonydellavecchia Mar 5, 2025
94237a3
skip another ftheory test
antonydellavecchia Mar 5, 2025
a2ec275
revert lp to old format
antonydellavecchia Mar 5, 2025
c6d7488
Merge branch 'master' into adv/ipc-serialize
HereAround Mar 5, 2025
8ace4de
fixes for dicts of diff value types
antonydellavecchia Mar 5, 2025
8d2182a
fix for int keys
antonydellavecchia Mar 6, 2025
0839cb6
typo
antonydellavecchia Mar 6, 2025
2723d44
catch empty and not equl params
antonydellavecchia Mar 6, 2025
a2c1bb4
fix dicts
antonydellavecchia Mar 6, 2025
3b303c5
properly upgrades polyhedral objects over number field
antonydellavecchia Mar 6, 2025
7d4f812
fixes loading tests
antonydellavecchia Mar 6, 2025
6eb8a37
update artifact
antonydellavecchia Mar 6, 2025
7ba6796
fix dir_name
antonydellavecchia Mar 6, 2025
3ce36ca
update no experimental tests
antonydellavecchia Mar 6, 2025
c86194e
FTheory Tools attributes (#4620)
antonydellavecchia Mar 6, 2025
3ab61fb
Apply suggestions from code review
antonydellavecchia Mar 6, 2025
9abf1dd
renaming file
antonydellavecchia Mar 6, 2025
34caab5
revert IPC test
antonydellavecchia Mar 7, 2025
b548a21
remove debugging artifact
antonydellavecchia Mar 7, 2025
76d3ed4
one more debuggin artifact
antonydellavecchia Mar 7, 2025
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
14 changes: 11 additions & 3 deletions Artifacts.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
[version-1-3-0-files]
git-tree-sha1 = "231c660234d515a682a698764042cd9dae90361b"
lazy = true

[[version-1-3-0-files.download]]
sha256 = "cd475445c983883d84a4ac29910d75f8b681ca1a99eb8f18f8164d2caa8704c3"
url = "https://github.com/oscar-system/Oscar.jl/releases/download/archive-tag-1/version_1_3_0_files.tar.gz"

[FTM-1511-03209]
git-tree-sha1 = "ba4c659df6bba8d746d85628bfedf8b77b77047c"
lazy = true
Expand All @@ -7,12 +15,12 @@ lazy = true
url = "https://zenodo.org/records/14611045/files/1511-03209.tar.gz"

[QSMDB]
git-tree-sha1 = "52686066016440cf2e6e286a923aed887658543c"
git-tree-sha1 = "50dadf750f037e93b4514d91314e1990ff5db090"
lazy = true

[[QSMDB.download]]
sha256 = "2b0a368c07d368f3973352b7f6e856214e25383d2cc3a78c70415afe247a997e"
url = "https://github.com/oscar-system/Oscar.jl/releases/download/archive-tag-1/QSMDB-2.tar.gz"
sha256 = "3903c6d7b14cea141ae4f5fd75ac97dca1d846596d6e11becd5f7c643cf69c36"
url = "https://github.com/oscar-system/Oscar.jl/releases/download/archive-tag-1/QSMDB-3.tar.gz"

[gap_extraperfect]
git-tree-sha1 = "084fa12573e5089ceb3299f9d341f244b415da52"
Expand Down
2 changes: 0 additions & 2 deletions docs/src/DeveloperDocumentation/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ labels, and the release notes script will organize them appropriately:

## Suggestions for formulations


In general the description of each change should start with a verb in present
tense. Here are some more concrete suggestions.

Expand All @@ -98,7 +97,6 @@ tense. Here are some more concrete suggestions.
| improvements | Improve (performance) of `blub`
| experimental feature | Experimental: add support for `bla`


## Updating the changelog

There are two ways to update the changelog: by invoking the script directly, or by triggering
Expand Down
46 changes: 20 additions & 26 deletions docs/src/DeveloperDocumentation/serialization.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,20 +109,32 @@ evaluation.
There are three pairs of saving and loading functions that are used
during serialization:
1. `save_typed_object`, `load_typed_object`
2. `save_object`, `load_object`
3. `save_type_params`, `load_type_params`
2. `save_type_params`, `load_type_params`
3. `save_object`, `load_object`


#### `save_type_object` / `load_type_object`

For the most part these functions should not be touched, they are high level
These functions should not be touched, they are high level
functions and are used to (de)serialize the object with its
type information as well as its data. The data and type nodes are
set in `save_typed_object` resulting in a "data branch" and "type branch".
The usage of these functions can be used inside `save_object` / `load_object`
and `save_type_params` / `load_type_params`. However using `save_typed_object` inside
a `save_object` implementation will lead to a verbose format and should at some
point be moved to `save_type_params`. Their implementation can be found in the
`main.jl` file.


#### `save_type_params` / `load_type_params`

The serialization mechanism stores data in the format of a tree, with the
exception that some nodes may point to a shared reference. The "data branch"
is anything that is a child node of a data node, whereas the "type branch" is
any information that is stored in a node that is a child of a type node.

These functions should also not be touched, however they expect an implementation
of `type_params` whenever saving a type `T`. By default `type_params` will return
`nothing`. The `type_params` function does a shallow pass through an `obj` of type
`T` gathering the necessary parameters for serializing `obj`.
In most cases these parameters are the parameters of the `obj` that uses references.
For example if `obj` is of type `RingElem` than it is expected that `type_params`
should contain at least

#### `save_object` / `load_object`

Expand Down Expand Up @@ -265,24 +277,6 @@ end
Note for now `save_typed_object` must be wrapped in either a `save_data_array` or
`save_data_dict`. Otherwise you will get a key override error.

#### `save_type_params` / `load_type_params`

The serialization mechanism stores data in the format of a tree, with the
exception that some nodes may point to a shared reference. The "data branch"
is anything that is a child node of a data node, whereas the "type branch" is
any information that is stored in a node that is a child of a type node.
Avoiding type information inside the data branch will lead to a more
efficient serialization format. When the `uses_params` is set when
registering the type with [`@register_serialization_type`](@ref)
(de)serialization will use `save_type_params` / `load_type_params`
to format the type information.
In general we expect that implementing a `save_type_params` and
`load_type_params` should not always be necessary. Many types
will serialize their types in a similar fashion for example serialization
of a `FieldElem` will use the `save_type_params` / `load_type_params` from
`RingElem` since in both cases the only parameter needed for such types
is their parent.

### Import helper

When implementing the serialization of a new type in a module that is not
Expand Down
37 changes: 33 additions & 4 deletions experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -880,8 +880,8 @@ Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)

julia> resolutions(m)
1-element Vector{Vector{Vector}}:
[[["x", "y", "w"], ["y", "e1"], ["x", "e4"], ["y", "e2"], ["x", "y"]], ["e1", "e4", "e2", "e3", "s"]]
1-element Vector{Tuple{Vector{Vector{String}}, Vector{String}}}:
([["x", "y", "w"], ["y", "e1"], ["x", "e4"], ["y", "e2"], ["x", "y"]], ["e1", "e4", "e2", "e3", "s"])
```
"""
function resolutions(m::AbstractFTheoryModel)
Expand Down Expand Up @@ -955,8 +955,8 @@ Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)

julia> weighted_resolutions(m)
1-element Vector{Vector{Vector}}:
[Vector{Vector{Any}}[[["x", "y", "w"], [1, 1, 1]], [["x", "y", "w"], [1, 2, 1]], [["x", "y", "w"], [2, 2, 1]], [["x", "y", "w"], [2, 3, 1]], [["x", "y"], [1, 1]]], ["e1", "e4", "e2", "e3", "s"]]
1-element Vector{Tuple{Vector{Tuple{Vector{String}, Vector{Int64}}}, Vector{String}}}:
([(["x", "y", "w"], [1, 1, 1]), (["x", "y", "w"], [1, 2, 1]), (["x", "y", "w"], [2, 2, 1]), (["x", "y", "w"], [2, 3, 1]), (["x", "y"], [1, 1])], ["e1", "e4", "e2", "e3", "s"])
```
"""
function weighted_resolutions(m::AbstractFTheoryModel)
Expand Down Expand Up @@ -1967,3 +1967,32 @@ function genera_of_components_of_simplified_dual_graph(m::AbstractFTheoryModel)
@req has_attribute(m, :genus_of_components_of_simplified_dual_graph) "Genera of components of simplified dual graph not known for this model"
return get_attribute(m, :genus_of_components_of_simplified_dual_graph)
end


######################################################################################
### (5) Attributes for flux families (not exported, rather for serialization overhaul)
######################################################################################

@attr QQMatrix function matrix_integral_quant(m::AbstractFTheoryModel; check::Bool = true)
return matrix_integral(well_quantized_ambient_space_models_of_g4_fluxes(m, check = check))
end

@attr QQMatrix function matrix_rational_quant(m::AbstractFTheoryModel; check::Bool = true)
return matrix_rational(well_quantized_ambient_space_models_of_g4_fluxes(m, check = check))
end

@attr QQMatrix function matrix_integral_quant_transverse(m::AbstractFTheoryModel; check::Bool = true)
return matrix_integral(special_flux_family(m, check = check))
end

@attr QQMatrix function matrix_rational_quant_transverse(m::AbstractFTheoryModel; check::Bool = true)
return matrix_rational(special_flux_family(m, check = check))
end

@attr QQMatrix function matrix_integral_quant_transverse_nobreak(m::AbstractFTheoryModel)
return matrix_integral(special_flux_family(m, not_breaking = true; check = check))
end

@attr QQMatrix function matrix_rational_quant_transverse_nobreak(m::AbstractFTheoryModel)
return matrix_rational(special_flux_family(m, not_breaking = true; check = check))
end
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ function set_torsion_sections(m::AbstractFTheoryModel, vs::Vector{Vector{String}
set_attribute!(m, :torsion_sections => [[f(eval_poly(l, R)) for l in k] for k in vs])
end

function set_resolutions(m::AbstractFTheoryModel, desired_value::Vector{Vector{Vector}})
function set_resolutions(m::AbstractFTheoryModel, desired_value::Vector{Tuple{Vector{Vector{String}}, Vector{String}}})
set_attribute!(m, :resolutions => desired_value)
end

Expand All @@ -652,7 +652,7 @@ function set_resolution_zero_sections(m::AbstractFTheoryModel, vs::Vector{Vector
set_attribute!(m, :resolution_zero_sections => result)
end

function set_weighted_resolutions(m::AbstractFTheoryModel, desired_value::Vector{Vector{Vector}})
function set_weighted_resolutions(m::AbstractFTheoryModel, desired_value::Vector{Tuple{Vector{Tuple{Vector{String}, Vector{Int}}}, Vector{String}}})
set_attribute!(m, :weighted_resolutions => desired_value)
end

Expand Down
1 change: 0 additions & 1 deletion experimental/FTheoryTools/src/FTheoryTools.jl
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,5 @@ include("FamilyOfG4Fluxes/special_constructors.jl")
include("Serialization/tate_models.jl")
include("Serialization/weierstrass_models.jl")
include("Serialization/hypersurface_models.jl")
include("Serialization/qsm_models.jl")

include("exports.jl")
23 changes: 12 additions & 11 deletions experimental/FTheoryTools/src/FamilyOfG4Fluxes/attributes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> model(f_gs) == qsm_model
true
Expand Down Expand Up @@ -57,7 +56,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> matrix_integral(f_gs) == mat_int
true
Expand Down Expand Up @@ -90,7 +88,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> matrix_rational(f_gs) == mat_rat
true
Expand Down Expand Up @@ -126,16 +123,8 @@ A family of G4 fluxes:
- Elementary quantization checks: satisfied
- Transversality checks: satisfied
- Non-abelian gauge group: broken
- Tadpole constraint: not analyzed

julia> d3_tadpole_constraint(fgs);

julia> fgs
A family of G4 fluxes:
- Elementary quantization checks: satisfied
- Transversality checks: satisfied
- Non-abelian gauge group: broken
- Tadpole constraint: evaluated
```
"""
@attr QQMPolyRingElem function d3_tadpole_constraint(fgs::FamilyOfG4Fluxes; check::Bool = true)
Expand All @@ -150,6 +139,18 @@ A family of G4 fluxes:
end

# Are intersection numbers known?
# TODO: If available and necessary, convert inter_dict.
# TODO: This is necessary, because serializing and loading turns NTuple{4, Int64} into Tuple (as of March 5, 2025).
# TODO: Once serialization has caught up, this conversion will no longer be needed.
if has_attribute(m, :inter_dict) && typeof(get_attribute(m, :inter_dict)) != Dict{NTuple{4, Int64}, ZZRingElem}
original_dict = get_attribute(m, :inter_dict)
new_dict = Dict{NTuple{4, Int64}, ZZRingElem}()
for (key, value) in original_dict
new_key = NTuple{4, Int64}(key)
new_dict[new_key] = value
end
set_attribute!(model, :inter_dict, new_dict)
end
inter_dict = get_attribute!(m, :inter_dict) do
Dict{NTuple{4, Int64}, ZZRingElem}()
end::Dict{NTuple{4, Int64}, ZZRingElem}
Expand Down
11 changes: 6 additions & 5 deletions experimental/FTheoryTools/src/FamilyOfG4Fluxes/constructors.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed
```
"""
function family_of_g4_fluxes(m::AbstractFTheoryModel, mat_int::QQMatrix, mat_rat::QQMatrix; check::Bool = true)
Expand Down Expand Up @@ -69,7 +68,7 @@ function Base.show(io::IO, gf::FamilyOfG4Fluxes)
properties_string = ["A family of G4 fluxes:"]

# Check for elementary quantization checks
if has_attribute(gf, :is_well_quantized)
if has_attribute(gf, :is_well_quantized) && get_attribute(gf, :is_well_quantized) !== nothing
if is_well_quantized(gf)
push!(properties_string, " - Elementary quantization checks: satisfied")
else
Expand All @@ -80,7 +79,7 @@ function Base.show(io::IO, gf::FamilyOfG4Fluxes)
end

# Check for transversality checks
if has_attribute(gf, :passes_transversality_checks)
if has_attribute(gf, :passes_transversality_checks) && get_attribute(gf, :passes_transversality_checks) !== nothing
if passes_transversality_checks(gf)
push!(properties_string, " - Transversality checks: satisfied")
else
Expand All @@ -91,7 +90,7 @@ function Base.show(io::IO, gf::FamilyOfG4Fluxes)
end

# Check for non-abelian gauge group breaking
if has_attribute(gf, :breaks_non_abelian_gauge_group)
if has_attribute(gf, :breaks_non_abelian_gauge_group) && get_attribute(gf, :breaks_non_abelian_gauge_group) !== nothing
if breaks_non_abelian_gauge_group(gf)
push!(properties_string, " - Non-abelian gauge group: broken")
else
Expand All @@ -102,11 +101,13 @@ function Base.show(io::IO, gf::FamilyOfG4Fluxes)
end

# Is the tadpole constrained worked out as polynomial?
if has_attribute(gf, :d3_tadpole_constraint)
#=
if has_attribute(gf, :d3_tadpole_constraint) && get_attribute(gf, :d3_tadpole_constraint) !== nothing
push!(properties_string, " - Tadpole constraint: evaluated")
else
push!(properties_string, " - Tadpole constraint: not analyzed")
end
=#

# Print each line separately, to avoid extra line break at the end
for (i, line) in enumerate(properties_string)
Expand Down
2 changes: 0 additions & 2 deletions experimental/FTheoryTools/src/FamilyOfG4Fluxes/methods.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> int_combination = matrix(ZZ, [[3]])
[3]
Expand Down Expand Up @@ -98,7 +97,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> random_flux_instance(fgs, check = false)
G4-flux candidate
Expand Down
7 changes: 0 additions & 7 deletions experimental/FTheoryTools/src/FamilyOfG4Fluxes/properties.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ A family of G4 fluxes:
- Elementary quantization checks: satisfied
- Transversality checks: satisfied
- Non-abelian gauge group: broken
- Tadpole constraint: not analyzed

julia> is_well_quantized(gf)
true
Expand All @@ -40,7 +39,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> is_well_quantized(gf2, check = false)
true
Expand Down Expand Up @@ -103,7 +101,6 @@ A family of G4 fluxes:
- Elementary quantization checks: satisfied
- Transversality checks: satisfied
- Non-abelian gauge group: broken
- Tadpole constraint: not analyzed

julia> passes_transversality_checks(gf, check = false)
true
Expand All @@ -117,7 +114,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> passes_transversality_checks(gf3)
true
Expand Down Expand Up @@ -169,7 +165,6 @@ A family of G4 fluxes:
- Elementary quantization checks: satisfied
- Transversality checks: satisfied
- Non-abelian gauge group: broken
- Tadpole constraint: not analyzed

julia> breaks_non_abelian_gauge_group(gf)
true
Expand All @@ -179,7 +174,6 @@ A family of G4 fluxes:
- Elementary quantization checks: satisfied
- Transversality checks: satisfied
- Non-abelian gauge group: not broken
- Tadpole constraint: not analyzed

julia> breaks_non_abelian_gauge_group(gf3)
false
Expand All @@ -193,7 +187,6 @@ A family of G4 fluxes:
- Elementary quantization checks: not executed
- Transversality checks: not executed
- Non-abelian gauge group: breaking pattern not analyzed
- Tadpole constraint: not analyzed

julia> breaks_non_abelian_gauge_group(gf4, check = false)
false
Expand Down
Loading
Loading