@@ -38,12 +38,12 @@ julia> length(g4_amb_list) == 172
38
38
true
39
39
```
40
40
"""
41
- function ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true ):: Vector{CohomologyClass}
41
+ function ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true )
42
42
43
43
# Entry check
44
44
@req base_space (m) isa NormalToricVariety " Base space must be a toric variety for computation of ambient space G4 candidates"
45
45
if has_attribute (m, :ambient_space_models_of_g4_fluxes )
46
- return get_attribute (m, :ambient_space_models_of_g4_fluxes )
46
+ return get_attribute (m, :ambient_space_models_of_g4_fluxes ):: Vector{CohomologyClass}
47
47
end
48
48
49
49
# Execute entry tests in computation of basis_of_h22. If any of these fail, no need to proceed. Hence, do this first.
@@ -104,7 +104,7 @@ function ambient_space_models_of_g4_fluxes(m::AbstractFTheoryModel; check::Bool
104
104
105
105
set_attribute! (m, :ambient_space_models_of_g4_fluxes , filtered_h22_basis)
106
106
set_attribute! (m, :ambient_space_models_of_g4_fluxes_indices , filtered_h22_basis_indices)
107
- return filtered_h22_basis
107
+ return filtered_h22_basis:: Vector{CohomologyClass}
108
108
109
109
end
110
110
@@ -195,7 +195,7 @@ julia> passes_elementary_quantization_checks(g4)
195
195
true
196
196
```
197
197
"""
198
- function well_quantized_ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true ):: Tuple{QQMatrix, QQMatrix}
198
+ function well_quantized_ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true )
199
199
200
200
# (1) Entry checks
201
201
@req base_space (m) isa NormalToricVariety " Computation of well-quantized G4-fluxes only supported for toric base and ambient spaces"
@@ -205,7 +205,7 @@ function well_quantized_ambient_space_models_of_g4_fluxes(m::AbstractFTheoryMode
205
205
@req is_simplicial (ambient_space (m)) " Computation of well-quantized G4-fluxes only supported for simplicial toric ambient space"
206
206
end
207
207
if has_attribute (m, :well_quantized_ambient_space_models_of_g4_fluxes )
208
- return get_attribute (m, :well_quantized_ambient_space_models_of_g4_fluxes )
208
+ return get_attribute (m, :well_quantized_ambient_space_models_of_g4_fluxes ):: Tuple{QQMatrix, QQMatrix}
209
209
end
210
210
211
211
@@ -226,19 +226,21 @@ function well_quantized_ambient_space_models_of_g4_fluxes(m::AbstractFTheoryMode
226
226
227
227
228
228
# (3) Are intersection numbers known?
229
- inter_dict = Dict {NTuple{4, Int64}, ZZRingElem} ()
230
- s_inter_dict = Dict {String, ZZRingElem} ()
231
- if has_attribute (m, :inter_dict )
232
- inter_dict = get_attribute (m, :inter_dict )
233
- end
234
- if has_attribute (m, :s_inter_dict )
235
- s_inter_dict = get_attribute (m, :s_inter_dict )
236
- end
229
+ inter_dict = if has_attribute (m, :inter_dict )
230
+ get_attribute (m, :inter_dict )
231
+ else
232
+ Dict {NTuple{4, Int64}, ZZRingElem} ()
233
+ end :: Dict{NTuple{4, Int64}, ZZRingElem}
234
+ s_inter_dict = if has_attribute (m, :s_inter_dict )
235
+ get_attribute (m, :s_inter_dict )
236
+ else
237
+ Dict {String, ZZRingElem} ()
238
+ end :: Dict{String, ZZRingElem}
237
239
238
240
239
241
# (4) Obtain critical information - this may take significant time!
240
242
ambient_space_flux_candidates_basis = ambient_space_models_of_g4_fluxes (m, check = check)
241
- ambient_space_flux_candidates_basis_indices = get_attribute (m, :ambient_space_models_of_g4_fluxes_indices )
243
+ ambient_space_flux_candidates_basis_indices = get_attribute (m, :ambient_space_models_of_g4_fluxes_indices ):: Vector{Tuple{Int64, Int64}}
242
244
list_of_divisor_pairs_to_be_considered = Oscar. _ambient_space_divisor_pairs_to_be_considered (m)
243
245
244
246
@@ -262,7 +264,7 @@ function well_quantized_ambient_space_models_of_g4_fluxes(m::AbstractFTheoryMode
262
264
263
265
# Cover all other case with generic, but potentially painfully slow methodology.
264
266
tds = torusinvariant_prime_divisors (ambient_space (m))
265
- cds = [cohomology_class (tds[i] ) for i in 1 : length ( tds) ]
267
+ cds = [cohomology_class (td ) for td in tds]
266
268
pt_class = cohomology_class (anticanonical_divisor_class (ambient_space (m)))
267
269
for i in 1 : length (ambient_space_flux_candidates_basis)
268
270
condition = Vector {ZZRingElem} ()
@@ -328,7 +330,7 @@ function well_quantized_ambient_space_models_of_g4_fluxes(m::AbstractFTheoryMode
328
330
329
331
330
332
# (10) Finally, return the result
331
- return res
333
+ return res:: Tuple{QQMatrix, QQMatrix}
332
334
333
335
end
334
336
@@ -435,7 +437,7 @@ julia> passes_verticality_checks(qsm_g4_candidate)
435
437
true
436
438
```
437
439
"""
438
- function well_quantized_and_vertical_ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true ):: Tuple{QQMatrix, QQMatrix}
440
+ function well_quantized_and_vertical_ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true )
439
441
440
442
# (1) Entry checks
441
443
@req base_space (m) isa NormalToricVariety " Computation of well-quantized G4-fluxes only supported for toric base and ambient spaces"
@@ -445,7 +447,7 @@ function well_quantized_and_vertical_ambient_space_models_of_g4_fluxes(m::Abstra
445
447
@req is_simplicial (ambient_space (m)) " Computation of well-quantized G4-fluxes only supported for simplicial toric ambient space"
446
448
end
447
449
if has_attribute (m, :well_quantized_and_vertical_ambient_space_models_of_g4_fluxes )
448
- return get_attribute (m, :well_quantized_and_vertical_ambient_space_models_of_g4_fluxes )
450
+ return get_attribute (m, :well_quantized_and_vertical_ambient_space_models_of_g4_fluxes ):: Tuple{QQMatrix, QQMatrix}
449
451
end
450
452
451
453
@@ -466,20 +468,22 @@ function well_quantized_and_vertical_ambient_space_models_of_g4_fluxes(m::Abstra
466
468
467
469
468
470
# (3) Are intersection numbers known?
469
- inter_dict = Dict {NTuple{4, Int64}, ZZRingElem} ()
470
- s_inter_dict = Dict {String, ZZRingElem} ()
471
- if has_attribute (m, :inter_dict )
472
- inter_dict = get_attribute (m, :inter_dict )
473
- end
474
- if has_attribute (m, :s_inter_dict )
475
- s_inter_dict = get_attribute (m, :s_inter_dict )
476
- end
471
+ inter_dict = if has_attribute (m, :inter_dict )
472
+ get_attribute (m, :inter_dict )
473
+ else
474
+ Dict {NTuple{4, Int64}, ZZRingElem} ()
475
+ end :: Dict{NTuple{4, Int64}, ZZRingElem}
476
+ s_inter_dict = if has_attribute (m, :s_inter_dict )
477
+ get_attribute (m, :s_inter_dict )
478
+ else
479
+ Dict {String, ZZRingElem} ()
480
+ end :: Dict{String, ZZRingElem}
477
481
478
482
479
483
# (4) Obtain critical information - this may take significant time!
480
484
ambient_space_flux_candidates_basis = ambient_space_models_of_g4_fluxes (m, check = check)
481
485
list_of_base_divisor_pairs_to_be_considered = Oscar. _ambient_space_base_divisor_pairs_to_be_considered (m)
482
- ambient_space_flux_candidates_basis_indices = get_attribute (m, :ambient_space_models_of_g4_fluxes_indices )
486
+ ambient_space_flux_candidates_basis_indices = get_attribute (m, :ambient_space_models_of_g4_fluxes_indices ):: Vector{Tuple{Int64, Int64}}
483
487
list_of_divisor_pairs_to_be_considered = Oscar. _ambient_space_divisor_pairs_to_be_considered (m)
484
488
485
489
@@ -515,7 +519,7 @@ function well_quantized_and_vertical_ambient_space_models_of_g4_fluxes(m::Abstra
515
519
516
520
# Cover all other case with generic, but potentially painfully slow methodology.
517
521
tds = torusinvariant_prime_divisors (ambient_space (m))
518
- cds = [cohomology_class (tds[i] ) for i in 1 : length ( tds) ]
522
+ cds = [cohomology_class (td ) for td in tds]
519
523
pt_class = cohomology_class (anticanonical_divisor_class (ambient_space (m)))
520
524
for i in 1 : length (ambient_space_flux_candidates_basis)
521
525
@@ -582,7 +586,7 @@ function well_quantized_and_vertical_ambient_space_models_of_g4_fluxes(m::Abstra
582
586
583
587
# Cover all other case with generic, but potentially painfully slow methodology.
584
588
tds = torusinvariant_prime_divisors (ambient_space (m))
585
- cds = [cohomology_class (tds[i] ) for i in 1 : length ( tds) ]
589
+ cds = [cohomology_class (td ) for td in tds]
586
590
pt_class = cohomology_class (anticanonical_divisor_class (ambient_space (m)))
587
591
for i in 1 : length (ambient_space_flux_candidates_basis)
588
592
condition = Vector {ZZRingElem} ()
@@ -637,7 +641,7 @@ function well_quantized_and_vertical_ambient_space_models_of_g4_fluxes(m::Abstra
637
641
638
642
639
643
# (12) Finally, return the result
640
- return res
644
+ return res:: Tuple{QQMatrix, QQMatrix}
641
645
642
646
end
643
647
@@ -752,7 +756,7 @@ julia> breaks_non_abelian_gauge_group(qsm_g4_candidate)
752
756
false
753
757
```
754
758
"""
755
- function well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true ):: Tuple{QQMatrix, QQMatrix}
759
+ function well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_ambient_space_models_of_g4_fluxes (m:: AbstractFTheoryModel ; check:: Bool = true )
756
760
757
761
# (1) Entry checks
758
762
@req base_space (m) isa NormalToricVariety " Computation of well-quantized G4-fluxes only supported for toric base and ambient spaces"
@@ -762,7 +766,7 @@ function well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_amb
762
766
@req is_simplicial (ambient_space (m)) " Computation of well-quantized G4-fluxes only supported for simplicial toric ambient space"
763
767
end
764
768
if has_attribute (m, :well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_ambient_space_models_of_g4_fluxes )
765
- return get_attribute (m, :well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_ambient_space_models_of_g4_fluxes )
769
+ return get_attribute (m, :well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_ambient_space_models_of_g4_fluxes ):: Tuple{QQMatrix, QQMatrix}
766
770
end
767
771
768
772
@@ -783,25 +787,27 @@ function well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_amb
783
787
784
788
785
789
# (3) Are intersection numbers known?
786
- inter_dict = Dict {NTuple{4, Int64}, ZZRingElem} ()
787
- s_inter_dict = Dict {String, ZZRingElem} ()
788
- if has_attribute (m, :inter_dict )
789
- inter_dict = get_attribute (m, :inter_dict )
790
- end
791
- if has_attribute (m, :s_inter_dict )
792
- s_inter_dict = get_attribute (m, :s_inter_dict )
793
- end
790
+ inter_dict = if has_attribute (m, :inter_dict )
791
+ get_attribute (m, :inter_dict )
792
+ else
793
+ Dict {NTuple{4, Int64}, ZZRingElem} ()
794
+ end :: Dict{NTuple{4, Int64}, ZZRingElem}
795
+ s_inter_dict = if has_attribute (m, :s_inter_dict )
796
+ get_attribute (m, :s_inter_dict )
797
+ else
798
+ Dict {String, ZZRingElem} ()
799
+ end :: Dict{String, ZZRingElem}
794
800
795
801
796
802
# (4) Obtain critical information - this may take significant time!
797
803
ambient_space_flux_candidates_basis = ambient_space_models_of_g4_fluxes (m, check = check)
798
804
list_of_base_divisor_pairs_to_be_considered = Oscar. _ambient_space_base_divisor_pairs_to_be_considered (m)
799
- ambient_space_flux_candidates_basis_indices = get_attribute (m, :ambient_space_models_of_g4_fluxes_indices )
805
+ ambient_space_flux_candidates_basis_indices = get_attribute (m, :ambient_space_models_of_g4_fluxes_indices ):: Vector{Tuple{Int64, Int64}}
800
806
list_of_divisor_pairs_to_be_considered = Oscar. _ambient_space_divisor_pairs_to_be_considered (m)
801
807
802
808
803
809
# (5) The following is fragile, but hopefully is a starting point
804
- exceptional_divisor_positions = findall (x -> occursin (r" ^e\d +$" , x), string .(gS ))
810
+ exceptional_divisor_positions = findall (x -> occursin (r" ^e\d +$" , x), string .(symbols (S) ))
805
811
806
812
807
813
# (6) Work out the relevant intersection numbers to tell if a flux is vertical
@@ -845,7 +851,7 @@ function well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_amb
845
851
846
852
# Cover all other case with generic, but potentially painfully slow methodology.
847
853
tds = torusinvariant_prime_divisors (ambient_space (m))
848
- cds = [cohomology_class (tds[i] ) for i in 1 : length ( tds) ]
854
+ cds = [cohomology_class (td ) for td in tds]
849
855
pt_class = cohomology_class (anticanonical_divisor_class (ambient_space (m)))
850
856
for i in 1 : length (ambient_space_flux_candidates_basis)
851
857
@@ -926,7 +932,7 @@ function well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_amb
926
932
927
933
# Cover all other case with generic, but potentially painfully slow methodology.
928
934
tds = torusinvariant_prime_divisors (ambient_space (m))
929
- cds = [cohomology_class (tds[i] ) for i in 1 : length ( tds) ]
935
+ cds = [cohomology_class (td ) for td in tds]
930
936
pt_class = cohomology_class (anticanonical_divisor_class (ambient_space (m)))
931
937
for i in 1 : length (ambient_space_flux_candidates_basis)
932
938
condition = Vector {ZZRingElem} ()
@@ -981,6 +987,6 @@ function well_quantized_and_vertical_and_no_non_abelian_gauge_group_breaking_amb
981
987
982
988
983
989
# (12) Finally, return the result
984
- return res
990
+ return res:: Tuple{QQMatrix, QQMatrix}
985
991
986
992
end
0 commit comments