Alphabet

and:[form × form] ⟶ form
or:[form × form] ⟶ form
not:[form] ⟶ form
forall:[form → form] ⟶ form
exists:[form → form] ⟶ form

Variables

P:form
Q:form → form

Rules

and(P, forallx:form.Q · x))forallx:form.and(P, Q · x))
or(P, forallx:form.Q · x))forallx:form.or(P, Q · x))
and(forallx:form.Q · x), P)forallx:form.and(Q · x, P))
or(forallx:form.Q · x), P)forallx:form.or(Q · x, P))
not(forallx:form.Q · x))existsx:form.not(Q · x))
and(P, existsx:form.Q · x))existsx:form.and(P, Q · x))
or(P, existsx:form.Q · x))existsx:form.or(P, Q · x))
and(existsx:form.Q · x), P)existsx:form.and(Q · x, P))
or(existsx:form.Q · x), P)existsx:form.or(Q · x, P))
not(existsx:form.Q · x))forallx:form.not(Q · x))