Skip to content

feat(Crypto): Generalize encryption schemes over arbitrary monads#581

Open
dtumad wants to merge 3 commits into
leanprover:mainfrom
dtumad:dtumad/monad-generic-encryption-schemes
Open

feat(Crypto): Generalize encryption schemes over arbitrary monads#581
dtumad wants to merge 3 commits into
leanprover:mainfrom
dtumad:dtumad/monad-generic-encryption-schemes

Conversation

@dtumad
Copy link
Copy Markdown

@dtumad dtumad commented May 20, 2026

This PR modifies the definition of encScheme to allow the computations to happen in any monad m given a MonadLiftT m PMF instance (and further a LawfulMonadLiftT instance for some proofs.

Also adds a new HasUniformSelectFinset m typeclass asserting the m can model uniform selection from finite sets, which is needed for the proof of Shanon's theorem in particular.

@SamuelSchlesinger
Copy link
Copy Markdown
Contributor

Thanks for the PR, though I'm not sure I understand the goal here yet: Are you planning to add a new variant of a perfectly secret encryption scheme? Did you plan to extract these for execution? Or did you plan to use this for computationally secure encryption schemes?

I believe, following Katz-Lindell, the latter would be best handled by a new definition altogether. It would be nice if the PR description contained a justification for the change along with a description.

Copy link
Copy Markdown
Contributor

@SamuelSchlesinger SamuelSchlesinger left a comment

Choose a reason for hiding this comment

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

Didn't do a full review, curious to hear your response to my question before I do so.

/-- The monad `m` has a way to model uniform selection over non-empty finsets. -/
class HasUniformSelectFintype (m : Type u → Type*) [MonadLiftT m PMF] where
uniformSelectFintype (α : Type u) [Fintype α] [Nonempty α] : m α
liftM_uniformSelectFinset (α : Type u) [Fintype α] [Nonempty α] :
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copy-paste bug, meant Fintype I figure.

uniformSelectFinset := PMF.uniformOfFinset
liftM_uniformSelectFinset _ _ := rfl

/-- The monad `m` has a way to model uniform selection over non-empty finsets. -/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fintype*

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.

2 participants