Commit Graph

483 Commits

Author SHA1 Message Date
Marek Kaluba 84bfbd7408
remove threading in == for Automorphisms 2021-05-16 23:16:35 +02:00
Marek Kaluba 5da33782aa
add new_transvections for Aut(F_n) 2021-05-16 22:47:20 +02:00
Marek Kaluba f4858fba14
move normalform! to equality_data
heuristic: compute normalform! only if length of automorphism is greater 
than 8
2021-05-16 22:30:50 +02:00
Marek Kaluba 6405a1868e
rename _hashing_data to equality_data 2021-05-16 22:27:54 +02:00
Marek Kaluba 472e78af27
generalize signatures of wlmetric_ball 2021-05-09 19:37:26 +02:00
Marek Kaluba 217be597c3
first working version of new AutomoprhismGroups 2021-05-09 18:54:29 +02:00
Marek Kaluba 31a0620da3
add literal_pow(^, s::GSymbol, ::Val{-1}) = inv(s) 2021-05-07 18:16:58 +02:00
Marek Kaluba 6e14d30903
move rewrite_from_left!(v, w, ::Alphabet) to KnuthBendix.jl 2021-05-07 18:15:02 +02:00
Marek Kaluba 4c8eccf72b
new iteration based on OrderedSet 2021-05-07 18:14:13 +02:00
Marek Kaluba cdd36f680a
new hashing && bitflags 2021-05-07 18:11:11 +02:00
Marek Kaluba 44df0016bc
add general FPGroups 2021-05-05 02:35:12 +02:00
Marek Kaluba be1602d11f
fix gens 2021-05-05 02:33:36 +02:00
Marek Kaluba 288f06c070
add rewriting function to AbstractFPGroups 2021-05-05 02:32:27 +02:00
Marek Kaluba 9d7596acf1
first try on the new FPGroups 2021-05-05 01:10:28 +02:00
Marek Kaluba 711988b98a
sort out imports + first adjustments to Group Interface 2021-04-11 18:44:03 +02:00
Marek Kaluba 990c8dd1c3
remove DirectPower, WreathProduct
these are included in GroupsCore
2021-04-11 01:27:01 +02:00
kalmarek ad295fd436
fix iteration over Automorphisms 2020-11-10 17:03:10 +01:00
kalmarek 59272b3b42
fix error in wlmetric_ball_serial 2020-10-09 17:37:57 +02:00
kalmarek 2d66b4f56e
format and bump to 0.5.0 2020-10-09 14:01:59 +02:00
kalmarek 837312d020
more threading using ThreadsX;
rename generate_balls → wlmetric_ball
2020-10-09 13:50:11 +02:00
kalmarek 8923912367
get rid of Markdown docstrings 2020-10-07 03:10:10 +02:00
kalmarek 1c659d5216
asynchronously compute images in == for Automorphisms 2020-10-07 02:40:18 +02:00
kalmarek 38fbed7f76
improvements in freereduce 2020-10-07 02:39:00 +02:00
kalmarek a4e0b821b9
use rmul!/lmul! in the definitions of R/LTransvect 2020-10-07 02:38:22 +02:00
kalmarek 8532767170
rework hashing using hints from FNV-1a algorithm 2020-10-07 02:37:29 +02:00
kalmarek 873361af73
allow numbers > 9 in subscriptify 2020-10-07 02:33:58 +02:00
kalmarek 512394e69b
fix: dealias inv(id) from id 2020-04-20 03:25:25 +02:00
kalmarek cdbd483e9e
more tests for AutGroup 2020-04-20 02:41:24 +02:00
kalmarek a6aabf4541
even more tests 2020-04-20 02:02:57 +02:00
kalmarek 38f121d8ee
Merge pull request #8 from kalmarek/enh/github_actions
add github workflow runtests
2020-04-20 01:02:47 +02:00
kalmarek 7517a8feb9
tests and imports for findlast, findprev 2020-04-20 00:52:06 +02:00
kalmarek dfce36c099
add tests for iteration for GWords 2020-04-20 00:36:35 +02:00
kalmarek 5b1ab66797
rework push!, pushfirst!, append!, prepend! and rmul! 2020-04-19 23:50:13 +02:00
kalmarek 7bc26ece79
fix bug in reduce!(::Automorphism) 2020-03-25 16:25:21 +01:00
kalmarek 6d22c82ab3
create a general/saner homomorphism evaluation architecture 2020-03-25 15:43:38 +01:00
kalmarek ebefc7e399
reshuffle AutGroup 2020-03-25 15:42:20 +01:00
kalmarek 0bee697ed8
update to AbstractAlgebra v0.9 2020-03-25 13:48:44 +01:00
kalmarek 622f5bc6b3
fix coercion to FPGroup 2020-03-25 13:46:32 +01:00
kalmarek ac4ee69fc6
general cleanup 2020-03-25 05:24:34 +01:00
kalmarek b125871697
unify the two definitions of generate_balls; rename to metric_ball 2020-03-25 05:23:06 +01:00
kalmarek 12be3b75bc
add missing constructors and converts 2020-03-25 05:21:57 +01:00
kalmarek f8aedc207f
make FPGroups more connected to their freepreimages 2020-03-25 05:00:16 +01:00
kalmarek 2196b7d256
find and replace, finally 2020-03-25 04:42:47 +01:00
kalmarek afa0988ebc
separate arithmetic 2020-03-25 04:41:23 +01:00
kalmarek e84152a9cf
separate hashing and freereduce 2020-03-25 04:40:14 +01:00
kalmarek 43ad81d4dd
separate GWords 2020-03-25 04:19:02 +01:00
kalmarek 263444c2a9
add basic fallbacks 2020-03-25 04:16:21 +01:00
kalmarek b92276ade2
separate GSymbols 2020-03-25 04:05:28 +01:00
kalmarek 5f0a33d335
overhaul findnext, findprev and replace 2020-03-25 03:54:12 +01:00
kalmarek 9bb2aba6f6
add issubword, issubsymbol 2020-03-25 03:38:33 +01:00
kalmarek f7bf1598ee
make multiplication abstract 2020-03-25 03:36:36 +01:00
kalmarek a3db467bd1
make one fully abstract method 2020-03-25 03:33:43 +01:00
kalmarek 99d5bc2f8c
fast equality for Automorphisms 2020-03-25 03:28:45 +01:00
kalmarek 8248039d63
simplify actions of PermAut and FlipAut 2020-03-25 00:51:53 +01:00
kalmarek a1ebf530f4
in automoprhism evaluation no need to freereduce!
Symbols already do so, where appropriate
2020-03-25 00:47:45 +01:00
kalmarek b9c2a90bae
rename *_autsymbol to more descriptive names 2020-03-25 00:46:23 +01:00
kalmarek 02ce259eb4
rewrite simplifyperms! in the new word api 2020-03-25 00:43:04 +01:00
kalmarek 6c53b3b7c0
favour append! and prepend! in place of rmul! and lmul! 2020-03-25 00:42:23 +01:00
kalmarek 189850858f
add to syllables commit 2020-03-25 00:38:07 +01:00
kalmarek bc1063f0fd
use the new reduce for Automorphisms and FPWords 2020-03-25 00:27:47 +01:00
kalmarek 8688d42250
reduce defaults to freereduce now 2020-03-24 23:56:30 +01:00
kalmarek 8abebbbd0c
use the new api in freereduce! 2020-03-24 23:55:42 +01:00
kalmarek b2d6c14515
use syllables api for GWords 2020-03-24 23:53:29 +01:00
kalmarek 7b211014e3
create and use uniform API for GSymbols 2020-03-24 23:47:50 +01:00
kalmarek 5810eeb4ae
create uniform hash interface using hash_internal 2020-03-24 23:44:03 +01:00
kalmarek 920bc1f28d
fix evaluate 2020-03-14 08:56:26 -07:00
kalmarek 68abfafd29
introduce evaluate function 2020-03-12 18:36:17 -05:00
kalmarek 6fd89c5a61
tweak the reduce! constant 2020-03-12 18:35:53 -05:00
kalmarek 5414988e98
periodically reduce words in automorphism evaluation
to avoid exponential explosion in length (when possible)
2020-03-12 00:18:33 -05:00
kalmarek 4bcd851031
fix FPGroups and add basic tests 2019-11-15 23:56:36 +01:00
kalmarek dd4ed1497c
move from G() to Base.one(G) 2019-11-14 09:21:11 +01:00
kalmarek 32e968a79b
small update to hashing Automorphisms 2019-11-14 09:20:23 +01:00
kalmarek 8a42e33b6d
update to AA-v0.7 → bump to v0.2.3 2019-10-30 16:25:09 +01:00
kalmarek 998a9cdf43
remove MltGrp/AddGrp 2019-10-30 16:22:58 +01:00
kalmarek fc4b01a193
broaden signature of generate_balls to include NCRingElems 2019-06-30 19:55:56 +02:00
kalmarek 54825b4964
add AbstractAlgebra.mul! 2019-06-05 10:58:44 +02:00
femtocleaner[bot] be7b401762 Fix deprecations 2018-09-26 18:03:07 +00:00
kalmarek 883b85a7dc re-parametrize WreathProducts 2019-01-09 16:44:04 +01:00
kalmarek d579dd8f35 widen generate_balls's signature 2019-01-09 16:43:44 +01:00
kalmarek 1aa64647c8 replace strings with Symbols 2019-01-03 03:37:37 +01:00
kalmarek 3cc6262356 simplify type of AutSymbols 2019-01-03 03:37:02 +01:00
kalmarek 44f08716d2 iterate directly over groups (removes `elements`) 2019-01-02 15:49:52 +01:00
kalmarek 4dcc9121a0 don't use try-catch in constructing WreatProductElements 2019-01-02 15:48:38 +01:00
kalmarek 74a559a17b change WreathProducts accordingly 2019-01-02 15:47:58 +01:00
kalmarek e8b90ab54a base DirectPowerElem on N-tuples 2019-01-02 15:45:46 +01:00
kalmarek 38e327c385 replace DirectProduct -> DirectPower 2019-01-02 10:30:25 +01:00
kalmarek 3b1694f851 iteration for GFField 2018-09-21 19:10:28 +02:00
kalmarek 37af8ec218 remove automatic AdditiveGroup from WreathProductElem 2018-09-21 19:08:21 +02:00
kalmarek 68763ca37b fix warnings with ^(..., n::Integer) 2018-09-21 18:47:02 +02:00
kalmarek b5af5fc9b5 remove "Base.{...}" 2018-09-21 18:46:17 +02:00
kalmarek fbc4d8aec7 fix problems with importing × 2018-09-21 18:36:13 +02:00
kalmarek 46e2dc5faf the new iterator protocol for AddGrp and MltGrp 2018-09-21 18:34:50 +02:00
kalmarek 0750a47853 rework DirectProdIter to the new iteration protocol 2018-09-21 18:14:48 +02:00
kalmarek e28c296bce PermGroup is iterable in AbstractAlgebra master 2018-09-21 18:10:34 +02:00
kalmarek 0286ca7c4d replace converts by constructors 2018-09-21 18:09:13 +02:00
kalmarek 77efcdff3e trivial changes for julia-0.7 2018-09-21 18:08:44 +02:00
kalmarek e6d67ca3f7 add DirectPowerIter struct to iterate over DirectProduct 2018-08-08 14:12:55 +02:00
kalmarek 60c04f0dbd fix type instability in domain 2018-08-07 23:51:15 +02:00
kalmarek 84d601817c avoid creation of parent in perm_autsymbol and skip perm check 2018-08-01 23:21:47 +02:00
kalmarek 87a7285ba5 don't use length for permutation 2018-08-01 22:39:43 +02:00
kalmarek d373a0c7c2 add comment why specialized deepcopy for GWords is necessary 2018-07-30 15:20:12 +02:00
kalmarek 7f25d96038 Automorphism: initialize hash to 0x0 2018-07-30 15:19:18 +02:00
kalmarek e9ae22cfe9 convenience (S)Aut(G) and (G::WreathProduct)(n,p) constructors 2018-07-30 15:01:20 +02:00
kalmarek 0a20c5bb73 change hashing constant for reproducible hash of Automorphisms 2018-07-30 15:00:02 +02:00
kalmarek 192230c8d3 throw uniformly DomainError on check 2018-07-30 14:59:11 +02:00
kalmarek 0de75f1262 convenience constructors for DirectProduct 2018-07-30 14:56:28 +02:00
kalmarek 8a40d76143 add setindex!(::DirectProductGroupElem) 2018-07-30 14:54:54 +02:00
kalmarek 5ac1ea7ba8 rename Automorphism.typ -> Automorphism.fn 2018-07-30 14:54:09 +02:00
kalmarek d78f1ec38a remove specialized deepcopy 2018-07-30 14:53:20 +02:00
kalmarek 78abdc3181 fix elem_types: they dispatch on TYPE of parent 2018-07-30 14:07:42 +02:00
kalmarek 1783ba5065 fix indentation 2018-07-30 14:05:47 +02:00
kalmarek 0ab4df2ce5 WreathProduct uses the additive group of a ring by default 2018-07-30 14:03:51 +02:00
kalmarek 93253115ab Introduce AddGrp, MltGrp etc.
for the additive group of a ring.
2018-07-30 14:03:04 +02:00
kalmarek fe0e22f0bf align to perms acting on the right 2018-07-30 13:54:15 +02:00
kalmarek 158ce5ee27 replace Nemo -> AbstractAlgebra 2018-07-30 08:30:27 +02:00
kalmarek 1597784ac5 add the standard linear representation for Automorphisms 2018-04-10 13:14:45 +02:00
kalmarek df554480ea parametrize WreathProduct over Integers 2018-04-10 13:09:50 +02:00
kalmarek f2fb7f53cd move ==(::GSymbol, ::GSymbol) to Groups.jl 2018-04-09 13:00:50 +02:00
kalmarek b8abe64656 Parametrise Automorphisms on Integer type 2018-04-09 12:59:47 +02:00
kalmarek 3ac9231032 replace free_reduce! -> freereduce! 2018-04-02 18:19:55 +02:00
kalmarek 3ff1f1897e fix simplify_perms! → simplifyperms!
Currently it passes twice over W.symbols, but should be correct
2018-04-02 18:18:12 +02:00
kalmarek f9ede91343 replace delete_ids! -> deleteids! 2018-04-02 18:15:12 +02:00
kalmarek c880b51346 remove isone(::GSymbol) 2018-03-29 19:37:32 +02:00
kalmarek d1db939a63 newnew version of hash and == 2018-03-29 19:24:15 +02:00
kalmarek d83af99fbc rework reduce! and sumplify_perms! using delete_ids! 2018-03-29 19:23:24 +02:00
kalmarek 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
kalmarek eed218da3c rework hash, == 2018-03-28 12:28:47 +02:00
kalmarek e6b1b2a663 make id always have length 0 2018-03-28 12:21:50 +02:00
kalmarek f493ed7283 rewrite simplify_perms! 2018-03-28 12:20:03 +02:00
kalmarek 6b0499005f rename field of PermAut p->perm 2018-03-28 12:19:18 +02:00
kalmarek 17958fbd2c accomodate to abstract GWord{T} 2018-03-27 21:48:36 +02:00
kalmarek fc879f068b clean-up findfirst, findnext 2018-03-27 21:48:02 +02:00
kalmarek 3a6506ae40 is_subsymbol -> issubsymbol 2018-03-27 21:31:23 +02:00
kalmarek 57dfc05221 shift documentation and GWord{T} definition 2018-03-27 21:30:36 +02:00
kalmarek 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
kalmarek 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
kalmarek ffd5bbdc19 remove savedimage: Automorphism becomes prohibitively large 2018-03-27 18:23:43 +02:00
kalmarek 9e053df1a8 Add needed convert to Automorhphism{N} 2018-03-26 07:29:41 +02:00
kalmarek 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
kalmarek 0b800b5366 move includes to the top of the file 2018-03-26 07:25:32 +02:00
kalmarek 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
kalmarek 02d947899f immutable -> struct 2018-03-25 19:13:30 +02:00
kalmarek c89ffbb4b4 constructing NTuple is faster than deepcopying it? 2018-03-25 19:12:29 +02:00
kalmarek 0233aedc41 use perms{Int8} in AutGroup and in tests 2018-03-22 17:24:23 +01:00
kalmarek 203e084ff3 don't print overly long presentations 2018-03-22 10:49:52 +01:00
kalmarek d834935d05 be more specific on the type of objectGroup in AutGroup 2018-03-22 10:49:31 +01:00
kalmarek c8f0ee04da automorphisms apply in-place 2018-03-21 19:23:13 +01:00
kalmarek dd4d23189b domain(G::AutGroup) returns deepcopy of G.domain 2018-03-21 19:22:09 +01:00
kalmarek 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
kalmarek 181073b517 use domain in hash and == 2018-03-17 05:09:09 +01:00