{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2602-17350","title":"Shortcut learning in geometric knot classification","arxiv_id":"2602.17350","date":"2026-02-19","proceeding":null,"authors":["Djordje Mihajlovic","Davide Michieletto"],"abstract":"Classifying the topology of closed curves is a central problem in low dimensional topology with applications beyond mathematics spanning protein folding, polymer physics and even magnetohydrodynamics. The central problem is how to determine whether two embeddings of a closed arc are equivalent under ambient isotopy. Given the striking ability of neural networks to solve complex classification tasks, it is therefore natural to ask if the knot classification problem can be tackled using Machine Learning (ML). In this paper, we investigate generic shortcut methods employed by ML to solve the knot classification challenge and specifically discover hidden non-topological features in training data generated through Molecular Dynamics simulations of polygonal knots that are used by ML to arrive to positive classifications results. We then provide a rigorous foundation for future attempts to tackle the knot classification challenge using ML by developing a publicly-available (i) dataset, that aims to remove the potential of non-topological feature classification and (ii) code, that can generate knot embeddings that faithfully explore chosen geometric state space with fixed knot topology. We expect that our work will accelerate the development of ML models that can solve complex geometric knot classification challenges.","url_abs":"https://arxiv.org/abs/2602.17350","url_pdf":"https://arxiv.org/pdf/2602.17350","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2602.17350","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2602.17350"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/djordjepmihajlovic/GEOKNOT","reach":null}],"summary":{"ran_honours":3,"ran_fixture":3,"ran":1,"ran_violates":1,"unverified":3},"by_repo_kind":{"found_in_text":{"samples":11,"ran":8,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"2345a20d231e9b9c","entry":"_fn2_wrapper","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2345a20d231e9b9c"}},{"code_sha256_prefix":"a47327c14a5140de","entry":"check_verticies","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a47327c14a5140de"}},{"code_sha256_prefix":"2df7b53f78174608","entry":"find_new","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2df7b53f78174608"}},{"code_sha256_prefix":"8a99c5b73f71db07","entry":"lattice_writhe_Cimasoni","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8a99c5b73f71db07"}},{"code_sha256_prefix":"335b11f7dc63ae16","entry":"long_range_entanglement","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"335b11f7dc63ae16"}},{"code_sha256_prefix":"37370f909aa28a9f","entry":"metropolis_acceptance","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"37370f909aa28a9f"}},{"code_sha256_prefix":"f275de3fdbcefcc6","entry":"neighbours","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f275de3fdbcefcc6"}},{"code_sha256_prefix":"a749602b557f0d7f","entry":"restricted_neighbours","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a749602b557f0d7f"}},{"code_sha256_prefix":"42bae7b98e3c2cbc","entry":"BFACF","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"42bae7b98e3c2cbc"}},{"code_sha256_prefix":"eff6ba105d35318a","entry":"_fn1_wrapper","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"eff6ba105d35318a"}},{"code_sha256_prefix":"6ef0ec0a68ab7362","entry":"points_on_axis","repo":"djordjepmihajlovic/GEOKNOT","repo_kind":"found_in_text","path":"knot_evolution_hash.py","file_url":"https://github.com/djordjepmihajlovic/GEOKNOT/blob/HEAD/knot_evolution_hash.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6ef0ec0a68ab7362"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}