Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modular Group as a mutual inductive type #214

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

lane-core
Copy link
Contributor

This is a construction of the Modular Group PSL2(Z) utilizing a mutual inductive type. I will quote from the preamble of the Type declaration to contextualize the formalization presented here. This will serve as a base for future modules I will be adding to this folder.

To summarize the construction, we have E and S on the 𝓢 side, with little S
taking elements from the other type 𝓡. Then we have little R and R² in 𝓡,
taking elements from 𝓢 to construct its members; hence 𝓡 is strictly
dependent on 𝓢, and 𝓢 has the zero-level constructors, while successors for
both must be strictly alternating between types. Having a canonical S and E,
we obtain canonical representations of the words R/R² by right-composition
with the identity element. Thus we can form SR/SR² and R²S/RS evidently,
and achieve the ability to form every possible word in PSL₂ℤ generated by
the elements S and R in this type in irreducible form. Also to note, we can
interpret the action of η and θ constructors as essentially a representation
of the identity element from the left rather than the right side. The overall
methodology I pursued was to keep as few cases as possible for each branch
of pattern matching, so as to express the most efficient construction possible.

My overall intentions for this series of modules is as follows:
 1. Provide a base for research into the formalization of the Modular Group
  by purely synthetic/symbolic methods; 𝓜 can then be composed with other
  types to research specific fields of interest
 2. Studying the relationship between modular forms and Gosper's bihomographic
  algorithm originally presented in his continued fraction arithmetic paper
 3. On the basis of (2), develop a new formalization of rational and real
  arbitrary-precision arithmetic with a type formalized along the lines of
  Bertot and Niqui's work in the QArith libraries. Where the approach will
  differ here is the use of symbolic rather than analytic methods of
  computing that arithmetic, acting directly upon symbolic representations
  of matrices in 𝓜 and canonical representatives in ℚ or ℝ rather than
  translating between them and natural number or integer types.
 4. Investigate whatever connections are appropriate for the subjects pursued
  above with Univalent mathematics in general.

@martinescardo
Copy link
Owner

Thanks. I'll ask @UlrikBuchholtz to help to review this.

@lane-core
Copy link
Contributor Author

Thank you!

@martinescardo
Copy link
Owner

martinescardo commented Nov 27, 2023

Here are some requests and suggestions before @UlrikBuchholtz completes his review:

  • In order to convince Ulrik and me that you did implement the modular group, and not some random group, I think you should state and prove its universal property, namely that it is presented by generators S and T and relations S^2 = 1 and (ST)^3=1, as discussed here.

    In TypeTopology you can state this by saying that for any other group G with elements s and t satisfying the above identities there is a unique homomorphism from your group to G that maps S to s and T to t. I guess you have already developed enough material here to be able to prove this (you already have some induction principles which are close to this). I suggest that you add a new file UniversalProperty with this.

  • Please move the whole tree ModularGroup from source to Groups.

  • Please add an index file inside the directory ModularGroup. In that index file, add a brief explanation in English saying in which order the files should be read, and briefly mentioning what they do (for example, you can follow the convention of the file Quotient.index).

  • Please import ModularGroup.index from Groups.index.

  • I will have more mundane suggestions later in my own review of the code.

Thanks!

@lane-core
Copy link
Contributor Author

I will be working on this! Thanks.

@martinescardo
Copy link
Owner

martinescardo commented Nov 27, 2023

Maybe the directory ModularGroup can be renamed to just Modular, given that it will be imported as Groups.Modular if you move it to Groups.

@lane-core
Copy link
Contributor Author

Two things:

  1. Would you like me to use the Group definition of is-hom to do so (in which case I'm using the Group instance of the modular group to conduct the proofs), or may I follow the example of CoNaturals.UniversalProperty and define the type of homomorphisms directly from 𝓜 to the arbitrary Group?

  2. Some time after submitting this PR I realized that there could be a fair generalization of my mutual inductive definition of the modular group to Hecke groups, namely by using a single constructor on the R side that is labeled by an element of Fin n (where the chosen 'n' identifies a specific Hecke group). I can finish my formalization work here, but if this is something I want to take on I'd be thoughtful about how techniques I develop for the Modular Group in these series of modules can be generalized to the Hecke groups.

@martinescardo
Copy link
Owner

  1. Please use the Group definition of is-hom.
  2. There are lot of instances in TypeTopology where we first proved something, and then something more general (an example is InjectiveTypes.MathematicalStructures and InjectiveTypes.MathematicalStructuresMoreGeneral). I am in favour, in your case, of doing the same thing.

Copy link
Owner

@martinescardo martinescardo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to make official what I requested before: please state and prove the universal property before we review this in more detail. Thanks.

@lane-core
Copy link
Contributor Author

lane-core commented Jan 9, 2024

just to update you on the status, I've started work on this. so far I've defined an induction principle based on generators S and T (T being defined as SR, which reduces to T in this representation). I've used it to define a function from Group PSL2Z to an arbitrary group, and it has the requisite is-hom properties. For fun I also defined one by case matching instead of the induction function and shown functional equivalence between the two. I am now where I must prove uniqueness, and this is the point where I have to become clever because I am actively expanding my knowledge at this stage. I'll submit a force push when its ready.

@martinescardo
Copy link
Owner

I wonder if there has been any progress regarding the work of this PR.

@lane-core
Copy link
Contributor Author

Yes I will submit an update by this week

@lane-core
Copy link
Contributor Author

Wanted to give a quick update, I did a lot of refactoring of my Universal Property file, I am currently running into an issue when I assume an arbitrary hom f of a group G. I must prove that f converts our canonical S into our S from G, but try as I might to use the homomorphism property of f, I cannot split up our S such that applying the homomorphic property does not just recreate the original proof goal (after eliminating the unit that is generated from splitting S into S * E. Would you have me update the PR with the current state of the proof?

@martinescardo
Copy link
Owner

Sure, you can update the PR!

@ayberkt
Copy link
Collaborator

ayberkt commented Apr 23, 2024

Any updates on this @lane-core?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants