- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种方法来通过它的名字来匹配它。像这样:
Ltac mytactic h_name :=
let h := hyp_from_name h_name in
match h with
| _ /\ _ => do_something
| _ => print_error_message
end
.
可以这样使用:
H0 : A /\ B
==================
A
Coq < mytactic H0.
谢谢。
最佳答案
我不确定我是否完全理解您的问题,但我会尝试。您可以使用 type of <term>
像这样构造:
Ltac mytactic H :=
match type of H with
| _ /\ _ =>
let H1 := fresh in
let H2 := fresh in
destruct H as [H1 H2]; try (inversion H1; inversion H2; subst)
| _ => fail "Algo salió mal, mi amigo"
end.
Example por_ejemplo x : x >= 0 /\ x <= 0 -> x = 0.
Proof.
intros H.
now mytactic H.
Qed.
关于pattern-matching - Ltac:从名称中获取hypotesis的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820480/
我想写一个带有可选变量名的策略。原始策略如下所示: Require Import Classical. Ltac save := let H := fresh in apply NNPP;
我正在做一些关于在 Coq 中形式化简单类型的 lambda 演算的练习,并且想使用 Ltac 自动化我的证明。在证明进步定理时: Theorem progress : forall t T,
我有一个包含对一些引理的调用的目标 foo在比赛的分支内。该调用使用变量 R 作为其参数之一。分行本地: | SomeConstr => fun R => .... (foo a b c R) ...
我如何调用 rewrite在 ltac 中只重写一次?我认为 coq 的文档提到了一些关于 rewrite at 的内容。但我还没有能够在实践中实际使用它,也没有例子。 这是我正在尝试做的一个例子:
是否有一种方法可以定义一个“本地”Ltac 表达式,我可以用它来证明引理但在外部不可见? Lemma Foo ... Proof. Ltac ll := ... destrict t.
在尝试创建一个循环可变长度参数列表的 Ltac 定义时,我在 Coq 8.4pl2 上遇到了以下意外行为。谁能给我解释一下吗? Ltac ltac_loop X := match X with
是否有一种方法可以定义一个“本地”Ltac 表达式,我可以用它来证明引理但在外部不可见? Lemma Foo ... Proof. Ltac ll := ... destrict t.
我正在寻找一种方法来通过它的名字来匹配它。像这样: Ltac mytactic h_name := let h := hyp_from_name h_name in match h with
我想在 coq 中制定一个 Ltac 策略,它需要 1 个或 3 个参数。我读过 ltac_No_arg在 LibTactics 模块,但如果我理解正确,我将不得不调用我的策略: Coq idtac
在 Ltac 中,依赖归纳对我来说似乎不同。并不是。 以下工作正常: Require Import Coq.Program.Equality. Goal forall (x:unit) (y:unit
我想在某些假设存在而另一个假设不存在的情况下应用规则。我如何检查是否存在这种情况? 例如: Variable X Y : Prop. Axiom A: X -> Y. Axiom B: X -> Z.
我在看QuickChick项目的时候遇到了Require Import Ltac.这句话我不知道这是做什么的以及 Ltac 在哪里模块是。我找到了一个文件 plugins/ltac/Ltac.v ,但
Ltac checkForall H := let T := type of H in match T with | forall x, ?P x => idtac | _ =
Require Import Streams. CoFixpoint map {X Y : Type} (f : X -> Y) (s : Stream X) : Stream Y := Cons
我是一名优秀的程序员,十分优秀!