Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \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) *) (************************************************************************) Require Import Bool. Inductive IfProp (A B:Prop) : bool -> Prop := | Iftrue : A -> IfProp A B true | Iffalse : B -> IfProp A B false. Hint Resolve Iftrue Iffalse: bool.forall (A B : Prop) (b : bool), IfProp A B b -> b = true -> Acase diff_true_false; auto with bool. Qed.A, B:PropH:BH0:false = trueAforall (A B : Prop) (b : bool), IfProp A B b -> b = false -> Bcase diff_true_false; trivial with bool. Qed.A, B:PropH:AH0:true = falseBforall A B : Prop, IfProp A B true -> AA, B:PropH:IfProp A B trueAassumption. Qed.A, B:PropH:IfProp A B trueH0:AAforall A B : Prop, IfProp A B false -> BA, B:PropH:IfProp A B falseBassumption. Qed.A, B:PropH:IfProp A B falseH0:BBdestruct 1; auto with bool. Qed.forall (A B : Prop) (b : bool), IfProp A B b -> A \/ Bforall (A B : Prop) (b : bool), IfProp A B b -> {A} + {B}A, B:PropH:IfProp A B true{A} + {B}A, B:PropH:IfProp A B false{A} + {B}left; inversion H; auto with bool.A, B:PropH:IfProp A B true{A} + {B}right; inversion H; auto with bool. Qed.A, B:PropH:IfProp A B false{A} + {B}