- First, install Lean and VS Code following these instructions.
- Then you can either:
- Run the following to let leanproject clone and build the repository automatically:
$ leanproject get https://github.com/JOSHCLUNE/Keller_reduction.git - or manually run:
$ git clone https://github.com/JOSHCLUNE/Keller_reduction.git $ cd Keller_reduction $ leanproject build
- Run the following to let leanproject clone and build the repository automatically:
- First, install Lean and VS Code following these instructions.
- Then, navigate to the top level directory and run
leanproject build
To inspect and modify our proofs, install Visual Studio Code or emacs with the Lean extension. This will allows you to inspect the proof states in tactic proofs.
To recompile/typecheck the project after making edits, simply run leanproject build.
Note that if any edits are made to verified_clique.lean or keller_graphs.lean (which verified_clique.lean depends on), then leanproject build will need to rebuild verified_clique.olean which may take up to half an hour. Recompiling/typechecking other files should not take nearly as much time.
This section is included to help readers find various lemmas/theorems/definitions from the paper in the codebase.
pointis defined inhelpers.leanin_cube,cube,is_tiling,is_facesharing, andtiling_faceshare_freeare defined incube_tilings.leanKeller_conjectureis defined inperiodic_reduction.leanKeller_conjecture_false, which shows that Keller's conjecture does not hold in 8 dimensions, is proven inkeller_implies_no_clique.leanKeller_graphandhas_cliqueare defined inkeller_graphs.leanclique_existence_refutes_Keller_conjectureimplements Theorem 3 and is proven inkeller_implies_no_clique.leanclique_nonexistence_implies_Keller_conjectureimplements the contrapositive of Theorem 7 and is proven inno_clique_implies_keller.lean- Lemma 1 is implemented as
tiling_lattice_structureintilings_structure.lean - Definition 1 is represented as
is_periodicinperiodic_tilings.lean - Definitions 2 and 3 don't have direct representations in the codebase, but Definition 4 is represented as
has_periodic_coreinperiodic_tilings.lean is_periodic_of_has_periodic_coreandhas_periodic_core_of_is_periodicare defined inperiodic_tilings.lean- Lemma 2 is implemented as
periodic_reductioninperiodic_reduction.lean - Lemma 2.1 is implemented as
T'_is_tilinginperiodic_reduction.lean - Lemma 2.2 is implemented as
T'_faceshare_freeinperiodic_reduction.lean - Lemma 3.1 is implemented as
tiling_from_clique_is_tilinginkeller_implies_no_clique.lean - Definition 5 is represented as
cubeletinkeller_implies_no_clique.lean - Definition 6 is represented as
valid_core_cubeletinkeller_implies_no_clique.lean - Lemma 3.2 is implemented as
tiling_from_clique_faceshare_freeinkeller_implies_no_clique.lean - Definition 8 is represented as
is_s_discreteins_discrete.lean shiftis implemented asshift_tilingintilings_structure.lean- Definition 7, Lemma 4, Lemma 4.1, and Lemma 5 do not have exact analogs in the codebase because the presentation of this portion of the proof in the paper omitted/simplified some details for the sake of clarity.
- The closest analog to Lemma 4 is
inductive_replacement_lemmainno_clique_implies_keller.lean - The closest analog to Lemma 4.1 is
replacement_lemmaintilings_structure.lean, though the additional reasoning about tilings being s-discrete is done ininductive_replacement_lemma - The closest analog to Lemma 5 is the construction of
goal_cliquedefined inperiodic_tiling_implies_cliqueinno_clique_implies_keller.lean
- The closest analog to Lemma 4 is
- Lemma 6 is implemented as
s_discrete_upper_boundins_discrete.lean - The clique verification described in section 5 is implemented in
verified_clique.lean, culminating in the final theoremG_8_2_has_cliquewhich is used to proveKeller_conjecture_falseinkeller_implies_no_clique.lean
In Section 5.3 of the paper, we reference an alternative verification of the G_8 clique. This verification is included in the Lean4_Clique directory. Specifically, it is included in Lean4_Clique/Clique/Clique.lean. Note that unlike the rest of our code, this verification is implemented in Lean 4, rather than Lean 3.
To compile and edit this code, follow the instructions here and run lake build from the Lean4_Clique/Clique directory. After the code has been compiled, it should be possible to view and edit it using Visual Studio Code's Lean 4 extension.