advancedresearch / prop

Propositional logic with types in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Make `FId` take type argument

bvssvni opened this issue · comments

The idea is to make FId more well behaved seen from a Category Theory perspective.

For example, not . not == idb is correct, but not . not == id is probably not.

/// `(not . not) : a -> a`.
pub fn proof<A: Prop>() -> Ty<Comp<FNot, FNot>, Pow<A, A>> {
    let x: Ty<FId, Pow<A, A>> = id_ty();
    path_semantics::ty_eq_left(eq::symmetry(eq_not_not_id())).0(x)
}

One problem is id[f -> id] == inv(f) where one does not care about the type of f.