Skip to content

Proper handling of monic and epic functions in id and comp module  #1734

Closed
@bvssvni

Description

@bvssvni

Currently, it is possible to prove that every function is both monic and epic, due to the axioms:

(f : a -> b) ⋀ (f . inv(f))  =>  id{b}
(f : a -> b) ⋀ id{b}  =>  (f . inv(f))
(f : a -> b) ⋀ (inv(f) . f)  =>  id{a}
(f : a -> b) ⋀ id{a}  =>  (inv(f). f)

This should be changed to:

~(f . inv(f)) ⋀ (f : a -> b) ⋀ (f . inv(f))  =>  id{b}
~((f . inv(f))) ⋀ (f : a -> b) ⋀ id{b}  =>  (f . inv(f))
~(inv(f) . f) ⋀ (f : a -> b) ⋀ (inv(f) . f)  =>  id{a}
~(inv(f). f) ⋀ (f : a -> b) ⋀ id{a}  =>  (inv(f). f)

Here:

  • ~(f . inv(f)) is the same as saying that f is epic
  • ~(inv(f) . f) is the same as saying that f is monic

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinghard

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions