(************************************************************************) (* * The Rocq Prover / The Rocq Development Team *) (* v * Copyright INRIA, CNRS and contributors *) (* <O___,, * (see version control and CREDITS file for authors & dates) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************)
(* (c) Copyright 2006-2016 Microsoft Corporation and Inria. *)
Lemma test1 : forall x y : T, P (f x y) -> P x. Proof.
move=> x y; set fxy := f x y; move=> Pfxy.
wlog H : @fxy Pfxy / P x. matchgoalwith |- (let fxy0 := f x y in P fxy0 -> P x -> P x) -> P x => byauto | _ => fail end. exact: H. Qed.
Lemma test2 : forall x y : T, P (f x y) -> P x. Proof.
move=> x y; set fxy := f x y; move=> Pfxy.
wlog H : fxy Pfxy / P x. matchgoalwith |- (forall fxy, P fxy -> P x -> P x) -> P x => byauto | _ => fail end. exact: H. Qed.
Lemma test3 : forall x y : T, P (f x y) -> P x. Proof.
move=> x y; set fxy := f x y; move=> Pfxy.
move: {1}@fxy (Pfxy) (Pfxy). matchgoalwith |- (let fxy0 := f x y in P fxy0 -> P fxy -> P x) => byauto | _ => fail end. Qed.
Lemma test4 : forall n m z: bool, n = z -> let x := n in x = m && n -> x = m && n.
move=> n m z E x H. case: true. byrewrite {1 2}E in (x) H |- *. byrewrite {1}E in x H |- *. Qed.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.