算法1:IMPL FREE(φ)
输入:φ:逻辑公式
输出:φ':φ'中的所有含义(Ô⇒)被删除,φ'≡φ
switch φ do
case φ is a literal: do return φ;
case φ is ¬φ1: do return ¬IMPL FREE(φ1);
case φ is φ1 ∧ φ2: do return IMPL FREE(φ1) ∧ IMPL FREE(φ2);
case φ is φ1 ∨ φ2: do return IMPL FREE(φ1) ∨ IMPL FREE(φ2);
case φ is φ1 Ô⇒ φ2: do return IMPL FREE(¬φ1 ∨ φ2);
otherwise do assert(0);
算法2:NNF(φ)
输入:φ:无意义的逻辑公式(=>)
输出:φ':只有φ'中的命题原子被否定,φ'≡φ
switch φ do
case φ is a literal: do return φ;
case φ is ¬¬φ1: do return NNF(φ1);
case φ is φ1 ∧ φ2: do return NNF(φ1) ∧ NNF(φ2);
case φ is φ1 ∨ φ2: do return NNF(φ1) ∨ NNF(φ2);
case φ is ¬(φ1 ∧ φ2): do return NNF(¬φ1 ∨ ¬φ2);
case φ is ¬(φ1 ∨ φ2): do return NNF(¬φ1 ∧ ¬φ2);
otherwise do assert(0);
如何在C中实现这些? 我一直努力但无法编码 请帮忙。