module Part2.Leibniz let lbz_eq (#a:Type) (x y:a) = p:(a -> Type) -> p x -> p y // lbz_eq is an equivalence relation let lbz_eq_refl #a (x:a) : lbz_eq x x = admit() let lbz_eq_trans #a (x y z:a) (pf1:lbz_eq x y) (pf2:lbz_eq y z) : lbz_eq x z = admit() let lbz_eq_sym #a (x y:a) (pf:lbz_eq x y) : lbz_eq y x = admit() // equals and lbz_eq are isomorphic let equals_lbz_eq (#a:Type) (x y:a) (pf:equals x y) : lbz_eq x y = admit() let lbz_eq_equals (#a:Type) (x y:a) (pf:lbz_eq x y) : equals x y = admit()