coq-tactic

    1热度

    1回答

    假设我有以下设置: Inductive exp: Set := | CE: nat -> exp. Inductive adt: exp -> Prop := | CA: forall e, adt e. Coercion nat_to_exp := CE. Ltac my_tactic := match goal with | [ |- adt (CE ?N) ] => app

    1热度

    2回答

    在问题Is there a minimal complete set of tactics in Coq?中,回答提到exact就足以证明所有目标。有人可以解释和举例吗?例如,如果A,B作为Prop的目标A \/ B -> B \/ A如何仅由一堆exact证明?如果您还有其他更好的例子,请不要犹豫,以及回答。重点是对这个问题给出一些解释并给出一个不平凡的例子。

    1热度

    1回答

    我无法证明使用coq的策略的简单逻辑max a b <= a+b。我应该如何解决它?以下是我到现在为止的代码。 s_le_n已被证明,但为简单起见,此处未提及。 Theorem s_le_n: forall (a b: nat), a <= b -> S a <= S b. Proof. Admitted. Theorem max_sum: forall (a b: nat), max a

    -1热度

    2回答

    我有一个string b和string a上比较,如果有平等的string c,否则有string x。我知道的假设fun x <= fun c。我如何证明以下陈述? fun是一些函数,它发生在string并返回nat。 fun (if a == b then c else x) <= S (fun c) 的逻辑似乎是显而易见的,但我无法将拆分COQ的if语句。任何帮助,将不胜感激。 谢谢!

    1热度

    1回答

    我需要在绑定器下泛化表达式。例如,我有我的目标,两个表达式: (fun a b => g a b c) 和 (fun a b => f (g a b c)) 我想概括g _ _ c部分: 一种方法做的是第一重写它们分为: (fun a b => (fun x y => g x y c) a b) 第二入: (fun a b => f ( (fun x y => g

    3热度

    1回答

    我有一个有“取消”按钮的模式视图(该按钮取消了模式)。 在模态中,我推出了一个小UIPopover。 我想要实现的是: 当UIPopover是可见的,如果USET触摸“取消”,会做两种: 皮酥料饼(现在发生的事情,因为这是在点击弹出外) 隐藏模式 - 就好像用户感动“取消”不弹出 有没有办法做到这一点? UIPopoverControllerDelegate不提供任何帮助(或我没有看到它:)) 谢

    0热度

    1回答

    我必须证明: i < Datatypes.length (l0 ++ f :: nil) -> H 我有一个单独的假说i < Datatypes.length l0和i = Datatypes.length l0。

    3热度

    2回答

    我试图写一个策略,返回一个值,并在这样做的过程中,它需要检查是否是一个evar。 不幸的是,我不能使用is_evar,因为那时策略不被视为返回一个值(而是另一种策略)。下面是一个例子。 有什么建议吗? Ltac reify_wrt values ls := match ls with | nil => constr:(@nil nat) | ?a :: ?ls' =>

    2热度

    2回答

    我想证明在术语上应用空替换等于给定术语。 下面是代码: Require Import Coq.Strings.String. Require Import Coq.Lists.List. Require Import Coq.Arith.EqNat. Require Import Recdef. Require Import Omega. Import ListNotations. S

    2热度

    1回答

    在Coq我有两个假设H和H0,这相互矛盾。问题是,他们只是为了一些专业而互相矛盾,在这个证明的背景下,情况并不那么专业化。 这时我的证明背景是这样的: color : Vertex -> bool v : V_set a : A_set x0, x1 : Vertex H : v x0 -> v x1 -> a (A_ends x0 x1) \/ a (A_ends x1 x0) -> c