pub fn right<A: Prop, B: Prop>(q_ab: Q<A, B>) -> Q<B, B>
Expand description
(a ~~ b) => (b ~~ b)
.
Examples found in repository?
examples/ps_uniq_q.rs (line 41)
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
pub fn proof<A: Prop, B: Prop, C: Prop>(
f: impl UniqQ<B, A>,
g: impl UniqQ<B, C>,
sesh_ac: Not<Q<A, C>>
) -> And<Not<Q<B, A>>, Not<Q<B, C>>> {
let sesh_ac2 = sesh_ac.clone();
(
Rc::new(move |q_ba| {
let q_ab = symmetry(q_ba);
let sesh_bc = nq_left(q_ab.clone(), sesh_ac.clone());
let q_bb = right(q_ab);
let q_bc = g.uniq_q(q_bb);
sesh_bc(q_bc)
}),
Rc::new(move |q_bc| {
let q_cb = symmetry(q_bc);
let sesh_ca = nq_symmetry(sesh_ac2.clone());
let sesh_ba = nq_left(q_cb.clone(), sesh_ca.clone());
let q_bb = right(q_cb);
let q_ba = f.uniq_q(q_bb);
sesh_ba(q_ba)
}),
)
}