b5af5fc9b5
remove "Base.{...}"
2018-09-21 18:46:17 +02:00
fbc4d8aec7
fix problems with importing ×
2018-09-21 18:36:13 +02:00
46e2dc5faf
the new iterator protocol for AddGrp and MltGrp
2018-09-21 18:34:50 +02:00
0750a47853
rework DirectProdIter to the new iteration protocol
2018-09-21 18:14:48 +02:00
e28c296bce
PermGroup is iterable in AbstractAlgebra master
2018-09-21 18:10:34 +02:00
0286ca7c4d
replace converts by constructors
2018-09-21 18:09:13 +02:00
77efcdff3e
trivial changes for julia-0.7
2018-09-21 18:08:44 +02:00
e6d67ca3f7
add DirectPowerIter struct to iterate over DirectProduct
2018-08-08 14:12:55 +02:00
60c04f0dbd
fix type instability in domain
2018-08-07 23:51:15 +02:00
84d601817c
avoid creation of parent in perm_autsymbol and skip perm check
2018-08-01 23:21:47 +02:00
87a7285ba5
don't use length for permutation
2018-08-01 22:39:43 +02:00
d373a0c7c2
add comment why specialized deepcopy for GWords is necessary
2018-07-30 15:20:12 +02:00
7f25d96038
Automorphism: initialize hash to 0x0
2018-07-30 15:19:18 +02:00
e9ae22cfe9
convenience (S)Aut(G) and (G::WreathProduct)(n,p) constructors
2018-07-30 15:01:20 +02:00
0a20c5bb73
change hashing constant for reproducible hash of Automorphisms
2018-07-30 15:00:02 +02:00
192230c8d3
throw uniformly DomainError on check
2018-07-30 14:59:11 +02:00
0de75f1262
convenience constructors for DirectProduct
2018-07-30 14:56:28 +02:00
8a40d76143
add setindex!(::DirectProductGroupElem)
2018-07-30 14:54:54 +02:00
5ac1ea7ba8
rename Automorphism.typ -> Automorphism.fn
2018-07-30 14:54:09 +02:00
d78f1ec38a
remove specialized deepcopy
2018-07-30 14:53:20 +02:00
78abdc3181
fix elem_types: they dispatch on TYPE of parent
2018-07-30 14:07:42 +02:00
1783ba5065
fix indentation
2018-07-30 14:05:47 +02:00
0ab4df2ce5
WreathProduct uses the additive group of a ring by default
2018-07-30 14:03:51 +02:00
93253115ab
Introduce AddGrp, MltGrp etc.
...
for the additive group of a ring.
2018-07-30 14:03:04 +02:00
fe0e22f0bf
align to perms acting on the right
2018-07-30 13:54:15 +02:00
158ce5ee27
replace Nemo -> AbstractAlgebra
2018-07-30 08:30:27 +02:00
1597784ac5
add the standard linear representation for Automorphisms
2018-04-10 13:14:45 +02:00
df554480ea
parametrize WreathProduct over Integers
2018-04-10 13:09:50 +02:00
f2fb7f53cd
move ==(::GSymbol, ::GSymbol) to Groups.jl
2018-04-09 13:00:50 +02:00
b8abe64656
Parametrise Automorphisms on Integer type
2018-04-09 12:59:47 +02:00
3ac9231032
replace free_reduce! -> freereduce!
2018-04-02 18:19:55 +02:00
3ff1f1897e
fix simplify_perms! → simplifyperms!
...
Currently it passes twice over W.symbols, but should be correct
2018-04-02 18:18:12 +02:00
f9ede91343
replace delete_ids! -> deleteids!
2018-04-02 18:15:12 +02:00
c880b51346
remove isone(::GSymbol)
2018-03-29 19:37:32 +02:00
d1db939a63
newnew version of hash and ==
2018-03-29 19:24:15 +02:00
d83af99fbc
rework reduce! and sumplify_perms! using delete_ids!
2018-03-29 19:23:24 +02:00
40cf8a4e9f
new version of reduce! and free_reduce using delete_ids!
...
delete_ids requires second pass of W.symbols, but is so much easier to
get it right!
2018-03-29 19:19:34 +02:00
eed218da3c
rework hash, ==
2018-03-28 12:28:47 +02:00
e6b1b2a663
make id always have length 0
2018-03-28 12:21:50 +02:00
f493ed7283
rewrite simplify_perms!
2018-03-28 12:20:03 +02:00
6b0499005f
rename field of PermAut p->perm
2018-03-28 12:19:18 +02:00
17958fbd2c
accomodate to abstract GWord{T}
2018-03-27 21:48:36 +02:00
fc879f068b
clean-up findfirst, findnext
2018-03-27 21:48:02 +02:00
3a6506ae40
is_subsymbol -> issubsymbol
2018-03-27 21:31:23 +02:00
57dfc05221
shift documentation and GWord{T} definition
2018-03-27 21:30:36 +02:00
7139322d05
New version of hash and ==
...
evaluation of Automorphism on the standard basis is expensive
in hash(g::Automorphism, h::UInt) we
1. compute and store savedhash (evaluating f, if necessary) with a fixed value HASHINGCONST
2. xor h with savedhash
in == we evaluate f only at hash-colision (or when
This way we evaluate f multiple times only in ~2% of cases (for SAut(F_4))
2018-03-27 20:14:24 +02:00
6a7bb03d73
no need to store initial value of savedhash
...
it must be accessed after checking the modified filed
2018-03-27 18:24:40 +02:00
ffd5bbdc19
remove savedimage: Automorphism becomes prohibitively large
2018-03-27 18:23:43 +02:00
9e053df1a8
Add needed convert to Automorhphism{N}
2018-03-26 07:29:41 +02:00
a7bf32145c
replace AutGroupElem with Automorphism{N} <: GWord{AutSymbol}
...
this allows to store in the Automorphism struct
precomputed hash and
image of the canonical basis
2018-03-26 07:26:48 +02:00
0b800b5366
move includes to the top of the file
2018-03-26 07:25:32 +02:00
6939c0f00a
introduce GroupWord{T} <: GWord{T<:GSymbol}
...
This allows subtyping of GWord{T} with more specific group elements
2018-03-26 07:24:37 +02:00
02d947899f
immutable -> struct
2018-03-25 19:13:30 +02:00
c89ffbb4b4
constructing NTuple is faster than deepcopying it?
2018-03-25 19:12:29 +02:00
0233aedc41
use perms{Int8} in AutGroup and in tests
2018-03-22 17:24:23 +01:00
203e084ff3
don't print overly long presentations
2018-03-22 10:49:52 +01:00
d834935d05
be more specific on the type of objectGroup in AutGroup
2018-03-22 10:49:31 +01:00
c8f0ee04da
automorphisms apply in-place
2018-03-21 19:23:13 +01:00
dd4d23189b
domain(G::AutGroup) returns deepcopy of G.domain
2018-03-21 19:22:09 +01:00
49198dfdf4
use append! and prepend! instead of push! and unshift!
...
This also fixes a bug in l_multiply!
2018-03-21 19:21:03 +01:00
181073b517
use domain in hash and ==
2018-03-17 05:09:09 +01:00
acb1dbe6c8
use tuples in evaluation of AutSymbols
2018-03-17 05:08:42 +01:00
6a59c53c8f
add domain field to AutGroup
2018-03-17 05:01:21 +01:00
03b7590faa
fix merging master
2017-11-15 20:43:09 +01:00
c18e2156b5
Merge branch 'master' into enh/julia-v0.6
2017-11-15 20:34:30 +01:00
36279d2601
generate_balls for RingElem
2017-11-08 11:51:26 +01:00
99c07c6909
allow precompilation of the module
2017-11-08 09:06:50 +01:00
78881e1d79
more economical generate_balls using Base.product
2017-11-05 14:58:58 +01:00
04d1591c7d
actually cache and use savedhash + tests
2017-10-27 16:16:43 +02:00
5945462d45
no need for ispermauto function
...
handled easily by isa(..., PermAut)
2017-10-27 16:15:33 +02:00
5c14edc53c
update change_pow to the new AutSymbol
2017-10-27 16:14:28 +02:00
329e481d24
move getperm
2017-10-27 16:13:45 +02:00
0144c49372
AutSymbol evaluation -- much simpler
...
due to automorphism type carried as an attribute
2017-10-27 16:12:28 +02:00
3d2bc63723
creating AutSymbols
2017-10-27 16:11:18 +02:00
5f224f6713
Evaluation of {R,L}Transvec, PermAut, FlipAut types
2017-10-27 16:10:04 +02:00
e6a0ffd3d6
AutSymbol carries automorphism type, not expression
2017-10-27 16:09:23 +02:00
c593522ab9
fix the AutGroup gens
2017-10-24 15:27:43 +02:00
23d3787e34
evaluate AutSymbol
2017-10-24 15:26:27 +02:00
54e8eb0b43
remove .func field from autsymbol
2017-10-24 15:25:37 +02:00
30f44cca71
remove outer keyword (it was wrong!)
2017-10-04 21:34:59 +02:00
261f7761eb
use the new Nemo.Generic module
2017-09-15 18:54:32 +02:00
2e208032d2
use the new 0.6 syntax: structs, where etc.
...
one test broken
2017-09-13 16:47:31 +02:00
29d1b8364d
fix deprecation warnings
2017-09-13 15:48:40 +02:00
32a76f9efa
remove Compat
2017-09-13 11:22:21 +02:00
36b87c12fa
Merge branch 'master' into enh/julia-v0.6
...
# Conflicts:
# src/FPGroups.jl
2017-09-13 11:17:42 +02:00
a71f99670c
deepcopy S to avoid external changes
2017-08-08 19:15:55 +02:00
2e6372576e
argument name is not used in elem_type
2017-07-23 17:07:21 +02:00
cac6305852
trivial changes in docs
2017-07-23 17:04:22 +02:00
166c4c217b
parent_type dispatches after Type of element
2017-07-23 17:01:11 +02:00
b04a472063
combine * and inv under "Group Operations" label
2017-07-23 03:24:40 +02:00
251fdd4afa
fix setindex!
2017-07-23 03:24:05 +02:00
aad2907c51
fix: WreathProductElem is typed only after GroupElem
2017-07-21 17:14:55 +02:00
b7151d1fc2
docs
2017-07-21 16:05:49 +02:00
6fa01d87ef
faster versions of * and inv for products of rings
2017-07-21 16:04:45 +02:00
6f08259466
Don't multiply if not necessary -> directly create element
2017-07-21 16:04:11 +02:00
d668574805
parent is constructable, don't use it in hash
2017-07-21 16:03:26 +02:00
c60e5a8c5c
reworked inv + doc
2017-07-21 16:02:44 +02:00
70a8a9b72d
get rid of the old parent stuff
2017-07-21 16:02:07 +02:00
0519d06baa
add check argument to WreathProductElem constructor
2017-07-21 16:01:22 +02:00
36a0e8593d
new multiplication
2017-07-21 15:59:47 +02:00
620b970f62
merge Binary operators and Inversion as Group operations
2017-07-21 14:33:53 +02:00
354da78769
clean-up show
2017-07-21 14:31:05 +02:00
68df946c81
don't construct parent(::WreatProductElem) when not necessary
2017-07-21 14:30:48 +02:00
7c1a96b64e
don't compare parents when parents are constructable
2017-07-21 14:29:38 +02:00
89b89f13a5
there is no parent field
2017-07-21 14:23:47 +02:00
b89e60e508
standard outer constructors for WreathProduct{Elem}
2017-07-21 13:40:54 +02:00
06a4e50a2d
don't compute G.N(p.n) and G.P(g.p) twice when coercing
2017-07-21 13:37:28 +02:00
4fa7d744c2
parent(WreathProductElem) is now computed on the fly ==> slow
2017-07-21 13:36:39 +02:00
a6f0685313
concrete updates to elem_type, parent_type
2017-07-21 13:36:04 +02:00
fa996d68fb
make WreathProduct{Elem} concrete & immutable
...
parametrize by WreathProduct{Elem} by T<:Group{Elem}
2017-07-21 13:34:57 +02:00
125e4a5263
remove eye
2017-07-21 13:32:34 +02:00
16f3b6b44e
update elements, order
2017-07-21 13:32:14 +02:00
83f9ed61b8
multiple dispatch style solutions for * and inv for rings
2017-07-21 13:30:35 +02:00
ca23485b5e
trivial updates to show, ==
2017-07-21 13:29:12 +02:00
610defe354
update hash according to changes in type
2017-07-21 13:27:54 +02:00
7989967cc4
vararg version of overload -- with mandatory checking
2017-07-21 13:27:27 +02:00
10022fd31c
DirectProductGroup overloads: with vector and GroupElem
2017-07-21 13:27:00 +02:00
ba4400efbb
optionally coerce to G when called G(a::Vector)
2017-07-21 13:25:34 +02:00
ae97c20e62
update \times outer constructor
2017-07-21 13:24:14 +02:00
6820274f65
handled by inner constructor
2017-07-21 13:22:47 +02:00
7f67a68176
compute parent of element as needed ==> avoid calling parent(g)
2017-07-21 13:21:38 +02:00
7f1b6f61d0
fine tuned elem_type, parent_type
2017-07-21 13:20:31 +02:00
d02c5afc65
store only single factor and multiplicity in DirectProductGroup
2017-07-21 13:19:56 +02:00
a78e4ccea2
spacing
2017-07-16 21:43:43 +02:00
d2cb646119
use additive group for objects involving Rings
2017-07-12 21:12:23 +02:00
a5a67bd7d3
operations field is no more
2017-07-12 21:11:12 +02:00
674fa9f9d3
never access parent filed directly
2017-07-12 21:10:31 +02:00
a3eeee0728
AbstractVector interface for DirectProductGroupElem
2017-07-12 21:10:01 +02:00
799878ded5
Brave new constructors
2017-07-12 21:09:26 +02:00
6b84254416
typed elem_type
2017-07-12 21:06:07 +02:00
78eded0124
construct parent object on the fly
2017-07-12 21:05:55 +02:00
8631e5d16b
type DirectProductGroup/Elems after type of single factor
...
This limits the scope of DirectProductGroup/Elems to pure direct products
2017-07-12 21:05:21 +02:00
2b59b5c89f
Merge branch 'enh/FPGroups'
2017-07-06 17:30:56 +02:00
df19042de6
initial @compat changes, works on v0.6 without warnings
2017-07-06 17:27:56 +02:00
32f07e1315
git fix typealias
2017-07-06 10:04:39 +02:00
b61c06cd96
Merge branch 'enh/FPGroups'
2017-07-06 09:55:40 +02:00
ff7bbe8e21
allow for different group operation in generate_balls/products
2017-07-06 09:45:14 +02:00
02c1022846
use @compat for types, etc
2017-07-06 09:22:56 +02:00
4bb3c9df4f
don't export generators, it's been replaced by gens
2017-07-06 09:20:43 +02:00
e0af8ded6e
adjust to changes in replace_all
2017-07-06 09:19:53 +02:00
18ad0a04b6
replace_all! returns if any modification has been performed
2017-07-06 09:18:53 +02:00
95ac3940d7
FreeGroup and AutGroup are AbstractFPGroups
2017-07-06 09:17:17 +02:00
8e9b9d5603
include the FPGroups.jl file
2017-07-06 09:12:35 +02:00
345e066664
change in doc
2017-07-06 09:11:56 +02:00
04b07eb260
define gens(::AbstractFPGroup)
2017-07-06 09:11:27 +02:00
ffa9cc4cd2
add_rel! and quotientgroup are implemented in FPGroups.jl
2017-07-06 09:10:32 +02:00
f395af242b
add FPGroups.jl file
2017-07-06 09:09:49 +02:00
ab31d8fca1
add AbstractFPGroup <: Group abstract type
2017-07-06 09:09:24 +02:00
4b68fe745f
docstring for gens function
2017-07-06 09:05:24 +02:00
392214b697
fix: don't shadow gens function
2017-07-06 09:04:48 +02:00
5d51855d17
add unified gens(G::FPGroup) function
2017-07-05 16:26:14 +02:00
08ebec118f
formatting
2017-07-05 16:22:50 +02:00
cc1d662814
fix non-parametrised dispatch of replace_all
2017-07-05 16:18:37 +02:00
6c8591b1d4
fix the replace! function in case length(toreplace)= 1
2017-07-05 16:18:04 +02:00
5a9d4b4bb6
add missing cases for find first (length =0, 1)
2017-07-05 16:16:47 +02:00
613ec172bd
add xor for 0.5 compatibility
2017-07-05 13:56:01 +02:00
1bfbd574ee
use xor(,) instead of $
2017-07-04 17:16:06 +02:00
9626d16da9
merge modules DirectProducts, WreathProducts into Groups
2017-06-22 15:04:51 +02:00
00f5fc1f23
add DirectProducts and WreathProducts
2017-06-22 14:21:25 +02:00
17888437ff
specialise generate_balls, products
2017-06-05 17:32:20 +02:00
1d3017389f
add quotes in docstring
2017-05-19 10:35:29 +02:00
64d5466aa7
rename variables to less confusing names
2017-05-18 12:21:31 +02:00
3776e947a3
extend parent_type, elem_type from Nemo (i.e. import)
2017-05-17 17:47:13 +02:00
c03882ae69
add Misc category with: products, generate_balls
2017-05-17 17:46:30 +02:00
f505b00502
deepcopy_internal is handled in Groups.jl
2017-05-15 17:29:47 +02:00
7db7119a29
show for AutGroup
2017-05-15 17:29:12 +02:00
9395c8e2f0
more accurate show for FreeGroup
2017-05-15 17:28:58 +02:00
d3a9f8d3f6
perm_autsymbol(::Vector{Int}) convenience function
2017-05-15 17:23:49 +02:00
9606a14743
finish reduce if both simplify_perms! and free_reduce! return true
2017-05-15 17:23:23 +02:00
18ae84d9cd
streamline and adapt simplify_perms!
2017-05-15 17:21:48 +02:00
c20259e1b7
specific hash and == for AutGrouElem (as functions)
2017-05-15 17:20:44 +02:00
3de09cbab5
remove specific deepcopy_internal -- handled by general in Groups.jl
2017-05-15 17:19:59 +02:00
6121c38d7f
separate AutGroup from AutSymbol (functional) overload
2017-05-15 17:09:18 +02:00
b50d7f7a9c
fix display of perm_autsymbols
2017-05-15 17:07:45 +02:00
b65a202bc1
don't export AutSymbol
2017-05-15 17:06:57 +02:00
2d3ed657e7
deepcopy_internal for FreeGroupElems
2017-05-15 09:54:28 +02:00
bdca979fda
add length(::AutSymbol)
2017-05-15 09:54:08 +02:00
c925181116
fieldname is gens not generators
2017-05-15 09:53:53 +02:00
a04fea9a09
make perm_autsymbol use PermutationGroup
2017-05-15 09:53:22 +02:00
26f49ce963
deepcopy_internal of AutGroupElem
2017-05-15 09:52:46 +02:00
82d05315ab
coercion of AutSymbol to AutGroupElem
2017-05-15 09:52:10 +02:00
fbee33153f
more specific AutGroupElem overload
2017-05-15 09:51:35 +02:00
e8ffc55b72
fix the AutGroup constructor
2017-05-15 09:51:03 +02:00
51b7b7a748
another gen -> str
2017-05-15 09:50:26 +02:00
9847f8addf
remove using Permutations, import Base.convert
2017-05-15 09:49:34 +02:00
c5ec6bb15e
rename fieldname gen -> str
2017-05-15 09:48:41 +02:00
90437139cb
iterate over perm.d not over perm itself
2017-05-13 22:09:03 +02:00
51694c4fbf
add FreeGroup(n::Int) convenience
2017-05-12 21:19:08 +02:00
1284ded447
one(AutSymbol) is replaced by id_autsymbol
2017-05-12 21:18:38 +02:00
b955eed67b
But so far we only implemented Aut(FreeGroup)
2017-05-12 20:32:33 +02:00
117eddafd6
AutGroup is a FPGroup
2017-05-12 20:31:00 +02:00
a886929948
FP{Symbol, Group, GroupElem} -> Free{Symbol, Group, GroupElem}
2017-05-12 20:30:42 +02:00
361abed62f
add abstract FPGroup <: Group
2017-05-12 20:29:04 +02:00
1bd2d7fe25
update includes
2017-05-12 20:15:03 +02:00
86ec33b8a0
mv FPGroup.jl -> FreeGroup.jl
2017-05-12 20:14:26 +02:00
195c7c4392
move automorphism_groups.jl -> AutGroup.jl
2017-05-12 20:14:06 +02:00
1fc4405b77
Add headers
2017-05-12 20:11:10 +02:00
ffe0e901b2
Export AutSymbo, AugGroupElem, AutGroup; AutSymbols are internals
2017-05-12 20:10:34 +02:00
53bc7fe05c
add elem_type, parent_type, generators
2017-05-12 20:09:03 +02:00
39d64b7e69
update getperm
2017-05-12 20:08:27 +02:00