证明布尔含义的策略

时间:2018-07-11 12:46:49

标签: coq coq-tactic

是否有一种类似于def set_color_from_rgb_hex(self, rgb_hex): self._color = hex_handler.get_color(rgb_hex) 的策略来证明布尔含义,例如

a1, a2, a3 = 1, 2, 3
print(a1,a2, a3)

此策略会将intros拉入上下文,并要求证明f : nat -> bool g : nat -> bool Lemma f_implies_g : forall n : nat, eq_true(implb (f n) (g n)).

1 个答案:

答案 0 :(得分:2)

在这种情况下,我建议使用SSReflect。因为它已经有了您需要的机械。它不使用eq_true来将bool嵌入Prop中,而是使用is_true,这是另一种选择。

From Coq Require Import ssreflect ssrbool.
Variables f g : nat -> bool.
Lemma f_implies_g n : (f n) ==> (g n).
Proof.
apply/implyP => Hfn.
Abort.

上面的代码段可以满足您的要求,将f ng n隐式强制为Prop。执行完代码段后,您会看到此

  n : nat
  Hfn : f n
  ============================
  g n

但是Set Printing Coercions.显示它确实是

  n : nat
  Hfn : is_true (f n)
  ============================
  is_true (g n)

您拥有的。